NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #1372 most downloaded on pub.dev
Core package for Flutter chat apps, complementing flutter_chat_ui. Contains models and core functionality. #chat #ui
Last release 26 days ago
12 Sep 2026
Ships unpredictably
gaps range from 8 days to 9 months
Nearly every release is documented
notes for 31 of 31 stable releases
Nothing withdrawn
no release was ever pulled
2 years old
31 releases · first in 2024
One column per month.
REFACTOR: replace flutter material imports with material_ui and update package dependencies (#893).
…operations except update . This is not a breaking change, but if you'd like to use it, you can update your controller like so:
This release introduces two-sided pagination. You can now load newer messages using the new onStartReached callback, while onEndReached continues to work for older messages. For pagination to work correctly, messages should be inserted instantly, without animation.
To allow this and offer more granular control, a new optional animated parameter has been added to all controller operations except update. This is not a breaking change, but if you'd like to use it, you can update your controller like so:
insertMessage(Message message, {int? index}) // ❌
insertMessage(Message message, {int? index, bool animated = true}) // ✅
ChatOperation.insert(..., animated: animated) // add animated to insert operations
insertAllMessages(List<Message> messages, {int? index}) // ❌
insertAllMessages(List<Message> messages, {int? index, bool animated = true}) // ✅
ChatOperation.insertAll(..., animated: animated) // add animated to insertAll operations
removeMessage(Message message) // ❌
removeMessage(Message message, {bool animated = true}) // ✅
ChatOperation.remove(..., animated: animated) // add animated to remove operations
setMessages(List<Message> messages) // ❌
setMessages(List<Message> messages, {bool animated = true}) // ✅
ChatOperation.set(..., animated: animated) // add animated to set operationsAs an optional improvement, you can use this parameter to disable animations when clearing the chat, which is now the default behaviour in the example apps.
ChatOperation.set(messages, animated: messages.isEmpty ? false : animated) // inside the controller⚠️ There is a small potential breaking change: LoadMoreNotifier was updated for two-sided loading. If you used a custom LoadMore widget and used LoadMoreNotifier to measure its height, that logic has been removed as it was not used. Additionally, the internal property _isLoading is now _isLoadingOlder, and _isLoadingNewer has been added.
FEAT: allow for top widgets within the bubble ( #814 ).
- FIX: update LICENSE.
FEAT : link preview package ( #790 ).
- FIX: update dependencies.
Use utf8 codec to parse chinese symbols
Update dependencies. Requires Dart >= 2.15.1.
FIX: add size attribute for ImageMessage (#813).
onMessageTap and onMessageLongPress added BuildContext as a first parameter, so if you had something like this:
⚠️ Breaking Changes ⚠️
onMessageTap and onMessageLongPress added BuildContext as a first parameter, so if you had something like this:
void _handleMessageLongPress(
Message message, {
int? index,
LongPressStartDetails? details,
})replace it with this:
void _handleMessageLongPress(
BuildContext context,
Message message, {
int? index,
LongPressStartDetails? details,
})Updated dependencies (requires Dart >=2.14.0)
Fixed Android example. Thanks @rvndsngwn for reporting!
FIX : introduce status field back ( #809 ).
Update to Flutter 2.5
Rename REGEX_EMAIL to regexEmail and REGEX_LINK to regexLink
All message builders will also provide isSentByMe and groupStatus now. Just pass
⚠️ Breaking Changes ⚠️
All message builders will also provide isSentByMe and groupStatus now. Just pass
{
required bool isSentByMe,
MessageGroupStatus? groupStatus,
}after the index param. It is fine not to use these fields if not needed.
Renamed LinkPreview → LinkPreviewData
⚠️ Breaking Changes ⚠️
Renamed LinkPreview → LinkPreviewData
LinkPreview.imageUrl → LinkPreviewData.image.url
Both LinkPreviewData.image.width and LinkPreviewData.image.height are now required
FIX: add emptyChatListWidget (#771).
FIX: update operation not persisted in the list (#778).
- FIX: add audio message type.
- FIX: add video message type.
FEAT: rename chat controller methods.
FIX: improve documentation and add example.
Fix paddings for an empty preview data
Limit number of images parsed
Fix regex
- FIX: document public APIs.
First stable release, keep the same version as flutter_chat_ui
Updated the Message model to rename parentId to replyToMessageId
⚠️ Breaking changes ⚠️
Message model to rename parentId to replyToMessageIdcreatedAt field is now optional in the message modelsending field has been removed from the message model; instead, you can set sending: true in the metadata of the Message model to achieve the same functionality.isOnlyEmoji property has been removed from the text message model; to indicate that a message contains only emojis, use isOnlyEmoji: true in the metadata of the text message.firstName and lastName fields in the User model have been consolidated into a single name field for improved simplicity.Other changes
MessageID and UserID typedefs to provide clearer context, while maintaining their underlying type as StringsTextStreamMessage type to support text streamingtextStreamMessageBuilder to the Builders class to support text streaming UI widgetRename inputBuilder to composerBuilder
⚠️ Breaking changes ⚠️
inputBuilder to composerBuilderReplace status field with a computed getter that determines message state based on lifecycle timestamps (createdAt, deletedAt, sending, failedAt, sent
⚠️ Breaking changes ⚠️
status field with a computed getter that determines message state based on lifecycle timestamps (createdAt, deletedAt, sending, failedAt, sentAt, deliveredAt, seenAt, updatedAt). This enables granular message history tracking and status transitions, matching the behavior of popular chat applications.overlay to hasOverlay in ImageMessageOther changes
intl package version for better compatibility with other Flutter packagesAdded system message for displaying system notifications and events in chat
Add UserCache class to store resolved users for synchronous access, preventing flickering in recycled widgets by caching user data with LRU eviction s
UserCache class to store resolved users for synchronous access, preventing flickering in recycled widgets by caching user data with LRU eviction strategyScrollToMessageMixin to enable programmatic scrolling in chat list:
scrollToMessage(messageId): Scrolls to a specific message by IDscrollToIndex(index): Scrolls to a message at a specific indexChatController instanceRequire Flutter 3.29 and Dart 3.7
Changed signature of chatMessageBuilder to include isRemoved and groupStatus parameters.
⚠️ Breaking changes ⚠️
chatMessageBuilder to include isRemoved and groupStatus parameters.imageUrl to imageSource for the User model. Change is necessary to show that not only remote URLs are supported but also local assets.author (type User) is replaced with authorId (type String) for simpler user management
⚠️ Breaking changes ⚠️
🔄 Core Changes:
author (type User) is replaced with authorId (type String) for simpler user managementDateTime properties now use milliseconds instead of microseconds for JSON serialization🎨 Theme Simplification: Theme has been streamlined to 3 key parameters:
colors - Uses Material 3 semantic names (e.g. primary, onPrimary, secondary) making it easy to apply color schemestypography - Follows Flutter's TextTheme semantic naming conventionsshape - Controls border radius of all messages (rounded vs square messages)✨ Enhanced Customization:
builders parameterloadMoreBuilder: (context) => LoadMore(color: Colors.red) overrides theme colorsAdded isOnlyEmoji parameter to TextMessage.
isOnlyEmoji parameter to TextMessage.withValues to withOpacity to resolve a compatibility issue.Added customMessageBuilder for building custom messages
customMessageBuilder for building custom messagesoverlay parameter to ImageMessageImageMessageTheme (replacing imagePlaceholderColor)InputTheme (adding textFieldColor)ScrollToBottomThemeTextMessageThemeUploadProgressMixin for handling upload progress trackingBump version to support flutter_chat_ui v2 alpha release
- Initial release
367
likes
150
points
71.7k
downloads
API reference
flyer.chat
Customizable link and URL preview extracted from the provided text with the ability to render from the cache. Ideal for chat applications.
Homepage
Repository (GitHub)
View/report issues
Contributing
MIT ( license )
flutter , flutter_chat_core , html , http , material_ui , punycode , url_launcher
Packages that depend on flutter_link_previewer
367
likes
150
points
71.7k
downloads
API reference
flyer.chat
Customizable link and URL preview extracted from the provided text with the ability to render from the cache. Ideal for chat applications.
Homepage
Repository (GitHub)
View/report issues
Contributing
MIT ( license )
flutter , flutter_chat_core , html , http , material_ui , punycode , url_launcher
Packages that depend on flutter_link_previewer
Back
Your coding agent can read these notes before it upgrades. Set up the MCP server →