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 the
createGroupExmethod, which supports setting a custom group avatar when creating a group. The originalcreateGroupmethod is deprecated. For details, see Create a chat group. - Added support for retrieving the following information when a user joins a chat room:
- The current member count, using the
ChatRoom#getMemberCountmethod. This count updates when members join or leave the chat room. - The chat room-wide mute status, using the
ChatRoom#isAllMemberMutedmethod. This status updates when a mute or unmute event is received. - The chat room creation time, using the new
ChatRoom#getCreateTimestampmethod. - Whether the current user is on the chat room allow list, using the new
ChatRoom#isInWhitelistmethod. - The current user's mute expiration time, using the
ChatRoom#getMuteExpireTimestampmethod.
- The current member count, using the
- Added the
ChatRoomEventListener#onMuteListAddedV2event, which provides the muted members' user IDs and their mute expiration timestamps through themutesparameter. This event deprecates the oldChatRoomEventListener#onMuteListAddedevent. 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 historical messages of the specified conversation.
- Added support for retrieving messages sent by specific members in a local group conversation. The
getConvMsgsWithKeywordmethod gains asendersparameter, which replaces the deprecatedsenderparameter. 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
ChatGroupEventListener#onMembersJoinedandChatGroupEventListener#onMembersExitedevents, 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 deprecateChatGroupEventListener#onMemberJoinedandChatGroupEventListener#onMemberExited. For details, see Listen for chat group events. - Added the
onOfflineMessageSyncStartandonOfflineMessageSyncFinishevents to the connection listener, so you can monitor when offline message synchronization from the server starts and finishes. - Added the
ChatManager#getMessageCountmethod to retrieve the total number of messages in the local database.
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 the
ChatManager#modifyMsgBodymethod to support modifying more message types, replacing the deprecatedChatManager#modifyMessageBody:- Text and custom messages: modify the message body and the extension fields (
ext). - File, video, voice, image, location, and combined messages: modify the extension fields (
ext) only. - Command messages: modification is not supported.
For details, see Modify sent messages.
- Text and custom messages: modify the message body and the extension fields (
-
Allowed group owners, chat room owners, and admins to recall messages sent by other members. For details, see Recall a message.
-
Enhanced security by adding access checks for message attachments. For example, if you receive an image message in a group and forward it to others outside the group, they cannot download the image.
-
Changed the trigger threshold for the
ChatConnectEventListener#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#fetchMemberInfoListFromServer. For details, see Retrieve the chat group member list. -
Changed the cursor value in
ChatManager#fetchHistoryMessagesByOptionsfromundefinedto an empty string ("") when the last page of roaming messages is returned. -
Added the static constructors
ChatOptions#withAppIdandChatOptions#withAppKeyto initialize the SDK with an app ID or app key, replacing the deprecatedChatOptionsconstructor. -
Added
ChatGroupManager#fetchGroupInfoWithoutMembersFromServerto retrieve group information without member information, replacing the deprecatedChatGroupManager#fetchGroupInfoFromServer. To retrieve member information, callChatGroupManager#fetchMemberInfoListFromServer. -
Removed the deprecated
ChatMessageEventListener#onMessagesRecalledevent. UseChatMessageEventListener#onMessagesRecalledInfoinstead. -
Removed APIs that were deprecated before native SDK v1.1.0.
-
Optimized certain database operations.
-
Added exception clearing and null pointer protection to the JNI layer on Android.
-
Optimized the reconnection logic to automatically switch reconnection addresses by default.
-
Improved the
applicationWillEnterForegroundhandling on iOS by sending a ping message to trigger reconnection. -
Disabled the default constructors for message, conversation, and message body objects to prevent null pointer crashes on iOS.
-
Added the device timezone offset to log files to facilitate troubleshooting.
-
Removed the reflection-based approach for obtaining absolute file paths from
FileProvideron Android. -
Upgraded the BoringSSL and SQLCipher dependencies to their latest versions to mitigate potential security risks.
-
Improved the loading performance of the local conversation list when the latest message is an attachment by removing redundant file length checks.
-
Added 16 KB page alignment support for Android 15 and later compatibility.
Issues fixed
- Messages in memory were not deleted when the corresponding local conversation was removed.
- The
TYPEfield was empty in theChatMessageEventListener#onChatMessageThreadUserRemovedevent. - A crash occurred on certain devices when retrieving the start and end times of the conversation Do Not Disturb (DND) settings.
ChatMessageEventListener#onMessageContentChangeddid not return modification details when editing message types other than text and custom messages.- Group or chat room members incorrectly requested details from the server after a disband event was triggered.
- The database was mistakenly rebuilt when a
SQLITE_BUSYerror occurred. - The latest message in a conversation retrieved from the server with
ChatManager#fetchConversationsFromServerWithCursordid not contain translations or message reactions. - An exception occurred during logout when SDK API calls were nested within SDK events on Android.
- On iOS, completion callbacks for some APIs were not invoked on the main thread, including the APIs in
ChatUserInfoManagerandChatPresenceManager, as well asChatManager#fetchHistoryMessagesByOptions,ChatManager#fetchSupportedLanguages,ChatManager#translateMessage, andChatManager#getMessageCount. - A crash occurred under extreme network conditions.
- Applications using React Native 0.77, 0.78, 0.79, or 0.80 failed to compile when integrating the Chat SDK.
- Conversation types were converted incorrectly on iOS.
EMFetchMessageOptionwas converted incorrectly on Android.- No API was available to check whether the current user was on a chat room's mute list.
- Circular dependencies existed between files.
v1.3.6
Released on May 7, 2026.
Improvements
This release includes the following enhancements:
- Enhanced security by adding access checks for message attachments. For example, if you receive an image message in a group and forward it to others outside the group, they cannot download the image.
v1.3.5
Released on November 24, 2025.
New features
- Added a function to enable chat room members to check if they are on the mute list of a chat room.
- Added support for 16 KB page size for compatibility with Android 15 or higher.
Issues fixed
- Fixed bugs related to the chatroom mute list.
v1.3.4
Released on June 05, 2025.
Issues fixed
- The app occasionally crashed when handling recall notifications on the iOS platform.
v1.3.2
Released on February 11, 2025.
Issues fixed
- Compilation error on the Android platform when using React Native 0.76.
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.
- The following issues are fixed for the React Native Chat SDK:
- The error that
CMakeLists.txtcould not be found is reported during compilation on the Android platform. - The data conversion issue on the Android platform.
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
ChatMessageSearchScopeduring keyword-based search.ChatMessageSearchScope: Includes three message search scopes: message content, message extension information, and both.ChatManager#getMsgsWithKeyword: Searches for messages in all conversations by search scope.ChatManager#getConvMsgsWithKeyword: Searches for messages in a conversation by search scope.
- Added the function of tagging a conversation:
ChatConversationFetchOptions: 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 conversation tag by settingChatConversationFetchOptions.ChatConversation#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
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
ChatGroupManager#fetchJoinedGroupCountmethod to allow the current user to retrieve the total number of joined groups. - Added a 706 error code that occurs when the chat room owner leaves the chat room.
ChatOptions#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 callsleaveChatRoom. - Added the 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.ChatConversation#getPinnedMessages: Gets the list of pinned messages in a local conversation.ChatMessagePinInfo: Includes the operator that pins or unpins the message and the operation time.ChatMessage#pinInfo: Includes the message pinning information.ChatMessageEventListener#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 theChatGroupEventListener#onRequestToJoinDeclinedevent 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 theChatMessageEventListener#onMessagesReceivedevent. - Added the support for returning the modified custom message via the
ChatMessageEventListener#onMessageContentChangedevent if the message is modified via the RESTful API.
Improvements
- 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 it 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#loginWithAgoraTokenandChatClient#loginmethods deprecated. Use theloginWithTokenmethod 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. - Removed the
secretparameter from the object of the created message. This parameter is generated by the server and can be obtained after the message is successfully sent. - Marked the following methods deprecated:
getMessagesWithKeyword: Replaced bygetMsgsWithKeyword.getMessages: Replaced bygetMsgs.getMessageWithTimestamp: Replaced bygetMsgWithTimestamp.getMessagesWithMsgType: Replaced bygetConvMsgsWithMsgType.searchMsgFromDB: Replaced bygetMsgsWithMsgType.
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 a logged-out user that calls the
leaveChatRoommethod. - Members in a group are counted twice in certain use-cases.
- The data reporting module crashes occasionally.
- The app crashes when the
ChatManager#updateMessagemethod is called in certain use-cases.
v1.2.1
Released on February 2, 2024.
Improvements
- Updated native Android dependencies to support Android 14 (API34).
v1.2.0
Released on December 6, 2023.
New features
- Upgraded React-Native from 0.66.5 to 0.71.11.
- Added the function of forwarding multiple messages:
ChatMessage.createCombineMessage: Creates a combined message.ChatManager.fetchCombineMessageDetail: Retrieves the original messages included in the combined message.
- Added the function of modifying sent messages.
ChatManager.modifyMessageBody: Modifies a sent text message.ChatEvents.ChatMessageEventListener.onMessageContentChanged: Occurs when a sent message is modified. The message recipient receives this callback.
- Added the
ChatManager.fetchConversationsFromServerWithCursormethod to retrieve the conversation list from the server with pagination. - Added the function of pinning a conversation:
ChatManager.pinConversation: Pins a conversation.ChatManager.fetchPinnedConversationsFromServerWithCursor: Retrieves a list of pinned conversations from the server.
- Marked the
ChatManager.fetchAllConversationsmethod deprecated. - Added the
ChatManager.fetchHistoryMessagesByOptionsmethod to retrieve historical messages of a conversation from the server according toChatFetchMessageOptions, the parameter configuration class for pulling historical messages. - Added
ChatFetchMessageOptionsas the parameter configuration class for pulling historical messages from the server. - Added the function of managing custom attributes of group members:
ChatGroupManager.setMemberAttribute: Sets custom attributes of a group member.ChatGroupManager.fetchMemberAttributes: Retrieves custom attributes of a group member from the server.ChatGroupEventListener.onMemberAttributesChanged: Occurs when a custom attribute is changed for a group member.
- Added the
ChatManager.deleteMessagesWithTimestampmethod to delete messages sent or received in a certain period from the local database. - Added the
ChatOptions#enableEmptyConversationoption to determine whether to include empty conversations while loading conversations from the database. - Added the
reasonparameter toChatRoomEventListener.onRemovedso that the member removed from the chat room knows the removal reason. - Added the
ChatPushManager.selectPushTemplatemethod to allow the message recipient to receive offline message notifications according to the custom push template. - Added the
ChatPushManager.fetchSelectedPushTemplatemethod to retrieve the push template used for offline push notifications. - Added the support for user tokens in the following methods:
ChatClient#getLoggedInDevicesFromServer: 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 log callback API
ChatLog.handler. - Added the
Listattribute inonMessageReactionDidChange:MessageReactionOperation#getUserId: The user ID of the operator.MessageReactionOperation#getReaction: The changed Reaction.MessageReactionOperation#getOperation: The operation.
- Added the following events:
ChatEvents.ChatConnectEventListener.onAppActiveNumberReachLimit: Occurs when the number of daily active users (DAU) or monthly active users (MAU) for the app has reached the upper limit.ChatEvents.ChatConnectEventListener.onUserDidRemoveFromServer: Occurs when the user is removed.ChatEvents.ChatConnectEventListener.onUserDidForbidByServer: Occurs when the user is blocked by the server.ChatEvents.ChatConnectEventListener.onUserDidLoginTooManyDevice: Occurs when the user's number of login devices exceeds the maximum allowed.ChatEvents.ChatConnectEventListener.onUserKickedByOtherDevice: Occurs when the user is kicked out of the app on the current device because the user has logged in to another device.ChatEvents.ChatConnectEventListener.onUserAuthenticationFailed: Occurs when the authentication fails.ChatEvents.ChatMultiDeviceEventListener.onMessageRemoved:Occurs when historical messages in a conversation are deleted from the server on one device. This event is received by other devices.ChatEvents.ChatMultiDeviceEvent.CONVERSATION_PINNED: Occurs when a conversation is pinned on one device. This event is received by other devices.ChatEvents.ChatMultiDeviceEvent.CONVERSATION_UNPINNED: Occurs when a conversation is unpinned on one device. This event is received by other devices.ChatEvents.ChatMultiDeviceEvent.CONVERSATION_DELETED: Occurs when a conversation is deleted on one device. This event is received by other devices.
Improvements
- Optimized disconnection notifications by showing an independent notification when the server breaks the connection to the app. In this case, the users can check the disconnection reason.
- Optimized git commit specifications with commitlint to make sure that the committed code follows the specifications.
- Optimized git commit with Lefthook by using Gitleaks to detect sensitive information.
- Renamed
ChatManager.deleteAllMessagestodeleteConversationAllMessages. - Renamed
ChatEvents.ChatRoomEventListener.onRemovedtoonMemberRemoved. - Renamed
ChatEvents.ChatGroupEventListener.onUserRemovedtoonMemberRemoved. - Renamed
ChatEvents.ChatRoomEventListener.onChatRoomDestroyedtoonDestroyed. - Renamed
ChatEvents.ChatGroupEventListener.onGroupDestroyedtoonDestroyed. - Deleted the
errorCodeparameter fromChatEvents.ChatConnectEventListener.onDisconnected.
Issues fixed
The app crashes when a Reaction is added for a message on Android.
v1.1.3
Released on July 21, 2023.
Issues fixed
- On the Android platform, calling the
addReactionmethod caused a crash. - Updated the value of
homepagein thepackage.jsonfile tohttps://www.npmjs.com/package/react-native-agora-chat. - Updated the value of
authorin thepackage.jsonfile toAsterisk (https://github.com/asteriskzuo).
v1.1.2
Released on June 30, 2023.
Issues fixed
- Optimized the video messaging function on the iOS platform. Messages using the
file://local path protocol can now be sent successfully. - Updated the definition of the
fetchHistoryMessagesmethod. - No new token is returned when you call the
renewAgoraTokenmethod. - Issues with sending video messages on the Android platform.
v1.1.1
Released on April 28, 2023.
Issues fixed
Upon a call to the ChatGroupManager#fetchJoinedGroupsFromServer method, the returned extension field was empty for the joined public groups.
v1.1.0
Released on April 28, 2023.
New features
- Upgrades the iOS and Android native platforms that the React Native platform depends on to v1.1.0.
- Adds the function of managing custom chat room attributes. See Manage chat room attributes.
- Adds the
ChatManager#fetchConversationsFromServerWithPagemethod 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#messagePrioritymethod to implement the chat room message priority function. 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
- Removes the sensitive information from the test data.
- Renames the
inviterUsermethod in theChatGroupManagerclass toinviteUser. - Renames
GROUP_ADD_USER_WHITE_LISTin the enumeration typeChatMultiDeviceEventtoGROUP_ADD_USER_ALLOW_LIST. - Renames
GROUP_REMOVE_USER_WHITE_LISTin the enumeration typeChatMultiDeviceEventtoGROUP_REMOVE_USER_ALLOW_LIST.
Issues fixed
- Some insecure code of native platforms.
- The issue of failing to retrieve conversations.
- The potential deadlock issue caused by a callback method that repeatedly enters the main thread for execution. This issue occurs only on the iOS platform.
v1.0.11
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. - Crashes in rare use-cases.
v1.0.10
Released on November 22, 2022.
New features
Added two events to the ChatGroupEventListener class:
onDetailChanged: When group details change.onStateChanged: When a group is enabled or disabled.
Issues fixed
- The overlimit issue during JSON conversion on the Android platform.
- Failures in getting a large number of messages from the server in 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.
Compatibility changes
The unSubscribe method is renamed unsubscribe.
New features
- Adds the
setConversationExtensionmethod to set the conversation extension information. - Adds the
insertMessagemethod to insert a message. - Adds the
deleteMessagesBeforeTimestampmethod to delete messages before a specified timestamp. - Adds the
getThreadConversationmethod to get a specified thread conversation or create the thread conversation if the conversation does not exist. - Adds the
isChatThreadattribute toChatConversationto check whether a conversation is a thread conversation. - Adds
ChatPushManagerfor the push notification configuration. - Adds
ChatPushConfigfor the Firebase Cloud Messaging (FCM) configuration. - Adds the
pushConfigmethod inChatOptionsfor the push initialization configuration. - Adds the
updatePushConfigmethod inChatClientfor the push configuration update.
Improvements
- Upgraded the underlying native SDKs (for Android and iOS) to v1.0.7.
- Made the listener methods optional.
- Updated the release script.
- Updated the demo.
Issues fixed
JSON parsing error of the type field in several methods.
v1.0.6
Released on July 22, 2022.
Compatibility changes
The following APIs are renamed:
deleteRemoteConversationis renamedremoveConversationFromServer.loadAllConversationsis renamedgetAllConversations.getConversationsFromServeris renamedfetchAllConversations.getUnreadMessageCountis renamedgetUnreadCount.fetchLatestMessageis renamedgetLatestMessage.fetchLastReceivedMessageis renamedgetLatestReceivedMessage.unreadCountis renamedgetConversationUnreadCount.getMessagesFromTimeis renamedgetMessageWithTimestamp.WhiteListis renamedAllowList.BlackListis renamedBlockList.
The following API are removed:
getMessageByIdinsertMessageappendMessage
New features
- Adds a
isOnlinefield in chat messages.
Improvements
- Updated the API example.
- The dependent native SDK (iOS and Android) was upgraded to v3.9.4.
- React-Native was upgraded to 0.66.4 LTS version.
- The Android platform no longer needed to perform additional operations.
agora-react-native-chatwas changed toreact-native-agora-chat.
Issues fixed
- Type declaration entry point was incorrect.
v1.0.5
Released on June 17.
This is the first release for the Chat C# SDK, which enables you to add real-time chatting functionalities to a Unity or Windows app. Major features include the following:
- Sending and receiving messages in one-to-one chats, chat groups, and chatrooms.
- Retrieving and managing conversations and messages.
- Managing chat groups and chatrooms.
- 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:
