NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #1055 most downloaded on pub.dev
The official Dart client for Stream Chat, a service for building chat applications.
Last release 7 days ago
30 Sep 2026
Ships fairly regularly
a new release about every 3 weeks
Nearly every release is documented
notes for 58 of the last 60 stable releases
1 version withdrawn
withdrawn after publishing
7 years old
253 releases · first in 2020
One column per quarter.
Changed minimum Flutter version to 3.19 for the SDK.
🔄 Changed
Version to keep in sync with the rest of the packages
Added voiceRecording attachment type
✅ Added
voiceRecording attachment typeAdded markUnread method to Channel that marks messages from the provided message id onwards as unread
✅ Added
markUnread method to Channel that marks messages from the provided message id onwards as
unreadVersion to keep in sync with the rest of the packages
Fixes a thread message causing reply messages on the main thread to be considered deleted
🐞 Fixed
[[#1837]](https://github.com/GetStream/stream-chat-flutter/issues/1837) Delete image and file attachments from the CDN, when the message get's hard de
…UUID dependency to ^4.2.1. This might produce a breaking change if you your code depends in UUID 3.x.x directly or indirectly.
🐞 Fixed
UUID dependency to ^4.2.1. This
might produce a breaking change if you your code depends in UUID 3.x.x directly or indirectly.Removed deprecated channelQuery.sort property. Use channelStateSort instead.
🛑️ Breaking
Removed deprecated channelQuery.sort property. Use channelStateSort instead.
Removed deprecated RetryPolicy.retryTimeout property. Use delayFactor instead.
Removed deprecated StreamChatNetworkError.fromDioError constructor. Use StreamChatNetworkError.fromDioException
instead.
Removed deprecated MessageSendingStatus enum. Use MessageState instead.
🔄 Changed
SDK version to Flutter 3.13/Dart 3.1🐞 Fixed
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
[[#1716]](https://github.com/GetStream/stream-chat-flutter/issues/1716) Fixed client not able to update message with type: reply.
Fixed Channel.query not initializing ChannelState.
🐞 Fixed
Channel.query not initializing ChannelState.✅ Added
channel.countUnreadMentions() to get the count of unread messages mentioning the current user on a
channel. #1692🔄 Changed
SDK version to Dart 3.0Added support for setting Message.type. #1682 ` It is now possible to send system messages. System messages differ from normal messages in the way the
✅ Added
Message.type. #1682It is now possible to send system messages. System messages differ from normal messages in the way they are
presented to the user. Like the name says, system messages are normally send from the system itself, but a user is
able to send it as well by specifying type: 'system' with the message. The user who sends a system message client-side
should have the Create System Message permission. Server-side system messages don't need that permission.
Deprecated Message.status in favor of Message.state.
🔄 Changed
Message.status in favor of Message.state.RetryPolicy.retryTimeout in favor of RetryPolicy.delayFactor.Updated minimum supported SDK version to Dart 2.19
🔄 Changed
SDK version to Dart 2.19[[#1293]](https://github.com/GetStream/stream-chat-flutter/issues/1293) Fixed wrong message order when sending messages quickly.
[[#1585]](https://github.com/GetStream/stream-chat-flutter/issues/1585) Fixed channels left not being removed from the persistent storage.
🐞 Fixed
🔄 Changed
dio dependency to ^5.2.0.[[#1422]](https://github.com/GetStream/stream-chat-flutter/issues/1422) Fixed User.createdAt property using currentTime when the ws connection is not
🐞 Fixed
User.createdAt property using
currentTime when the ws connection is not established.✅ Added
ChatPersistenceClient.isConnected for checking if the client is connected to the database.ChatPersistenceClient.userId for getting the current connected user id.ChatPersistenceClient.disconnect and ChatPersistenceClient.connect for disconnecting and
connecting to the database.[[#1355]](https://github.com/GetStream/stream-chat-flutter/issues/1355) Fixed error while hiding channel and clearing message history.
🐞 Fixed
✅ Added
Expose ChannelMute class. #1473
Added synchronization to the StreamChatClient.sync
api. #1392
Added support for StreamChatClient.chatApiInterceptors to add custom interceptors to the API client.
#1265.
final client = StreamChatClient(
chatApiInterceptors: [
InterceptorsWrapper(
onRequest: (options, handler) {
// Do something before request is sent.
return handler.next(options);
},
onResponse: (response, handler) {
// Do something with response data
return handler.next(response);
},
onError: (DioError e, handler) {
// Do something with response error
return handler.next(e);
},
),
],
);
🔄 Changed
dart sdk environment range to support 3.0.0.Fixed streamWatchers. Before it was always new, now it is possible to follow the watchers of a channel.
🐞 Fixed
Message.i18n field read-only.🔄 Changed
dio and other dependencies to resolvable versions.✅ Added
presence property to Channel::watch method.Updated rate_limiter dependency to ^1.0.0
🔄 Changed
rate_limiter dependency to ^1.0.0Added Huawei and Xiaomi PushProviders.
✅ Added
Huawei and Xiaomi PushProviders.🐞 Fixed
Deprecated the sort parameter in queryChannels in favor of channelStateSort.
✅ Added
thumbUrl field in SendFileResponse model.🐞 Fixed
Remove disposed channel clients from the client state.
Deprecated the sort parameter in queryChannels in favor of channelStateSort.
🛑️ Breaking Changes from 5.0.0-beta.2
🛑️ Breaking Changes from 5.0.0-beta.2
Channel.addMembers, Channel.removeMembers, Channel.inviteMembers and Channel.update
positional parameters are now optional parameters.
// previous
channel.addMembers([...ids], message, hideHistory);
channel.removeMembers([...ids], message);
channel.inviteMembers([...ids], message);
channel.update({...channelData}, updateMessage);
// new
channel.addMembers([...ids], message: ..., hideHistory: ...);
channel.removeMembers([...ids], message: ...);
channel.inviteMembers([...ids], message: ...);
channel.update({...channelData}, updateMessage: ...);
Included the changes from version 4.4.0 and 4.4.1.
- Minor fixes. - Removed deprecated code.
Added StreamChatClient.getCallToken and StreamChatClient.createCall methods.
✅ Added
StreamChatClient.getCallToken and StreamChatClient.createCall methods.🐞 Fixed
Fix Channel.removeMessage not able to remove thread message.
🐞 Fixed
Channel.removeMessage not able to remove thread message.✅ Added
hide_history flag in client.addChannelMembers, channel.addMembers.Do not serialize AttachmentFile.bytes
🐞 Fixed
AttachmentFile.bytesDeprecated StreamChatClient.attachmentFileUploader, Use StreamChatClient.attachmentFileUploaderProvider instead.
🐞 Fixed
✅ Added
StreamAttachmentFileUploader.🔄 Changed
StreamChatClient.attachmentFileUploader,
Use StreamChatClient.attachmentFileUploaderProvider instead.[[#1135]](https://github.com/GetStream/stream-chat-flutter/issues/1135) Persistence was not removing the hidden channels.
🐞 Fixed
x-stream-client header generation.Deprecated PaginationParams.before and PaginationParams.after. Use PaginationParams.limit instead.
✅ Added
PaginationParams.createdAtAfterOrEqual for message pagination.PaginationParams.createdAtAfter for message pagination.PaginationParams.createdAtBeforeOrEqual for message pagination.PaginationParams.createdAtBefore for message pagination.PaginationParams.createdAtAround for message pagination.channel.disabled, channel.hidden and channel.truncatedAt in Channel.channel.membership and channel.membershipStream in Channel.Channel now listens for member.updated events and updates the Channel.members accordingly.🔄 Changed
PaginationParams.before and PaginationParams.after. Use PaginationParams.limit
instead.🐞 Fixed
channel.unset not
updating the extra data stream.Deprecated role in Member in favor of channelRole
✅ Added
🔄 Changed
role in Member in favor of channelRolecurrentUserRole getter in Channel in favor of currentUserChannelRole- Minor fixes
For upgrading to V4, please refer to the V4 Migration Guide
For upgrading to V4, please refer to the V4 Migration Guide
✅ Added
push_provider_name to addDevice API callFixed reactions not working for threads in offline mode.
🐞 Fixed
/mute command on
reload cannot access any channel.own_capabilities
extraData missing after channel update.Unsupported operation: Cannot remove from an unmodifiable list.user_id while reconnecting.✅ Added
event.message in channel.truncate eventschannel.truncateAdded support for ownCapabilities.
✅ Added
🐞 Fixed
Nothing published for this version
[[#1081]](https://github.com/GetStream/stream-chat-flutter/issues/1081) Fixed a bug with user reconnection.
🐞 Fixed
Fixed reactions not working for threads in offline mode.
🐞 Fixed
/mute command on
reload cannot access any channel.own_capabilities
extraData missing after channel update.Unsupported operation: Cannot remove from an unmodifiable list.user_id while reconnecting.✅ Added
event.message in channel.truncate eventschannel.truncatechannel.unreadCount was being set as using global unread count on a very specific case.
🐞 Fixed
channel.unreadCount was being set as using global unread count on a very specific case.You can now pass score to client.sendReaction and channel.sendReaction functions.
✅ Added
score to client.sendReaction and channel.sendReaction functions.client.partialUpdateUsers function in order to partially update users.🐞 Fixed
AuthInterceptor.channelState.copyWith with respect to pinnedMessages.client.location is now deprecated in favor of the new edge server and will be removed in v4.0.0.
🐞 Fixed
Message.user is now also
included while saving users in persistence.message.ownReactions
getting truncated when receiving a reaction event.channelState.pinnedMessagesStream getting reset to 0 after a channel update.unreadCount after removing user from a channel.🔄 Changed
client.location is now deprecated in favor of the
new edge server and will be removed in
v4.0.0.channel.banUser, channel.unbanUser is now deprecated in favor of the new channel.banMember
and channel.unbanMember. These deprecated methods will be removed in v4.0.0.banExpires property of type DateTime on the Member, OwnUser, and User models.✅ Added
client.enrichUrl endpoint for enriching URLs with metadata.client.queryBannedUsers, channel.queryBannedUsers endpoint for querying banned users.[[#799]](https://github.com/GetStream/stream-chat-flutter/issues/799) Fixed totalUnreadCount is not updating when app is resumed from background mode.
🐞 Fixed
totalUnreadCount is
not updating when app is resumed from background mode.Extra properties added to PaginationParams to aid in fetching messages.
✅ Added
PaginationParams to aid in fetching messages.🐞 Fixed
closeConnection() now uses normalClosure status when closing websocket.ChannelEvent.membersCount defaults to 0 avoiding parsing errors due to missing members_count
field.Fixed StreamChatClient.markAllRead api call
🐞 Fixed
StreamChatClient.markAllRead api callmarkAllRead() now updates local channel states.
🐞 Fixed
markAllRead() now updates local channel states.[[#710]](https://github.com/GetStream/stream-chat-flutter/issues/710) Fixed JWT requiring using String as id.
✅ Added
Filter.notExists.🐞 Fixed
String as id.Nothing published for this version
Added 6 new methods in ChatPersistenceClient.
🛑️ Breaking Changes from 2.2.1
ChatPersistenceClient.
bulkUpdateMessagesbulkUpdatePinnedMessagesbulkUpdateMembersbulkUpdateReadsupdatePinnedMessageReactionsdeletePinnedMessageReactionsByMessageId✅ Added
Filter.contains and Filter.emptynext, previous value pagination in client.search
, read more.Attachment class now has a fileSize and mimeType property. Setting a file will also set
the file_size
, mime_type key on extraData, so attachment.fileSize, attachment.mimetype
and attachment.extraData['file_size']
, attachment.extraData['mime_type] is same respectively.🐞 Fixed
Fixed unread indicator not updating correctly
🐞 Fixed
channel.show not working because of null bodyFixed channel.markAllRead throwing failed host lookup.
🐞 Fixed
channel.markAllRead throwing failed host lookup.✅ Added
User and OwnUser classes now have an image property. Setting an image will also set the '
image' key on extraData, so user.image and user.extraData['image'] is the same.User and OwnUser classes now have a name property. Setting a name will also set the 'name'
key on extraData, so user.name and user.extraData['name'] is the same.Channel class now has extra image getter and setter. As well as an updateImage to do a
partial update after a channel has been initialized.Channel class now has extra name getter and setter. As well as an updateName to do a partial
update after a channel has been initialized.Mutes were not working correctly in 2.1.0
🐞 Fixed
client.user is now deprecated in favor of client.currentUser.
🛑️ Removed
MessageTranslation class has been removed. Use the new i18n field in the Message class
instead.✅ Added
Message class now has an i18n field for translationsUser class now has a language field for the user's language preference.🔄 Changed
client.user is now deprecated in favor of client.currentUser.client.userStream is now deprecated in favor of client.currentUserStream.🐞 Fixed
baseURL is now deprecated in favor of using Location to change data location.
🛑️ Breaking Changes from 1.5.3
ConnectUserWithProvider now requires tokenProvider as a required parameter. (Removed from the
constructor)client.disconnect() is now divided into two different functions
client.closeConnection() -> for closing user web socket connection.client.disconnectUser() -> for disconnecting user and resetting client state.client.devToken() now returns a Token model instead of String.ApiError is removed in favor of StreamChatError
StreamChatError -> parent type for all the stream errors.StreamWebSocketError -> for user web socket related errors.StreamChatNetworkError -> for network related errors.client.queryChannels(), channel.query() options parameter is removed in favor of individual parameters
option.state -> bool stateoption.watch -> bool watchoption.presence -> bool presenceclient.queryUsers() options parameter is removed in favor of individual parameters
option.presence -> bool presence🐞 Fixed
✅ Added
Location enum is introduced for easily changing the client location/baseUrl.client.openConnection() and client.closeConnection() is introduced to connect/disconnect
user ws connection.client.partialUpdateMessage and channel.partialUpdateMessage methodsconnectWebSocket parameter in connect user calls to use the client in "connection-less" mode.🔄 Changed
baseURL is now deprecated in favor of using Location to change data location.🐞 Fixed - Export PushProvider enum
🐞 Fixed
PushProvider enum🛑️ Breaking Changes from 2.0.0-nullsafety.6
🛑️ Breaking Changes from 2.0.0-nullsafety.6
ConnectUserWithProvider now requires tokenProvider as a required parameter. (Removed from the
constructor)client.disconnect() is now divided into two different functions
client.closeConnection() -> for closing user web socket connection.client.disconnectUser() -> for disconnecting user and resetting client state.client.devToken() now returns a Token model instead of String.ApiError is removed in favor of StreamChatError
StreamChatError -> parent type for all the stream errors.StreamWebSocketError -> for user web socket related errors.StreamChatNetworkError -> for network related errors.client.queryChannels(), channel.query() options parameter is removed in favor of individual parameters
option.state -> bool stateoption.watch -> bool watchoption.presence -> bool presenceclient.queryUsers() options parameter is removed in favor of individual parameters
option.presence -> bool presence✅ Added
Location enum is introduced for easily changing the client location/baseUrl.client.openConnection() and client.closeConnection() is introduced to connect/disconnect
user WS connection.🔄 Changed
baseURL is now deprecated in favor of using Location to change data location.Your coding agent can read these notes before it upgrades. Set up the MCP server →