NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #1159 most downloaded on pub.dev
Free and open-source chat SDK. Build fast, real-time apps and generative AI agents with a high-performance, customizable, cross-platform UI.
Last release 23 days ago
12 Sep 2026
Ships unpredictably
gaps range from 8 days to 9 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
6 years old
125 releases · first in 2020
Add scroller controller as a parameter. Thanks @Faaatman for the PR!
avatarBuilder and nameBuilder methods to resolve user updates and render correct avatars and names. Thanks @dariuspo and @felixgabler for the PR!Add markdown support. Thanks @felixgabler for the PR!
hidden send button visibility mode. Thanks @fernandobatels for the PR!previewTapOptions that allow to configure to open link preview when tapped on preview's image or title. Thanks @felixgabler for the PR!dateHeaderBuilder. Thanks @arsamme for the PR!onMessageVisibilityChanged handler. Thanks @felixgabler for the PR!receivedMessageBodyBoldTextStyle, receivedMessageBodyCodeTextStyle, receivedMessageBodyLinkTextStyle and sentMessageBodyBoldTextStyle, sentMessageBodyCodeTextStyle, sentMessageBodyLinkTextStyle to the theme. Thanks @felixgabler for the PR!sendButtonMargin to the theme. Thanks @damian-kaczmarek for the PR!One column per quarter.
Fix dark theme. Thanks @garv-shah for the PR!
onMessageDoubleTap. Thanks @leeyisoft for the PR!BREAKING CHANGE: Rename inputPadding theme key to inputMargin (outer insets) and add inputPadding (inner insets, previously were hardcoded)
inputPadding theme key to inputMargin (outer insets) and add inputPadding (inner insets, previously were hardcoded)BuildContext as a first parameter for onMessageLongPress, onMessageStatusLongPress, onMessageStatusTap, onMessageTap. Thanks @leeyisoft for the PR!inputContainerDecoration to the theme- Remove image blur - Update dependencies
Add status icon tap and long press. Thanks @ikurek for the PR!
onAvatarTap- Increase tests coverage
Remove Avenir as a default font family
Avenir as a default font familyemojiEnlargementBehavior and hideBackgroundOnEmojiMessages. Thanks @halildurmus for the PR!onBackgroundTap. Thanks @diegonuja for the PR!ScrollPhysics to the scroll view. Thanks @trixeenya for the PR!dateDividerMargin in theme. Thanks @ikurek for the PR!statusIconPadding in theme. Thanks @ikurek for the PR!Add dateHeaderThreshold and groupMessagesThreshold (see the documentation comments)
dateHeaderThreshold and groupMessagesThreshold (see the documentation comments)Add bubbleBuilder to allow the chat bubble customization. See documentation.
bubbleBuilder to allow the chat bubble customization. See documentation.Add fileMessageBuilder, imageMessageBuilder and textMessageBuilder for more customization options. Thanks @Androrier for the PR!
fileMessageBuilder, imageMessageBuilder and textMessageBuilder for more customization options. Thanks @Androrier for the PR!- Fix release on pub.dev
pub.dev- Update to Flutter 2.5
- Update dependencies
Add onTextFieldTap. Thanks @halildurmus for the PR!
onTextFieldTap. Thanks @halildurmus for the PR!messageInsetsHorizontal and messageInsetsVertical to the theme to customize message bubble's paddingsFix memory leak. Thanks @m-j-g for reporting!
customBottomWidget useful to remove the input and create a channel viewinputPadding, inputTextCursorColor and inputTextDecoration to the theme for the additional input customizationRename buildCustomMessage to customMessageBuilder
buildCustomMessage to customMessageBuilderChat is now correctly rendered in not full screen mode. Removed SafeArea from the lib itself, wrap Chat component if needed. Thanks @m-j-g for reporti
SafeArea from the lib itself, wrap Chat component if needed. Thanks @m-j-g for reporting!previewData. Thanks @m-j-g for reporting!userAvatarImageBackgroundColor. Thanks @pierrebarbaroux for the PR!sendButtonVisibilityMode. Thanks @halildurmus for the PR!Fix avatar color when using an image. Thanks @m-j-g for reporting!
Add sendingIcon widget to the theme. Thanks @abhisunkewar for the PR!
sendingIcon widget to the theme. Thanks @abhisunkewar for the PR!Update dependencies and example
- Update dependencies
Added emptyState that allows you to customize what the user sees when there are no messages. Thanks @AndreHaueisen for the PR!
emptyState that allows you to customize what the user sees when there are no messages. Thanks @AndreHaueisen for the PR!Added onTextChanged callback to detect when user is typing. Thanks @AndreHaueisen for the PR!
onTextChanged callback to detect when user is typing. Thanks @AndreHaueisen for the PR!dateFormat and timeFormat allowing user to customize the date and time visible between messages. Thanks @AndreHaueisen for the PR!customDateHeaderText allowing to pass and arbitrary string visible between messages. See the documentation in the code for more info.Remove automatic scroll to bottom for incoming messages
[WEB] Add shortcuts to send messages on enter press
enter pressThe text inside text messages is now selectable. Thanks @AndreHaueisen for the PR!
Export ChatList class
Export ChatList class
BREAKING CHANGE: [FileMessage] fileName is renamed to name
This release marks a major chat architecture overhaul based on a community feedback. In the future we don't expect such big changes in one release and will try to do backwards compatible code as much as possible.
Breaking changes:
fileName is renamed to nameimageName is renamed to nameauthorId is replaced with author to support avatars and names inside the chattimestamp is renamed to createdAt. All timestamps are in ms now.read is renamed to seenavatarUrl is renamed to imageUrlcustom and unsupported message types. First one is used to build any message you want, second one is to support backwards compatibilityNew features:
showUserAvatars and showUserNamesonEndReached (use this function to load more items, should be async to correctly show loading indicator), onEndReachedThreshold (value between 0 and 1, where 1 indicates that loading should start when all previous items are visible and 0.5 indicates half of items are visible, defaults to 0.75), isLastPage (if true loading indicator will not be shown)buildCustomMessage to build anything you want. Can be improved to modify bubble, PRs are open :)Theme migration guide:
attachmentButtonIcon, deliveredIcon, documentIcon, errorIcon, seenIcon, sendButtonIcon type change String -> Widgetbody1 replaced with emptyChatPlaceholderTextStyle, inputTextStyle, receivedMessageBodyTextStyle, sentMessageBodyTextStylebody2 replaced with receivedMessageLinkDescriptionTextStyle, sentMessageLinkDescriptionTextStylesubtitle1 replaced with receivedMessageLinkTitleTextStyle, sentMessageLinkTitleTextStylesubtitle2 and subtitle2Color are replaced with dateDividerTextStylecaption and captionColor are replaced with receivedMessageCaptionTextStyle, sentMessageCaptionTextStyleprimaryTextColor replaced with receivedMessageDocumentIconColor, sentMessageDocumentIconColorsecondaryTextColor replaced with receivedMessageBodyTextStyleDisable link preview if onPreviewDataFetched is not specified
onPreviewDataFetched is not specified- Update dependencies
- Update dependencies
Additional URL preview bug fixes. Thanks @jlubeck for reporting!
Fix various URL preview bugs (see https://pub.dev/packages/flutter_link_previewer/changelog)
BREAKING CHANGE: onFilePressed is replaced with onMessageTap to support tap event for different message types. See usage example.
onFilePressed is replaced with onMessageTap to support tap event for different message types. See usage example.onMessageLongPress callback, similar to the onMessageTap.disableImageGallery parameter to optionally disable the image gallery on the image tap.subtitle2Color to the theme, which is used to color date dividers in the chat. Thanks @sarbogast for the PR!Hide the attachment button if onAttachmentPressed is not passed
onAttachmentPressed is not passed- Public release
- Update example
- Update types
- Update dependencies
- Add documentation comments
Replace universal IO with conditional import
- Update dependencies
- Use universal IO
- Migrate to Flutter 2
- Add gallery
- Update types - Add empty chat placeholder - Fix images
Add attchment uploading handling
- Updated to use partial
- Fixed missing null check
- Dependency update
- Fixed missing null check
- Connected with link preview
- Remove cached image
- Add time and statuses
- Update LICENSE
- Update types
- Update types
Fix image and file name overflow
- Add file support
Your coding agent can read these notes before it upgrades. Set up the MCP server →