Release notes
Updated
Provides release notes of Agora Chat.
This page provides release notes for Chat SDK for Web.
Client API
v1.4.0
Released on July 3, 2026.
New features
- Added support for sending and receiving GIF image messages. A GIF image message is a subtype of image message that is not compressed when sent. For details, see Send and receive a GIF image message.
- Added support for setting, updating, and retrieving chat group avatars. For details, see Update the chat group avatar.
- Added support for retrieving the following information when a user joins a chat room:
- The current member count, using the
ChatRoom#memberCountattribute. This count updates when members join or leave the chat room. - The chat room-wide mute status, using the
ChatRoom#isAllMemberMutedattribute. This status updates when a mute or unmute event is received. - The chat room creation time, using the new
ChatRoom#createTimestampattribute. - Whether the current user is on the chat room allow list, using the new
ChatRoom#isInWhitelistattribute. - The current user's mute expiration time, using the
ChatRoom#muteExpireTimestampattribute.
- The current member count, using the
- Added the
ChatRoomEventHandler#onMuteListAddedFromChatRoom(roomId, Map<String, int> mutes)event, which provides the muted members' user IDs and their mute expiration timestamps through themutesparameter. This event deprecates the oldChatRoomEventHandler#onMuteListAddedFromChatRoom(roomId, List<String> mutes, int expireTime)event. For details, see Listen for chat room events. - Added support for retrieving roaming messages sent by specific group members from the server. For details, see Retrieve message history of the specified conversation.
- Added support for retrieving messages sent by specific members in a local group conversation. For details, see Search local messages sent by specific members.
- Added support for searching all local conversations by keyword. The SDK returns the matching conversation IDs and their message IDs. For details, see Search local conversations by keyword.
- Added support for retrieving one or more local messages by message ID. For details, see Retrieve local messages by message ID.
- Added the
ChatGroupEventHandler#onMembersJoinedFromGroupandChatGroupEventHandler#onMembersExitedFromGroupevents, which notify other members in batches when one or more members join or leave a group. Previously, the SDK triggered a separate event for each member. These events deprecateChatGroupEventHandler#onMemberJoinedFromGroupandChatGroupEventHandler#onMemberExitedFromGroup. For details, see Listen for chat group events.
Improvements
-
Changed the unique app identifier from the App Key to the App ID.
As of v1.4.0, the App Key, including the
org_nameandapp_nameparameters, is deprecated in favor of the App ID. If you integrated an earlier version of the SDK using the App Key, no changes are required: both the App Key and the App ID continue to work with Agora Chat. -
Added support for modifying more message types with
ChatManager#modifyMessage:- Text and custom messages: modify the message body and the extension attributes (
attributes). - File, video, voice, image, location, and combined messages: modify the extension attributes (
attributes) only. - Command messages: modification is not supported.
For details, see Modify sent messages.
- Text and custom messages: modify the message body and the extension attributes (
-
Allowed group owners, chat room owners, and admins to recall messages sent by other members. For details, see Recall a message.
-
Changed the trigger threshold for the
ConnectionEventHandler#onTokenWillExpireevent: the SDK now triggers the event when 80% of the token's validity period has elapsed, instead of 50%. For details, see Authentication. -
Added support for retrieving a group member list that includes each member's role and join time, using
ChatGroupManager#fetchGroupMembersInfo. For details, see Retrieve the chat group member list. -
Optimized certain database operations.
-
Optimized the reconnection logic to automatically switch reconnection addresses by default.
-
Added the device timezone offset to log files to facilitate troubleshooting.
-
Improved the loading performance of the local conversation list when the latest message is an attachment by removing redundant file length checks.
Issues fixed
- Messages in memory were not deleted when the corresponding local conversation was removed.
- The
TYPEfield was empty in theChatThreadEventHandler#onUserKickOutOfChatThreadevent. ChatEventHandler#onMessageContentChangeddid not return modification details when editing message types other than text and custom messages.- After a group or chat room was disbanded, the SDK still fetched group or chat room details from the server after members received the disband event.
- The database was mistakenly rebuilt when a
SQLITE_BUSYerror occurred. - The latest message in a conversation retrieved from the server with
ChatManager#fetchConversationsByOptionsdid not contain translations or message reactions. - A crash occurred under extreme network conditions.
v1.3.3
Released on July 10, 2025.
New features
- Added the
ChatRoomManager#joinChatRoom(String, bool, String)method to allow a user to pass extension information and specify whether to quit all other chat rooms when the user joins a chat room.
Issues fixed
- Incorrect return result format of
GroupManager.fetchMemberAttributeson the Android platform.
v1.3.2
Released on May 2, 2025.
New features
-
Added the
ChatGroupManager.isMemberInGroupMuteListmethod to check whether the current user is in the group mute list.bool inMuteList = await ChatClient.getInstance.chatRoomManager.isMemberInChatRoomMuteList(roomId); -
Added the
ChatRoomManager.isMemberInChatRoomMuteListmethod to check whether the current user is in the chat room mute list.bool inMuteList = await ChatClient.getInstance.groupManager.isMemberInGroupMuteList(groupId);
Issues fixed
- Build issue for Android platform on Flutter 3.29.0.
v1.3.1
Released on December 20, 2024.
Improvements
- Added support for pinning messages in one-to-one conversations. Users can call
ChatManager#pinMessageorChatManager#unpinMessageto pin or unpin a one-to-one chat message. - Optimized the connections to the server under weak network conditions for native platforms.
Issues fixed
The following issues are fixed on native platforms:
- An attachment message can still be sent successfully in spite of failure to send the attachment under special circumstances.
- An incorrect
nextkeyis returned when pulling roaming messages. - The cache is not updated upon the addition of contacts to the block list.
- The official push feature may not work after users log out and log in again.
v1.3.0
Released on December 11, 2024.
New features
- Added the
ChatManager#deleteAllMessageAndConversationmethod to uni-directionally clear all conversations and messages in them. You can also choose whether to clear the chat history on the server. - Added the function of searching for messages by search scope in
MessageSearchScopeduring keyword-based search.MessageSearchScope: Includes three message search scopes: message content, message extension information, and both.ChatManager#loadMessagesWithKeyword: Searches for messages in all conversations by search scope.conversation#loadMessagesWithKeyword: Searches for messages in a single conversation by search scope.
- Added the function of tagging a conversation:
ConversationFetchOptions: Includes options for filtering conversations retrieved from the server. You can only retrieve pinned conversations or tagged conversations by setting the options.ChatManager#addRemoteAndLocalConversationsMark: Tags a conversation.ChatManager#deleteRemoteAndLocalConversationsMark: Untags a conversation.ChatManager#fetchConversationsByOptions: Gets conversations from the server by settingConversationFetchOptions.Conversation#marks: Gets all tags of a local conversation.ChatMultiDevicesEvent#CONVERSATION_UPDATE_MARK: Conversation tag update event in a multi-device login use-case. If a user adds or removes a conversation tag on one device, this event is received on other devices of the user.
- Added the
ChatMessage#isBroadcastproperty to indicate whether the message is a broadcast message sent via a RESTful API to all chat rooms under an app. - Added the
ChatMessage#deliverOnlineOnlyproperty to set whether the message is delivered only when the recipient(s) is/are online. If this property is set totrue, the message is discarded when the recipient is offline. - Added the
GroupManager#fetchJoinedGroupCountmethod to allow the current user to retrieve the total number of groups they joined. - Added a 706
CHATROOM_OWNER_NOT_ALLOW_LEAVEerror code returned when the chat room owner leaves the chat room. IfChatOptions#isChatRoomOwnerLeaveAllowedis set tofalseduring SDK initialization, the chat room owner is not allowed to leave the chat room. In this case, error 706 is reported if the chat room owner calls theleaveChatRoom. - Added support for retrieval of historical messages of chat rooms from the server.
- Added the
ChatOptions#useReplacedMessageContentsproperty to determine whether the server returns the adjusted text message to the sender if the message content is replaced during text moderation. - Added the function of pinning a message:
ChatManager#pinMessage: Pins a message.ChatManager#unpinMessage: Unpins a message.ChatManager#fetchPinnedMessages: Gets the list of pinned messages in a conversation from the server.Conversation#loadPinnedMessages: Gets the list of pinned messages in a local conversation.MessagePinInfo: Includes the operator that pins or unpins the message and the operation time.ChatMessage#pinInfo: Includes the message pinning information.ChatEventHandler#onMessagePinChanged: Occurs when the message pinning status changes. When a message is pinned or unpinned in a group or chat room, all members in the group or chat room receive this event.
- Added the
ChatOptions#enableEmptyConversationproperty to set whether to include empty conversations in the retrieved list of local conversations. This property is set during SDK initialization. - Added the
applicantanddeclinerparameters to theChatGroupEventHandler#onRequestToJoinDeclinedFromGroupevent to respectively indicate the user that applies to join the group and the user that declines the join request. - Added the
ChatOptions#messagesReceiveCallbackIncludeSendproperty to set whether to return the successfully sent message in theChatEventHandler#onMessagesReceivedevent. - Added the support for returning the modified custom message via the
ChatEventHandler#onMessageContentChangedevent if the message is modified via the RESTful API.
Improvements
- Marked
ChatManager#fetchConversationandChatManager#fetchPinnedConversationsdeprecated. UseChatManager#fetchConversationsByOptionsinstead. - Added support for forwarding single attachment messages by passing in the message body and extension fields, without reuploading the attachment.
- Reduced the number of times group specifications are retrieved when a large number of group member events are received during certain use-cases.
- Delivered a more accurate chat room member count by optimizing the way to update the member count when members join or leave the chat room.
- Shortened the time used to call the
ChatManager#markAllConversationsAsReadmethod by marking all conversations read more efficiently. - Optimized the way the SDK randomly gets server addresses to increase the success rate of requests.
- Adjusted the timeout period for joining or leaving chat rooms.
- Optimized the way the connection is re-established upon a connection failure in certain use-cases.
- Added support for uploading an attachment in fragments when sending an attachment message.
- Marked the
ChatClient#loginWithAgoraTokenmethod deprecated. Use theChatClient#loginWithTokenmethod instead. - Fine tuned the error message for token-based login for accuracy.
- Optimized the way messages are re-sent.
- Removed the internal
NetworkOnMainThreadExceptionexception catching during a network request. - Optimized the database upgrade logic.
- Increased the maximum allowed size of a log file from 2 MB to 5 MB.
- Added the iOS privacy protocol
PrivacyInfo.xcprivacy.
Issues fixed
- For a modified message, the
fromproperty is missing from the body of the message pulled from the server by an offline user that gets online. - In special use-cases, chat room events are missing when users exit the SDK before logging into it.
- The SDK reconnects to the server twice after the network is back to normal.
- An incorrect error message is returned for an logged-out user that calls
leaveChatRoom. - Members in a group are counted twice in certain use-cases.
- The data reporting module crashes occasionally.
- The SDK is instantiated repeatedly when the
ChatManager#updateMessagemethod is called frequently for SDK initialization in multi-thread use-cases.
v1.2.0
Released on December 6, 2023.
New features
- Added the function of forwarding multiple messages:
ChatManager#fetchCombineMessageDetail:Retrieves the list of original messages included in a combined message from the server.MessageType.COMBINE: The combined message type.CombineMessageBody: The combined message body class.
- Added the function of modifying sent messages:
ChatManager#modifyMessage: Modifies a sent text message.ChatEventHandler#onMessageContentChanged: Occurs when a sent message is modified. The message recipient receives this callback.
- Added the function of pinning a conversation:
ChatManager#pinConversation: Pins or unpins a conversation.ChatManager#fetchPinnedConversations: Retrieves the list of pinned conversations from the server.
- Added the
fetchConversationmethod to retrieve the conversation list from the server. Marked theChatManager#getConversationsFromServermethod deprecated. - Added
FetchMessageOptionsas the parameter configuration class for retrieving historical messages from the server. - Added the
ChatManager#fetchHistoryMessagesByOptionmethod to retrieve historical messages of a conversation from the server according toFetchMessageOptions, the parameter configuration class for retrieving historical messages. - Added the
directionparameter toChatManager#fetchHistoryMessagesto allow you to retrieve historical messages from the server according to the message search direction. - Added the
ChatConversation#deleteMessagesWithTsmethod to delete messages sent or received in a certain period from the local database. - Added the function of managing custom attributes of group members:
ChatGroupManager#setMemberAttributes: Sets custom attributes of a group member.ChatGroupManager#fetchMemberAttributesandGroupManager#fetchMembersAttributes: Retrieves custom attributes of group members.ChatGroupEventHandler#onAttributesChangedOfGroupMember: Occurs when a custom attribute is changed for a group member.
- Added the
reasonparameter toChatRoomEventHandler#onRemovedFromChatRoomso that the member removed from the chat room knows the removal reason. - Added the
ChatConnectionEventHandler#onAppActiveNumberReachLimitcallback that occurs when the number of daily active users (DAU) or monthly active users (MAU) for the app has reached the upper limit. - Added the
IMultiDeviceDelegate#OnRoamDeleteMultiDevicesEventcallback that occurs when historical messages in a conversation are deleted from the server on one device. This event is received by other devices. - Added the support for user tokens in the following methods:
ChatClient#fetchLoggedInDevices: Retrieves the list of online login devices of a user.ChatClient#kickDevice: Kicks a user out of the app on a device.ChatClient#kickAllDevices: Kicks a user out of the app on all devices.
- Added the
ChatMultiDeviceEventHandler#onRemoteMessagesRemovedcallback that occurs when historical messages in a conversation are deleted from the server on one device. This event is received by other devices. - Added the
List reactionsattribute inChatMessageReactionEvent:ReactionOperation#userId: The user ID of the operator.ReactionOperation#reaction: The changed Reaction.ReactionOperation#operate: The operation.
- Added the
ChatRoomEventHandler#onSpecificationChangedcallback that occurs when details of a chat room are changed.
Improvements
- Optimized the
ChatManager#searchMsgFromDBmethod to include custom messages in the message retrieval result. - Adapted to the Android 14 system.
Issues fixed
ConnectionEventHandler#onConnectedandConnectionEventHandler#onDisconnectedcannot be received on the iOS system.- Message extension attributes of the string type in the Android system turn into the Int type.
- Upon a hot reload on Android, the callback is triggered repeatedly.
- When you retrieve custom chat room attributes, passing
nullto the key of an attribute causes the app to crash. - Chat room events cannot be received by a user that logs in to the Agora Chat server again after logout on the Android platform.
ChatManager#getThreadConversationJSON error.ChatMessage#chatThreaderror.- The
ChatRoomEventHandler#onSpecificationChangedis not triggered when the chat room announcement changes. - The Android platform crashes when a user is removed from a thread.
- An error occurs when
ChatThreadManager#fetchChatThreadMembersis called.
v1.1.1
Released on June 21, 2023.
Issues fixed
Unexpected execution of callback methods due to multiple initializations of an Android environment.
v1.1.0
Released on April 28, 2023.
New features
- Upgrades the iOS and Android native platforms that the Flutter platform depends on to v1.1.0.
- Adds the function of managing custom chat room attributes to implement functions like seat control and synchronization in voice chat rooms. See Manage chat room attributes.
- Adds the
ChatManager#fetchConversationListFromServermethod to allow users to get the conversation list from the server with pagination. See Retrieve a list of conversations from the server. - Adds the
ChatMessage#chatroomMessagePriorityattribute to implement the chat room message priority function to ensure that high-priority messages are dealt with first. See Set message priority. - Adds the support for push notifications on the server side to allow you to send push notifications to all users, individual users specified by IDs, or groups of users by labels. For how to configure and send push notifications, see Push notification management.
- Adds an additional option to delete messages on the server side. See Delete conversations and historical messages.
Improvements
Changes the message sending result callback from ChatMessage#setMessageStatusCallBack to ChatManager#addMessageEvent.
Issues fixed
ChatManager#deleteMessagesBeforeTimestamp execution failures.
v1.0.9
Released on December 19, 2022.
Issues fixed
- Some alerts on Android 12.
- The inconsistency of messages in the memory and the database due to a call to the
updateMessagemethod in rare use-cases. - The
EMGroupEventHandler#onDestroyedFromGroupcallback that occurs when a group is destroyed did not work on the Android platform. - The
EMGroupEventHandler#onAutoAcceptInvitationFromGroupcallback that occurs when a user's group invitation is accepted automatically did not work on the Android platform. - Crashes in rare use-cases.
v1.0.8
Released on November 22, 2022.
Improvements
Removed redundant SDK logs.
Issues fixed
- Failures in getting a large number of messages from the server in a few use-cases.
- The issue with incorrect data statistics.
- Crashes caused by log printing in rare use-cases.
v1.0.7
Released on September 7, 2022.
New features
- Adds the
customEventHandlerattribute inChatClientto allow you to set custom listeners to receive the data sent from the Android or iOS device to Flutter. - Adds event listener classes for event listening.
- Adds the
PushTemplatemethod inPushManagerto support custom push templates. - Adds the
isDisabledattribute inGroupto indicate whether a group is disabled. This attribute needs to be set by developers at the server side. This attribute is returned when you call thefetchGroupInfoFromServermethod to get group details. - Adds the
displayNameattribute inPushConfigsto allow you to check the nickname displayed in your push notifications.
Improvements
- Marked
AddXXXManagerListenermethods (such asaddChatManagerListenerandaddContactManagerListener) as deprecated. - Enhanced API reference documentation.
v1.0.6
Released on July 21.
Issues fixed
- The callbacks for messaging thread were not triggered on iOS.
- The callbacks for reaction were not triggered in iOS.
- Occasional crashes occurred on Android when retrieving conversations from the server.
v1.0.5
Released on June 17.
This is the first release for the Chat Flutter SDK, which enables you to add real-time chatting functionalities to an Android or iOS app. Major features include the following:
- Sending and receiving messages in one-to-one chats, chat groups, and chat rooms.
- Retrieving and managing conversations and messages.
- Managing chat groups and chat rooms.
- Managing contact and blocklists.
For the complete feature list, see Product Overview.
Chat is charged on a MAU (Monthly Active Users) basis. For details, see Pricing for Chat and Pricing Plan Details.
Refer to the following documentations to enable Chat and use the Chat SDK to implement real-time chatting functionalities in your app:
