PackageTrack
Sign in Get early access

flutter_chat_ui

Free and open-source chat SDK. Build fast, real-time apps and generative AI agents with a high-performance, customizable, cross-platform UI.

2.11.1 101K downloads/mo #1132 most downloaded on pub.dev flyerhq/flutter_chat_ui

What this package is like to depend on

Last release 8 months ago

11 Dec 2025

Release timing varies

gaps range from 8 days to 3 months

Nearly every release is documented

notes for 113 of 113 stable releases

Nothing withdrawn

no release was ever pulled

6 years old

124 releases · first in 2020

5 releases in the last 12 months

see the full history below

Release timeline

124 releases · Aug 2020 to Dec 2025
2021 2022 2023 2024 2025 2026
Release Pre-release

Releases

latest 60 of 124
  1. 2.11.1 11 Dec 2025
    Release notes
    • FIX: change definition of OnMessageSecondaryTapCallback. (50ba67e0)
    Open source →
  2. 2.11.0 06 Dec 2025
    Release notes
    • FIX: handle null checks for message gesture callbacks in ChatMessage widget (#861). (0a7fe3dd)
    • FIX: add required modifier to named params of onMessageTap, onMessageDoubleTap, onMessageLongPress. (8509a1b2)
    • FEAT: sendOnEnter param for composer. (98ece404)
    • FEAT: add onMessageSecondaryTap callback. (fcca65a5)
    • FEAT: headerWidget should ignore horizontal padding. (14ca1b2d)
    Open source →
    Release notes
    • FIX: handle null checks for message gesture callbacks in ChatMessage widget (#861). (0a7fe3dd)
    • FIX: add required modifier to named params of onMessageTap, onMessageDoubleTap, onMessageLongPress. (8509a1b2)
    • FEAT: sendOnEnter param for composer. (98ece404)
    • FEAT: add onMessageSecondaryTap callback. (fcca65a5)
    • FEAT: headerWidget should ignore horizontal padding. (14ca1b2d)
    Open source →
  3. 2.10.0 06 Dec 2025
    Release notes

    Update dependencies to latest, require min dart 3.8 and flutter 3.32. Migrate monorepo to pub workspaces.

    2.9.2

    • FIX: chat messages rebuilt after sending new message. (a17f3162)

    2.9.1

    • FIX: add dart.library.js_interop case to cross_cache to support --wasm (#847). (3650bc75)

    • FIX: add content insertion configuration to Composer widget (#852). (6b5f6afc)

    • FIX: add support for linksDecoration, sentLinksDecorationColor, receivedLinksDecorationColor. (b5b9e906)

    • FIX: link color (#858). (bb9f814d)

    Open source →
    Release notes
    • FEAT: update deps - requires min dart 3.8 and flutter 3.32 (#871). (588b34bd)
    Open source →
  4. 2.9.2 06 Dec 2025
    Release notes
    • FIX: chat messages rebuilt after sending new message. (a17f3162)
    Open source →
  5. 2.9.1 09 Oct 2025
    Release notes
    • FIX: add content insertion configuration to Composer widget (#852). (6b5f6afc)
    Open source →
  6. 2.9.0 26 Jul 2025
    Release notes

    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 operations

    As 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.

    2.8.1

    • FIX: composer inputClearMode and fix custom editing controller. (b4872190)
    Open source →
    Release notes

    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 operations
    

    As 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.

    Open source →
  7. 2.8.1 19 Jul 2025
    Release notes
    • FIX: composer inputClearMode and fix custom editing controller. (b4872190)
    Open source →
  8. 2.8.0 19 Jul 2025
    Release notes
    • FEAT: allow for top widgets within the bubble (#814). (e267c27c)
    Open source →
    Release notes
    Open source →
  9. 2.7.0 12 Jul 2025
    Release notes

    2.6.2

    • FIX: new loadingBuilder for stream message. (38d539ac)

    2.6.1

    • FIX: add sendButtonDisabled and sendButtonHidden #828. (d476dd45)
    Open source →
    Release notes
    Open source →
  10. 2.6.2 07 Jul 2025
    Release notes
    • FIX: new loadingBuilder for stream message. (38d539ac)
    Open source →
    Release notes
    • Use utf8 codec to parse chinese symbols

    • Update dependencies. Requires Dart >= 2.15.1.

    Open source →
  11. 2.6.1 29 Jun 2025
    Release notes
    • FIX: add sendButtonDisabled and sendButtonHidden #828. (d476dd45)
    Open source →
    Release notes
    • Update dependencies
    Open source →
  12. 2.6.0 27 Jun 2025
    Release notes

    ⚠️ 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,
    })

    • FIX: scrollToIndex does not work when starting with an empty list #793. (1948c1f5)
    • FEAT: add sendButtonVisibilityMode and allowEmptyMessage to the composer. (7a496607)
    • FEAT: add method OnMessageDoubleTapCallback; add param BuildContext context for OnMessageTapCallback and OnMessageLongPressCallback (#817). (6fe68886)

    2.5.3

    2.5.2

    • Update a dependency to the latest release.

    2.5.1

    • FIX: re-enable composer blur. (791f7308)
    Open source →
    Release notes
    • FIX: scrollToIndex does not work when starting with an empty list #793. (1948c1f5)
    • FEAT: add sendButtonVisibilityMode and allowEmptyMessage to the composer. (7a496607)
    • FEAT: add method OnMessageDoubleTapCallback; add param BuildContext context for OnMessageTapCallback and OnMessageLongPressCallback (#817). (6fe68886)
    Open source →
    Release notes
    • Updated dependencies (requires Dart >=2.14.0)

    • Fixed Android example. Thanks @rvndsngwn for reporting!

    Open source →
  13. 2.5.3 27 Jun 2025
    Release notes
    Open source →
  14. 2.5.2 09 Jun 2025
    Release notes
    • Update a dependency to the latest release.
    Open source →
    Release notes

    Additionally, revert json_annotation upgrade

    Open source →
  15. 2.5.1 08 Jun 2025
    Release notes
    • FIX: re-enable composer blur. (791f7308)
    Open source →
    Release notes

    Revert meta upgrade, because pub.dev is analyzing code with an old Flutter version

    Open source →
  16. 2.5.0 08 Jun 2025
    Release notes
    Open source →
    Release notes
    Open source →
    Release notes
    • Update to Flutter 2.5

    • Rename REGEX_EMAIL to regexEmail and REGEX_LINK to regexLink

    Open source →
  17. 2.4.0 08 Jun 2025
    Release notes

    ⚠️ 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.


    Open source →
    Release notes
    • FEAT: expose isSentByMe and groupStatus in all messages builders (#805). (263d145b)
    Open source →
    Release notes
    • Update dependencies
    Open source →
  18. 2.3.1 26 May 2025
    Release notes

    ⚠️ Breaking Changes ⚠️

    Even though this is a patch release, it depends on flutter_chat_core, which introduced a small breaking change. I realized I didn’t bump flutter_chat_ui to a new minor version before publishing - sorry about that!

    Fix is simple: if you have a custom ChatController, the set operation now requires a messages array.

    1. If you were using named parameters like set(messages: messages), change it to: set(messages)
    2. If you previously used set() with no arguments, replace it with: set([])

    • FIX: add username widget. (892ee622)
    • FIX: expose user_cache and make it a changenotifier. (baa7eee6)
    • FIX: expose headers for avatar and image message. (0261ce1c)
    • FIX: gemini example with option to stop a stream. (fa558e46)
    • FEAT: make messages required for set operation. (9e123732)
    Open source →
    Release notes
    • FIX: add username widget. (892ee622)
    • FIX: expose user_cache and make it a changenotifier. (baa7eee6)
    • FIX: expose headers for avatar and image message. (0261ce1c)
    • FIX: gemini example with option to stop a stream. (fa558e46)
    Open source →
  19. 2.3.0 22 May 2025
    Release notes

    2.3.0

    ⚠️ Breaking Changes ⚠️

    • Renamed LinkPreviewLinkPreviewData

    • LinkPreview.imageUrlLinkPreviewData.image.url

    • Both LinkPreviewData.image.width and LinkPreviewData.image.height are now required

    • FEAT: link preview v2 (#784). (b65060e1)

    2.2.4

    • FIX: add physics param to the ChatAnimatedList(Reversed). (ede3a170)
    • FIX: emptyChatList not clickable (#787). (88937baa)

    2.2.3

    2.2.2

    2.2.1

    • FIX: list rebuilding when keyboard opens/closes. (48e28e7e)
    Open source →
    Release notes
    Open source →
    Release notes
    • Improve REGEX

    • Add custom imageBuilder

    Open source →
  20. 2.2.4 22 May 2025
    Release notes
    • FIX: add physics param to the ChatAnimatedList(Reversed). (ede3a170)
    • FIX: emptyChatList not clickable (#787). (88937baa)
    Open source →
  21. 2.2.3 19 May 2025
    Release notes
    Open source →
    Release notes
    • Update dependencies
    Open source →
  22. 2.2.2 19 May 2025
    Release notes
    Open source →
    Release notes
    • Fix completer that never completes and add corsProxy parameter. Thanks @wer-mathurin for the PR!

    • Export getPreviewData to allow you to create your own implementation of a link preview.

    Open source →
  23. 2.2.1 19 May 2025
    Release notes
    • FIX: list rebuilding when keyboard opens/closes. (48e28e7e)
    Open source →
    Release notes
    • Update dependencies
    Open source →
  24. 2.2.0 17 May 2025
    Release notes

    ⚠️ Breaking Changes ⚠️

    • ChatAnimatedList Redesign:
      • Significantly overhauled for robust handling of asynchronous controller updates.
      • The update operation (ChatOperation.update) now requires the index of the message to be updated.
    • CRITICAL: When implementing custom ChatControllers, you MUST now fetch the most up-to-date message instance from your data source before passing it to remove or update operations. The internal list now relies on the exact object reference. Failing to do so will lead to errors or unexpected behavior. (See InMemoryChatController for an example of fetching the actual message before emitting ChatOperation.remove or ChatOperation.update).

    ✨ Key Enhancements & Fixes ✨

    • Asynchronous Operations: ChatAnimatedList now uses an internal operation queue to serialize updates, preventing race conditions and resolving prior StreamOperation issues.
    • List Factorization: Common logic between normal and reversed ChatAnimatedList instances has been factorized, improving maintainability.
    • Bulk Insertions: Added insertAllMessages to ChatController and ChatAnimatedList for efficient bulk message additions with animations.
    • Diffing & Stability: ChatController's setMessages now uses an improved DiffUtil (with move support), fixing "out of bounds" errors during complex list updates.
    • Data Consistency: The controller now fetches the latest message version before updates or deletions to ensure operations use current data.
    • Bug Fixes:
      • Corrected message insertion position in reversed lists (#754, #755).
      • Ensured message update operations are correctly persisted (#778).
    • Testing: Introduced integration tests for ChatAnimatedList to validate list operations and item positioning.

    • FIX: update operation not persisted in the list (#778). (37472015)
    • FEAT: Fix StreamOperation Async issues / create insertAll / fixInsert on reverted list (#756). (60395f9b)
    Open source →
    Release notes
    • Add hideImage param
    Open source →
  25. 2.1.3 11 May 2025
    Release notes
    • FIX: hide attachmentButton if no there is no onAttachmentTap provided (#757). (2eae2002)
    Open source →
  26. 2.1.2 11 May 2025
    Release notes
    • FIX: add audio message type. (8d2b705a)
    Open source →
  27. 2.1.1 04 May 2025
    Release notes
    • FIX: add video message type. (93a13840)
    Open source →
  28. 2.1.0 03 May 2025
    Release notes

    ⚠️ Breaking Changes ⚠️

    Chat controller methods have been renamed to avoid name conflicts with Riverpod.

    • insert -> insertMessage

    • update -> updateMessage

    • remove -> removeMessage

    • set -> setMessages

    • FEAT: rename chat controller methods. (dc1bf57d)

    Open source →
    Release notes
    • Update dependencies
    Open source →
  29. 2.0.2 02 May 2025
    Release notes
    • FIX: improve documentation and add example. (113141b3)
    Open source →
    Release notes
    • Fix paddings for an empty preview data

    • Limit number of images parsed

    • Fix regex

    Open source →
  30. 2.0.1 02 May 2025
    Release notes
    • FIX: document public APIs.
    Open source →
    Release notes
    • Fix custom padding and add a custom link press handler
    Open source →
  31. 2.0.0 01 May 2025
    Release notes
    • Version 2.0.0 is a major update where we completely rebuilt the library. This version focuses on better performance, more customization options, and improved stability. We have added many new features and improvements to make your experience better. For more details, check out our blog post: https://flyer.chat/blog/v2-announcement/ 🚀
    Open source →
    Release notes
    • BREAKING : onPreviewDataFetched and previewData are now required. In the previous version, a link preview used on a ListView resulted in a fetch call every time the preview was appearing on a screen.
    Open source →
  32. 2.0.0-dev.11 01 May 2025 pre-release
    Release notes

    ⚠️ Breaking Changes ⚠️

    • Enhanced pagination functionality for the ChatAnimatedList widget. If you utilize the paginationThreshold parameter, please refer to the comments in the ChatAnimatedList widget implementation for detailed guidance.
    • Updated the Message model to rename parentId to replyToMessageId
    • The createdAt field is now optional in the message model
    • The sending 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.
    • The 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.
    • The firstName and lastName fields in the User model have been consolidated into a single name field for improved simplicity.
    • The default sentinel values that previously allowed users to set specific properties to null have been removed. Instead, please use Colors.transparent, BorderRadius.zero, or TextStyle() to achieve the desired effect. Passing null will now use the standard configuration.

    ⚠️ New Features ⚠️

    • Added a headerWidget to the ChatMessage widget, enabling the display of a custom header for each message. You have the flexibility to control the header's position; wrap it with a Center widget for centering.
    • Introduced new parameters: sentMessageColumnAlignment, receivedMessageColumnAlignment, sentMessageRowAlignment, and receivedMessageRowAlignment for the ChatMessage widget. These allow for precise control over the positioning of leadingWidget, trailingWidget, topWidget, and bottomWidget. Ensure correct defaults are set for proper alignment, especially when using the topWidget.
    • Introduced TextStreamMessage type to support text streaming
    • Added textStreamMessageBuilder to the Builders class to support text streaming UI widget

    Other changes

    • Introduced MessageID and UserID typedefs to provide clearer context, while maintaining their underlying type as Strings
    • Do not show status for received messages
    • Added example for text streaming
    Open source →
  33. 2.0.0-dev.10 20 Apr 2025 pre-release
    Release notes

    ⚠️ Breaking Changes ⚠️

    • Rename ChatInput to Composer
    • Rename ChatInputHeightNotifier to ComposerHeightNotifier
    • Rename inputBuilder to composerBuilder
    Open source →
  34. 2.0.0-dev.9 06 Apr 2025 pre-release
    Release notes

    ⚠️ Breaking Changes ⚠️

    • Requires Freezed 3.0.0
    • Replace 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.
    • Rename overlay to hasOverlay in ImageMessage

    Other changes

    • Downgrade intl package version for better compatibility with other Flutter packages
    • Added FileMessage support to the example project
    • Migrated web storage implementation from indexed_db to idb_shim for improved cross-platform compatibility and better performance
    Open source →
  35. 2.0.0-dev.8 25 Mar 2025 pre-release
    Release notes

    ⚠️ Breaking Changes ⚠️

    • Package requires intl package for date/time formatting

    ⚠️ New features ⚠️

    • Added support for long press actions on messages with customizable callback
    • Added system message for displaying system notifications and events in chat
    • Added examples demonstrating both long press handling and system messages
    • Added message status indicators (delivered, error, seen, sending, sent)
    • Added message timestamps with customizable format, position
    Open source →
  36. 2.0.0-dev.7 16 Mar 2025 pre-release
    Release notes

    ⚠️ Breaking Changes ⚠️

    • Changed dependency from flutter_markdown to gpt_markdown for the FlyerChatTextMessage class
    • onMessageTap callback now includes message index and tap up details - updated parameters to (Message item, {int? index, TapUpDetails? details})
    • Added more customization options to ChatInput, with default capitalization set to sentences
    • Changed default behavior of Enter key in ChatInput to create a newline instead of sending message
      • To send message on Enter, set textInputAction: TextInputAction.send when configuring ChatInput through builders
      • See local.dart example for how to use builders to customize input behavior

    ⚠️ New features ⚠️

    • Add ScrollToMessageMixin to enable programmatic scrolling in chat list:
      • scrollToMessage(messageId): Scrolls to a specific message by ID
      • scrollToIndex(index): Scrolls to a message at a specific index
      • Both methods support customizable animation duration, curve, alignment and offset
      • Can be used directly through any ChatController instance
      • See the pagination example in the example project for usage details
    • Add validation to prevent duplicate message IDs
    • Added support for sending messages using Shift+Enter keyboard shortcut in ChatInput

    🐛 Bug Fixes

    • Fixed flickering in avatar widget by implementing a user cache with LRU eviction strategy, allowing synchronous access to recently resolved user data
    Open source →
  37. 2.0.0-dev.6 18 Feb 2025 pre-release
    Release notes

    ⚠️ Breaking changes ⚠️

    • Require Flutter 3.29 and Dart 3.7

    🐛 Bug Fixes

    • Temporarily disabled blur effect for chat input due to a crash in Flutter 3.29 (will be re-enabled once fix is available in stable)
    • Fixed a warning that occurred when removing all messages simultaneously
    Open source →
  38. 2.0.0-dev.5 16 Feb 2025 pre-release
    Release notes

    ⚠️ Breaking changes ⚠️

    • Changed signature of chatMessageBuilder to include isRemoved and groupStatus parameters.
    • Changed imageUrl to imageSource for the User model. Change is necessary to show that not only remote URLs are supported but also local assets.
    • messageGroupingTimeoutInSeconds is now set via chatAnimatedListBuilder.

    ⚠️ New features ⚠️

    • Add hintText to the ChatInput widget.
    • Added avatar support. Check local example for details.
    • chatMessageBuilder now returns isRemoved and groupStatus parameters. Group status returns information about message's position in the group. isRemoved is true if message is removed.
    • Added leadingWidget and trailingWidget to the ChatMessage widget.
    Open source →
  39. 2.0.0-dev.4 04 Feb 2025 pre-release
    Release notes

    ⚠️ Breaking Changes ⚠️

    👥 User Management:

    • Replaced user parameter with currentUserId (String) and resolveUser function
    • Users are now referenced by ID, with async user data resolution through resolveUser

    ⚙️ API Changes:

    • Renamed ChatInputHeightNotifier.updateHeight() to setHeight()
    • Scroll controller management moved to individual list widgets that you can render via builders: chatAnimatedListBuilder: ... return ChatAnimatedList(scrollController: _scrollController)
    • Text editing controller now configured through ChatInput widget

    🔄 Core Changes:

    • author (type User) is replaced with authorId (type String) for simpler user management
    • All DateTime properties now use milliseconds instead of microseconds for JSON serialization

    🎨 Theme Simplification: Theme has been streamlined to 3 key parameters:

    1. colors - Uses Material 3 semantic names (e.g. primary, onPrimary, secondary) making it easy to apply color schemes
    2. typography - Follows Flutter's TextTheme semantic naming conventions
    3. shape - Controls border radius of all messages (rounded vs square messages)

    ✨ New Features:

    👨‍💻 Chat Experience:

    • Added typing indicator support
    • Background image customization
    • Improved scroll-to-bottom performance

    📜 List Behavior Controls:

    • shouldScrollToEndWhenSendingMessage: Auto-scroll on message send
    • shouldScrollToEndWhenAtBottom: Auto-scroll when at bottom
    • initialScrollToEndMode: Controls initial scroll behavior for non-reversed list. Because list is not reversed, you must scroll to the end to see latest messages. Available options:
      • none: No automatic scrolling, do nothing
      • animate: Smooth scroll to end
      • jump: Instant scroll to end (wrong position or UI jumps are expected since Flutter does not know exact size of the list)

    🎯 Improvements:

    • Improved AI agent scrolling behavior example with message pinned to the top of the viewport
    • Unified API between reversed and non-reversed lists
    • Added pagination example
    Open source →
  40. 2.0.0-dev.3 02 Jan 2025 pre-release
    Release notes

    ⚠️ Contains breaking changes ⚠️

    • 🎉 Emoji-only messages: added support for text messages containing only emojis, displayed without a bubble.
    • 🧩 Message grouping: added support for grouping messages for a cleaner chat display.
    • 🐛 Bug fix: fixed an issue where timeouts were not being cleared properly.
    • 🔧 Chat builders: chat message builders now include the message index in their parameters.
    • 📱 Safe area: added safe area support for reversed lists.
    Open source →
  41. 2.0.0-dev.2 28 Dec 2024 pre-release
    Release notes

    ⚠️ Contains breaking changes ⚠️

    ⚠️ Requires Flutter ^3.19 and Dart ^3.3 ⚠️

    🖼️ API Example

    • Added support for image uploads
    • Added a web sockets connection status indicator with reconnection logic examples

    🔗 cross-cache

    • Added new methods:
      • delete(String key) – delete entries
      • updateKey(String key, String newKey) – rename keys while keeping the data
    • CustomNetworkImage is now CachedNetworkImage and has been moved to the cross-cache package
    • Exposed the set method for better flexibility

    💬 flutter-chat-core

    • Added customMessageBuilder for building custom messages
    • Added overlay parameter to ImageMessage
    • Themes:
      • Added ImageMessageTheme (replacing imagePlaceholderColor)
      • Updated InputTheme (adding textFieldColor)
      • Updated ScrollToBottomTheme
      • Updated TextMessageTheme
    • Added UploadProgressMixin for handling upload progress tracking

    📝 flutter-chat-ui

    • Automatically handles the safe area (optional, enabled by default)
    • Scrolls content up when the keyboard is opened
    • Added support for an action bar above the input field (with example)
    • Exported ChatInputHeightNotifier
    • Enhanced ChatAnimatedList with:
      • topSliver and bottomSliver for custom widgets at the top or bottom of the chat (both scrollable)

    📸 flyer-chat-image-message

    • Theme now derives from imageMessageTheme
    • Added an upload progress indicator
    • Fixed default constraints
    • Added an optional overlay to images
    Open source →
  42. 2.0.0-dev.1 21 Oct 2024 pre-release
    Release notes
    • 🚀 Exciting pre-release of v2! This version is a complete rewrite, focusing on extensibility, customizability, performance, and stability. 🛠️
    • ⚠️ Some features are still in progress, so use with caution. However, I've aimed to make this version more practical for real-world applications. 💼
    • 🌟 New examples include integrations with REST API and AI (Gemini), with more to come! 🤖
    • 💻 Works seamlessly across all platforms. 📱🖥️
    • 📚 Documentation and migration guide are in the works and will be available in the coming weeks.
    • 🗓️ A public backlog for the new version is planned to keep everyone informed about upcoming features.
    • 🔔 Stay tuned by following our GitHub for updates!
    • 🙏 If you have a chance to test v2 or review the code, I'd love to hear your thoughts! 💬
    Open source →
  43. 1.6.15 12 Aug 2024
    Release notes
    • Last release of v1 and v2 is replacing it on main branch soon.
    • Updated markdown matchers to be bold (double asterisk), italic (double underscore), linethrough (double tilde) and code (single backtick).
    • Removed PopScope since new api requires Flutter v3.22 and I want to still support older versions. Let me know if it introduces breaking behaviour.
    • Added support for AssetImage (uri starts with assets/). Thanks @thomers for the PR!
    Open source →
  44. 1.6.14 09 Jun 2024
    Release notes
    • While v2 is still in the works (unexpected blockers, see GitHub for progress) releasing a small patch update with improvements.
    • Added optional scroll preferPosition to scrollController.scrollToIndex. Thanks @chdo002 for the PR!
    • Removed isComposingRangeValid check from the input to hopefully fix send button that does not appear.
    • Added usesSafeArea option to the inputOptions to be able to remove safe area backed inside the input.
    Open source →
  45. 1.6.13 19 May 2024
    Release notes
    • While v2 is still in the works (unexpected blockers, see GitHub for progress) releasing a small patch update with improvements.
    • Potentially breaking: bumped dependencies, but I used ranges (>= and <) so don't expect any problems. Please raise an issue if some change breaks your project.
    • Added support for overriding the bubbleMargin property using ChatTheme. Thanks @ishchhabra for the PR!
    • Added localisation support to the typing indicator which was hardcoded english only previously. Thanks @longnh2k1 for raising the issue!
    Open source →
  46. 1.6.12 05 Feb 2024
    Release notes
    • Remove defaultBubbleMessage from the bubbleBuilder as it breaks compatibility. If you need this please use previous release, this is the only change here. Next should be v2.0.0 preview.
    Open source →
  47. 1.6.11 04 Feb 2024
    Release notes
    • Small patch release while 2.0.0 is still in the works.
    • Added messageMaxWidth to the theme. Thanks @bobz392 for the PR!
    • Added isLeftStatus to display status on the left side of the message. Thanks @hndrr for the PR!
    • Added localisation for Persian language (fa locale). Thanks @xclud for the PR!
    • Added default message to the bubbleBuilder. Thanks @asoap for the PR!
    • Added messageWidthRatio to the chat. Thanks @elihaialgoaitech for the PR!
    • Added customTypingWidget, customTypingIndicatorBuilder, typingWidgetBuilder and multiUserTextBuilder to the TypingIndicatorOptions. Thanks @phamconganh for the PR!
    Open source →
  48. 1.6.10 09 Nov 2023
    Release notes
    • Possibly last release before 2.0.0, which will be a complete re-write focused on extensibility, customizability, performance and stability.
    • Fixed repaint if type indicator is not used. Thanks @mozomig for the PR!
    • Added ability to highlight message when scrolling to it. Thanks @SergeySor for the PR!
    • Added more theming to the text input. Thanks @claudius-kienle for the PR!
    • Fixed an exception when user exiting the chat. Thanks @elihaialgoaitech for the PR!
    • Fixed input bug for the Japanese language. Thanks @okano4413 for the PR!
    • Added slidableMessageBuilder. Thanks @leeyisoft for the PR!
    • Matchers are now reusable and used in system message as well. Thanks @provokateurin for the PR!
    • avatarBuilder now provides whole user object. Thanks @kahyoongho for the PR!
    • Added semantics for the send button, useful in e2e tests. Thanks @GustekDev for the PR!
    Open source →
  49. 1.6.9 09 Jul 2023
    Release notes
    • Update dependencies
    Open source →
  50. 1.6.8 17 May 2023
    Release notes
    • Downgrade intl to make it compatible with latest Flutter
    • Add autofocus to the InputOptions. Thanks @josefwilhelm for the PR!
    Open source →
  51. 1.6.7 16 May 2023
    Release notes
    • BREAKING CHANGE: nameBuilder now passes the whole user class, instead of just an id. Thanks @vintage for the PR!
    • Add typing indicator. See typingIndicatorOptions. Thanks @gtalha07 for the PR! Huge one!
    • Add imageProviderBuilder. Thanks @marinkobabic for the PR!
    • Add autocorrect and enableSuggestions to the InputOptions. By default, both values will be true. Thanks @g0dzillaa for the PR!
    • Add keyboardType to the InputOptions. Thanks @Gramatton for the PR!
    • Add Swedish localization. Thanks @OlleEkberg for the PR!
    • Add Finnish localization. Thanks @tuoku for the PR!
    • Update dependencies. Requires Dart >= 2.19.0.
    Open source →
  52. 1.6.6 29 Oct 2022
    Release notes
    • Add audioMessageBuilder (no default implementation yet). Thanks @marinkobabic for the PR!
    • Add videoMessageBuilder (no default implementation yet).
    • Add SystemMessage and systemMessageBuilder. Thanks @felixgabler for the PR!
    • Add dateIsUtc to use UTC time for parsing dates inside the chat. Thanks @marinkobabic for the PR!
    • Fix unnecessary scrolls to the bottom. Thanks @MaddinMade for the PR!
    • Add custom text matchers to the TextMessageOptions. Thanks @jld3103 for the PR!
    • Add listBottomWidget. Thanks @MaddinMade for the PR!
    • Fix scroll to unread when no unread messages exist. Thans @jld3103 for the PR!
    • Add useTopSafeAreaInset to the Chat widget, by default enabled on mobile platforms. Use it to disable top safe area inset. Thanks @jld3103 for reporting!
    • Fix PatternStyle regexes. Thanks @Mayb3Nots for reporting!
    • Update dependencies. Requires Dart >= 2.18.0.
    Open source →
  53. 1.6.5 02 Oct 2022
    Release notes
    • BREAKING CHANGE: PreviewTapOptions -> TextMessageOptions
    • BREAKING CHANGE: isTextMessageTextSelectable -> TextMessageOptions.isTextSelectable
    • Add unread messages banner and scroll to the first unread. Thanks @felixgabler for the PR!
    • Fix every message re-render on new message added. Thanks @otto-dev for the PR!
    • Refactor code to make Flyer chat more accessible for contributions. Thanks @felixgabler for the PR!
    • Add imageHeaders. Allows to pass headers to all images used in the chat. Thanks @marinkobabic for the PR!
    • Update to Flutter 3.3.3
    Open source →
  54. 1.6.4 24 Jul 2022
    Release notes
    • BREAKING CHANGE: Add InputOptions. onTextChanged, onTextFieldTap and sendButtonVisibilityMode are now under InputOptions class, just move the same values to inputOptions: InputOptions().
    • Add inputClearMode to InputOptions. Allows you to disable automatic text field clear on submit.
    • Add textEditingController to InputOptions. Allows you to provide a custom editing contoller, but preferably use InputTextFieldController we export from the library, if you want to use it to programmatically clear text field or similar.
    • Add keyboardDismissBehavior.
    • Improve image gallery - code optimizations and close button fix. Thanks @felixgabler for the PR!
    • Fix input container changing its size. Thanks @joj3000 for the PR!
    • Fix enter key not moving text to a new line on web. Thanks @UmairSaqibBhutta for reporting!
    • Add TextMessageOptions. Thanks @felixgabler for the PR!
    • Update dependencies
    Open source →
  55. 1.6.3 26 Jun 2022
    Release notes
    • Added an option to align sent bubbles to the right or left for RTL languages. Thanks @Faaatman for reporting! Use bubbleRtlAlignment.
    • Add customStatusBuilder. Thanks @skllll06 for the PR!
    Open source →
  56. 1.6.2 19 Jun 2022
    Release notes
    • Code refactor
    • Update documentation about opening files
    • Fixes RTL layout. Thanks @Yahllil for reporting!
    Open source →
  57. 1.6.1 14 Jun 2022
    Release notes
    • Add bold, italic, strikethrough & code style to the input. Thanks @hareshgediya for the PR!
    • Add user agent option for preview data fetching. Thanks @felixgabler for the PR!
    Open source →
  58. 1.6.0 13 Jun 2022
    Release notes
    • BREAKING CHANGE: copyWith on messages works differently (keeping previous values unless set to null), and sometimes casting to a specific message type is required. Please check your codebase if you're using it. Thanks!
    • Update to Flutter 3. Thanks @felixgabler for the PR!
    • Fix link preview open link. Thanks @felixgabler for the PR!
    Open source →
  59. 1.5.8 17 Apr 2022
    Release notes
    • Fix emoji messages. Thanks @felixgabler for the PR!
    • Add loading spinner support for the file message. Thanks @felixgabler for the PR!
    • Include safe area insets inside chat itself. No need to wrap in SafeArea anymore. Thanks @AdrKacz for reporting!
    Open source →
  60. 1.5.7 11 Apr 2022
    Release notes
    • Add scroller controller as a parameter. Thanks @Faaatman for the PR!
    • Make attachment button margin configurable. Thanks @felixgabler for the PR!
    • Add avatarBuilder and nameBuilder methods to resolve user updates and render correct avatars and names. Thanks @dariuspo and @felixgabler for the PR!
    • Fix broken text paddings. Thanks @AdrKacz for reporting!
    • Update dependencies
    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive