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 createGroupEx method, which supports setting a custom group avatar when creating a group. The original createGroup method 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#getMemberCount method. This count updates when members join or leave the chat room.
    • The chat room-wide mute status, using the ChatRoom#isAllMemberMuted method. This status updates when a mute or unmute event is received.
    • The chat room creation time, using the new ChatRoom#getCreateTimestamp method.
    • Whether the current user is on the chat room allow list, using the new ChatRoom#isInWhitelist method.
    • The current user's mute expiration time, using the ChatRoom#getMuteExpireTimestamp method.
  • Added the ChatRoomEventListener#onMuteListAddedV2 event, which provides the muted members' user IDs and their mute expiration timestamps through the mutes parameter. This event deprecates the old ChatRoomEventListener#onMuteListAdded 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 historical messages of the specified conversation.
  • Added support for retrieving messages sent by specific members in a local group conversation. The getConvMsgsWithKeyword method gains a senders parameter, which replaces the deprecated sender parameter. 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#onMembersJoined and ChatGroupEventListener#onMembersExited events, 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 deprecate ChatGroupEventListener#onMemberJoined and ChatGroupEventListener#onMemberExited. For details, see Listen for chat group events.
  • Added the onOfflineMessageSyncStart and onOfflineMessageSyncFinish events to the connection listener, so you can monitor when offline message synchronization from the server starts and finishes.
  • Added the ChatManager#getMessageCount method 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_name and app_name parameters, 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#modifyMsgBody method to support modifying more message types, replacing the deprecated ChatManager#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.

  • 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#onTokenWillExpire event: 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#fetchHistoryMessagesByOptions from undefined to an empty string ("") when the last page of roaming messages is returned.

  • Added the static constructors ChatOptions#withAppId and ChatOptions#withAppKey to initialize the SDK with an app ID or app key, replacing the deprecated ChatOptions constructor.

  • Added ChatGroupManager#fetchGroupInfoWithoutMembersFromServer to retrieve group information without member information, replacing the deprecated ChatGroupManager#fetchGroupInfoFromServer. To retrieve member information, call ChatGroupManager#fetchMemberInfoListFromServer.

  • Removed the deprecated ChatMessageEventListener#onMessagesRecalled event. Use ChatMessageEventListener#onMessagesRecalledInfo instead.

  • 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 applicationWillEnterForeground handling 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 FileProvider on 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 TYPE field was empty in the ChatMessageEventListener#onChatMessageThreadUserRemoved event.
  • A crash occurred on certain devices when retrieving the start and end times of the conversation Do Not Disturb (DND) settings.
  • ChatMessageEventListener#onMessageContentChanged did 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_BUSY error occurred.
  • The latest message in a conversation retrieved from the server with ChatManager#fetchConversationsFromServerWithCursor did 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 ChatUserInfoManager and ChatPresenceManager, as well as ChatManager#fetchHistoryMessagesByOptions, ChatManager#fetchSupportedLanguages, ChatManager#translateMessage, and ChatManager#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.
  • EMFetchMessageOption was 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#pinMessage or ChatManager#unpinMessage to pin or unpin a one-to-one chat message.
  • Optimized the connections to the server under weak network conditions for native platforms.

Issues fixed

  1. 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 nextkey is 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.
  1. The following issues are fixed for the React Native Chat SDK:
  • The error that CMakeLists.txt could 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#deleteAllMessageAndConversation method 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 ChatMessageSearchScope during 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 setting ChatConversationFetchOptions.
    • 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#isBroadcast property to indicate whether the message is a broadcast message sent via a RESTful API to all chat rooms under an app.
  • Added ChatMessage#deliverOnlineOnly property to set whether the message is delivered only when the recipient(s) is/are online. If this property is set to true, the message is discarded when the recipient is offline.
  • Added the ChatGroupManager#fetchJoinedGroupCount method 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#isChatRoomOwnerLeaveAllowed is set to false during 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 leaveChatRoom.
  • Added the support for retrieval of historical messages of chat rooms from the server.
  • Added the ChatOptions#useReplacedMessageContents property 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#enableEmptyConversation property to set whether to include empty conversations in the retrieved list of local conversations. This property is set during SDK initialization.
  • Added the applicant and decliner parameters to the ChatGroupEventListener#onRequestToJoinDeclined event to respectively indicate the user that applies to join the group and the user that declines the join request.
  • Added the ChatOptions#messagesReceiveCallbackIncludeSend property to set whether to return the successfully sent message in the ChatMessageEventListener#onMessagesReceived event.
  • Added the support for returning the modified custom message via the ChatMessageEventListener#onMessageContentChanged event 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#markAllConversationsAsRead method 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#loginWithAgoraToken and ChatClient#login methods deprecated. Use the loginWithToken method instead.
  • Fine tuned the error message for token-based login for accuracy.
  • Optimized the way messages are re-sent.
  • Removed the internal NetworkOnMainThreadException exception 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 secret parameter 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 by getMsgsWithKeyword.
    • getMessages: Replaced by getMsgs.
    • getMessageWithTimestamp: Replaced by getMsgWithTimestamp.
    • getMessagesWithMsgType: Replaced by getConvMsgsWithMsgType.
    • searchMsgFromDB: Replaced by getMsgsWithMsgType.

Issues fixed

  • For a modified message, the from property 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 leaveChatRoom method.
  • Members in a group are counted twice in certain use-cases.
  • The data reporting module crashes occasionally.
  • The app crashes when the ChatManager#updateMessage method 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.fetchConversationsFromServerWithCursor method 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.fetchAllConversations method deprecated.
  • Added the ChatManager.fetchHistoryMessagesByOptions method to retrieve historical messages of a conversation from the server according to ChatFetchMessageOptions, the parameter configuration class for pulling historical messages.
  • Added ChatFetchMessageOptions as 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.deleteMessagesWithTimestamp method to delete messages sent or received in a certain period from the local database.
  • Added the ChatOptions#enableEmptyConversation option to determine whether to include empty conversations while loading conversations from the database.
  • Added the reason parameter to ChatRoomEventListener.onRemoved so that the member removed from the chat room knows the removal reason.
  • Added the ChatPushManager.selectPushTemplate method to allow the message recipient to receive offline message notifications according to the custom push template.
  • Added the ChatPushManager.fetchSelectedPushTemplate method 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 List attribute in onMessageReactionDidChange:
    • 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.deleteAllMessages to deleteConversationAllMessages.
  • Renamed ChatEvents.ChatRoomEventListener.onRemoved to onMemberRemoved.
  • Renamed ChatEvents.ChatGroupEventListener.onUserRemoved to onMemberRemoved.
  • Renamed ChatEvents.ChatRoomEventListener.onChatRoomDestroyed to onDestroyed.
  • Renamed ChatEvents.ChatGroupEventListener.onGroupDestroyed to onDestroyed.
  • Deleted the errorCode parameter from ChatEvents.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 addReaction method caused a crash.
  • Updated the value of homepage in the package.json file to https://www.npmjs.com/package/react-native-agora-chat.
  • Updated the value of author in the package.json file to Asterisk (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 fetchHistoryMessages method.
  • No new token is returned when you call the renewAgoraToken method.
  • 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#fetchConversationsFromServerWithPage method 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#messagePriority method 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 inviterUser method in the ChatGroupManager class to inviteUser.
  • Renames GROUP_ADD_USER_WHITE_LIST in the enumeration type ChatMultiDeviceEvent to GROUP_ADD_USER_ALLOW_LIST.
  • Renames GROUP_REMOVE_USER_WHITE_LIST in the enumeration type ChatMultiDeviceEvent to GROUP_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 updateMessage method 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 setConversationExtension method to set the conversation extension information.
  • Adds the insertMessage method to insert a message.
  • Adds the deleteMessagesBeforeTimestamp method to delete messages before a specified timestamp.
  • Adds the getThreadConversation method to get a specified thread conversation or create the thread conversation if the conversation does not exist.
  • Adds the isChatThread attribute to ChatConversation to check whether a conversation is a thread conversation.
  • Adds ChatPushManager for the push notification configuration.
  • Adds ChatPushConfig for the Firebase Cloud Messaging (FCM) configuration.
  • Adds the pushConfig method in ChatOptions for the push initialization configuration.
  • Adds the updatePushConfig method in ChatClient for 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:

  • deleteRemoteConversation is renamed removeConversationFromServer.
  • loadAllConversations is renamed getAllConversations.
  • getConversationsFromServer is renamed fetchAllConversations.
  • getUnreadMessageCount is renamed getUnreadCount.
  • fetchLatestMessage is renamed getLatestMessage.
  • fetchLastReceivedMessage is renamed getLatestReceivedMessage.
  • unreadCount is renamed getConversationUnreadCount.
  • getMessagesFromTime is renamed getMessageWithTimestamp.
  • WhiteList is renamed AllowList.
  • BlackList is renamed BlockList.

The following API are removed:

  • getMessageById
  • insertMessage
  • appendMessage

New features

  • Adds a isOnline field 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-chat was changed to react-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: