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 Room#MemberCount attribute. This count updates when members join or leave the chat room.
    • The chat room-wide mute status, using the Room#IsAllMemberMuted attribute. This status updates when a mute or unmute event is received.
    • The chat room creation time, using the new Room#CreateTimeStamp attribute.
    • Whether the current user is on the chat room allow list, using the new Room#IsInAllowList attribute.
    • The current user's mute expiration time, using the Room#MuteUntilTimeStamp attribute.
  • Added the IRoomManagerDelegate#OnMuteListAddedFromRoom(string roomId, Dictionary<string, long> mutes) event, which provides the muted members' user IDs and their mute expiration timestamps through the mutes parameter. This event deprecates the old IRoomManagerDelegate#OnMuteListAddedFromRoom(string roomId, List<string> mutes, long expireTime) event. For details, see Listen for chat room events.
  • Added support for retrieving roaming messages sent by specific group members from the server. The FetchServerMessagesOption#FromIds attribute replaces the original FetchServerMessagesOption#From attribute. 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 local message (using ChatManager#LoadMessage) or multiple local messages (using ChatManager#LoadMessages) by message ID. For details, see Retrieve local messages by message ID.
  • Added the IGroupManagerDelegate#OnMembersJoinedFromGroup and IGroupManagerDelegate#OnMembersExitedFromGroup 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 IGroupManagerDelegate#OnMemberJoinedFromGroup and IGroupManagerDelegate#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_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 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.

  • 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 IConnectionDelegate#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 GroupManager#FetchGroupMemberInfoFromServer. For details, see Retrieve the chat group member list.

  • Improved the loading performance of the local conversation list when the latest message is an attachment by removing redundant file length checks.

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

Issues fixed

  • Messages in memory were not deleted when the corresponding local conversation was removed.
  • The TYPE field was empty in the IChatThreadManagerDelegate#OnUserKickOutOfChatThread event.
  • IChatManagerDelegate#OnMessageContentChanged did 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_BUSY error occurred.
  • The latest message in a conversation retrieved from the server with ChatManager#GetConversationsFromServerWithCursor or ChatManager#GetConversationsFromServerWithPage did not contain translations or message reactions.
  • A crash occurred under extreme network conditions.

v1.3.1

v1.3.1 was released on March 10, 2025.

Improvements

  • Adds support for pinning or unpinning messages in one-to-one conversations. To pin or unpin a one-to-one chat message, call ChatManager#PinMessage. To get pinned messages from a one-to-one conversation from the server, call ChatManager#GetPinnedMessagesFromServer.

  • Provides new users of a chat room with more chat room information. When users join a chat room, they can obtain the following information about the chat room using the Room Object:

    • RoomId
    • MemberCount
    • CreateTimeStamp
    • IsAllMemberMuted
    • IsInAllowList
    • MuteUntilTimeStamp

    This feature is available only for Windows, Unity Mac, and Unity Windows platforms.

  • Delivers a more accurate chat room member count by optimizing the way to update the member count when members join or leave a chat room.

  • Adds the info parameter to OnLoggedOtherDevice to provide device extension information. If a newly logged-in device forces an existing device offline due to exceeding the login limit, the offline device can identify the responsible device through the logout callback containing the device extension information.

v1.3.0

v1.3.0 was released on December 11, 2024.

New features

  • Added the ChatManager#DeleteAllMessagesAndConversations method to uni-directionally clear all conversations and messages in them.
  • Added the function of searching for messages by search scope in MessageSearchScope during keyword-based search.
    • MessageSearchScope: Includes three message search scopes: the message content, message extension information, and both.
    • ChatManager#SearchMsgFromDB(string, long, in, string, MessageSearchDirection, MessageSearchScope, ValueCallBack>): Searches for messages in all conversations by search scope.
    • Conversation#LoadMessagesWithScope(string, MessageSearchScope, long, int, string, MessageSearchDirection, ValueCallBack>): Searches for messages in a conversation by search scope.
  • Added the function of marking a conversation:
    • ChatManager#MarkConversations: Marks or unmarks a conversation.
    • ChatManager#GetConversationsFromServerWithCursor: Gets the conversations from the server by conversation mark.
    • Conversation#Marks: Gets all marks of a local conversation.
    • MultiDevicesOperation#CONVERSATION_MARK: Occurs on other devices when a conversation is marked or unmarked on one device.
  • Added the Message#Broadcast property to indicate whether the message is a broadcast message sent via a RESTful API to all chat rooms under an app.
  • Added the Message#DeliverOnlineOnly field to set whether the message is delivered only when the recipient(s) is/are online. If this field is set to true, the message is discarded when the recipient is offline.
  • Added the GroupManager#FetchMyGroupsCount method to allow the current user to retrieve the total number of joined groups.
  • Added the error code 706 CHATROOM_OWNER_NOT_ALLOW_LEAVE that occurs when chat room owner leaves the chat room. If Options#IsRoomOwnerLeaveAllowed is set to false during SDK initialization, the chat room is not allowed to leave the chat room. In this case, error 706 is reported if the chat room owner calls the LeaveRoom method to leave the chat room.
  • Added the support for retrieval of historical messages of chat rooms from the server.
  • Added the Options#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 Message#IsContentReplaced property to indicate whether the content of the text message is replaced during text moderation.
  • Added the function of pinning a message:
    • ChatManager#PinMessage: Pins or unpins a message.
    • ChatManager#GetPinnedMessagesFromServer: Gets the list of pinned messages in a conversation from the server.
    • Conversation#PinnedMessages: Gets the list of pinned messages in a local conversation.
    • Message#PinnedInfo: Gets the pinning information of the message.
    • PinnedInfo: Includes the operator that pins or unpins the message and the operation time.
    • IChatManagerDelegate#OnMessagePinChanged: Occurs when the message pinning status changed. 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 Options#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 IGroupManagerDelegate#OnRequestToJoinDeclinedFromGroup event to respectively indicate the user that applies to join the group and the user that declines the join request.
  • Added the Options#IncludeSendMessageInMessageListener property to set whether to return the successfully sent message in the MessageListener#onMessageReceived event.
  • Added the SDKClient#LoginWithToken method for login with the user ID and user token.
  • Added the SDKClient#RenewToken method for users to renew a token.
  • Added the support for returning the modified custom message via the IChatManagerDelegate#OnMessageContentChanged event if the message is modified via the RESTful API.

Improvements

  • Marked the SDKClient#LoginWithAgoraToken and SDKClient#Login methods deprecated. Use the LoginWithToken method instead.
  • Marked the SDKClient#RenewAgoraToken method deprecated. Use the RenewToken method instead.
  • Added the Facility library to improve the DNS acquisition logic and support data reporting.
  • Switched ChatManager#SearchMsgFromDB(string, long, int, string, MessageSearchDirection, ValueCallBack>) from a synchronous method to an asynchronous one.
  • Switched the TCP sockets from the blocking mode to the non-blocking mode.
  • Supported the forwarding of 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#MarkAllConversationsAsRead method by marking all conversations read more efficiently.
  • Fine tuned the error message for token-based login for the sake of accuracy.
  • 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.
  • Supported for uploading the attachment by fragment when sending an attachment message.
  • Optimized the way messages are resent.
  • 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 privacy protocol PrivacyInfo.xcprivacy.

Issues fixed

  • The database name is encrypted, but contents in the database are still in plain text.
  • 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 login to it.
  • The SDK reconnects to the server twice after the network is back to normal.
  • An incorrect error message is returned for an unlogged-in user that calls the LeaveRoom method.
  • The members in a group are double counted in certain use-cases.
  • The data reporting module crashes occasionally.
  • The SDK is instantiated repeatedly when the ChatManager#UpdateMessage method is called frequently for SDK initialization in multi-thread use-cases.

v1.2.0

v1.2.0 was released on December 6, 2023.

New features

  • Added the function of forwarding multiple messages:
    • ChatMessage.createCombineMessage: Creates a combined message.
    • ChatManager#FetchCombineMessageDetail: Downloads and parses combined messages.
    • ChatManager.fetchCombineMessageDetail: Retrieves the original messages included in the combined message.:
    • Message#CreateCombineSendMessage: Creates a combined message.
  • Added the function of modifying sent messages:
    • ChatManager#ModifyMessage: Modifies a sent text message.
    • IChatManagerDelegate#OnMessageContentChanged: Occurs when a sent message is modified. The message recipient receives this callback.
  • Added the function of pinning a conversation:
    • ChatManager#PinConversation: Pins a conversation.
  • Added the ChatManager#GetConversationsFromServerWithCursor method to retrieve the conversation list from the server or retrieve the list of pinned conversations from the server. Marked the ChatManager#GetConversationsFromServer method deprecated.
  • Added FetchServerMessagesOption as the parameter configuration class for pulling historical messages from the server.
  • Added the ChatManager#FetchHistoryMessagesFromServerBy method to retrieve historical messages of a conversation from the server according to FetchServerMessagesOption, the parameter configuration class for pulling historical messages.
  • Added the Conversation#DeleteMessages method to delete messages sent or received in a certain period from the local database.
  • Added the function of managing custom attributes of group members:
    • GroupManager#SetMemberAttributes: Sets custom attributes of a group member.
    • GroupManager#FetchMemberAttributes: Retrieves custom attributes of group members.
    • IGroupManagerDelegate#OnUpdateMemberAttributesFromGroup: Occurs when a custom attribute is changed for a group member.
  • Added the following options to the Options class:
    • Options#SDKDataPath: Specifies the underlying storage path for SDK data.
    • Options#MyUUID: Specifies a custom UUID for the current device.
    • Options#EnableEmptyConversation: Determines whether to include empty conversations while loading conversations from the database.
  • Added the IConnectionDelegate#OnAppActiveNumberReachLimitation callback 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#OnRoamDeleteMultiDevicesEvent callback 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:
    • SDKClient#GetLoggedInDevicesFromServerWithToken: Retrieves the list of online login devices of a user.
    • SDKClient#KickDeviceWithToken: Kicks a user out of the app on a device.
    • SDKClient#KickAllDevicesWithToken: Kicks a user out of the app on all devices.
  • Added multi-device operations:
    • MultiDevicesOperation#SET_METADATA: Custom attributes of are set for a group member on one device. This event is received by other devices.
    • MultiDevicesOperation#DELETE_METADATA: Custom attributes are deleted for a group member on one device. This event is received by other devices.
    • MultiDevicesOperation#GROUP_MEMBER_METADATA_CHANGED: Custom attributes are changed for a group member on one device. This event is received by other devices.
    • MultiDevicesOperation#CONVERSATION_PINNED: A conversation is pinned on one device. This event is received by other devices.
    • MultiDevicesOperation#CONVERSATION_UNPINNED: A conversation is unpinned on one device. This event is received by other devices.
    • MultiDevicesOperation#CONVERSATION_DELETED: A conversation is deleted from one device. This event is received by other devices.
  • Added the List attribute in MessageReactionDidChange:
    • MessageReactionChange#ReactionList: The changed Reaction list.
    • MessageReactionChange#OperationList: The changed Reaction operation list.
  • Added the error code MESSAGE_SIZE_LIMIT that is returned when the body of the message to be sent exceeds the upper limit.

Improvements

  • Renamed kickAllDevice to KickAllDevice.
  • Corrected misspellings in MessageReaction.
  • Changed Rection to Reaction.
  • Corrected misspellings in MessageBody:
  • Changed ThumbnaiRemotePath to ThumbnailRemotePath.
  • Changed ThumbnaiSecret to ThumbnailSecret.
  • Changed ThumbnaiDownStatus to ThumbnailDownStatus.

Issues fixed

  • The callback handler cannot be found when an SDK callback is triggered.
  • The transcoding issue of character sets handled by the SDK.

v1.1.0

v1.1.0 was released on April 28, 2023.

New features

  • 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#GetConversationsFromServerWithPage 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 Message#Priority attribute 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

Modifies the SDKClient#InitWithOptionsInitWithOptions method by adding the return result for the App Key format check.

Issues fixed

  • Some login bugs.
  • The issue with the read flag for the sent messages being set to false. After this issue is fixed, the SDK sets the read flag of a sent message to true.
  • The names of encrypted database files are not properly generated. If you need historical messages upon upgrade to v1.1.0, first pull data from the server.

v1.0.9

v1.0.9 was released on February 1, 2023.

New features

  1. Adds the following methods to the SDKClient class:
    • GetLoggedInDevicesFromServer: Gets the list of online devices on which you have logged in with a specified account.
    • KickDevice: Logs out from a specified account on a device.
    • kickAllDevices: Logs out from a specified account on all devices.
  2. Adds the following methods to the RoomManager class:
    • FetchAllowListFromServer: Gets the allow list of a chat room from the server.
    • CheckIfInRoomAllowList: Checks whether the current member is on the chat room blocklist.
    • GetChatRoom: Gets the details of a chat room from the memory.
    • UnMuteAllRoomMembers: Unmutes all members of a chat room.
  3. Adds the following callbacks to the IRoomManagerDelegate class:
    • OnSpecificationChangedFromRoom: Occurs when specifications of a chat room are changed.
    • OnAddAllowListMembersFromChatroom: Occurs when a chat room member(s) is/are added to the allow list of a chat room.
    • OnRemoveAllowListMembersFromChatroom: Occurs when a chat room member(s) is/are removed from the allow list of a chat room.
    • OnRemoveFromRoomByOffline: Occurs when a member is removed from a chat room because he or she gets offline.
  4. Adds the following callbacks to the IConnectionDelegate class:
    • OnLoggedOtherDevice: Occurs when the user logs in to another device with the current account.
    • OnRemovedFromServer:Occurs when the current user account is removed from the server.
    • OnForbidByServer: Occurs when the current user account is banned by the server.
    • OnChangedIMPwd:Occurs when the user is forced to log out of the current account because the login password is changed.
    • OnLoginTooManyDevice: Occurs when the user is forced to log out of the current account because she or he has exceeded the maximum number of devices allowed for this account.
    • OnKickedByOtherDevice:Occurs when the user is forced to log out of the current account from the current device due to the login to another device.
    • OnAuthFailed: Occurs when the user is forced to log out of the current account due to an authentication failure.
  5. Adds the following attributes to the Group class:
    • IsMemberOnly: Whether users can join a group only via a join request or a group invitation, but cannot join freely.
    • IsMemberAllowToInvite: Whether all the group members, other than the group owner and admins, can invite users to join the group.
    • MaxUserCount:The maximum number of users that can join the group.
    • Ext: The custom group extension information.
    • IsDisabled: Whether the group is disabled.

Improvements

  1. Changed the name space from ChatSDK to AgoraChat.
  2. Renamed the handle parameter in the methods as callback.
  3. Removed the pushmanager class.
  4. Capitalized the name of each field in the UserInfo class.
  5. Removed the UINT32 and JSONSTRING types from the AttributeValue subclass in the Message class.
  6. Removed the i parameter of the integer type from the OnDisconnected method.
  7. Adjusted the returned result of the following methods:
    • importmessage: When this method is called, the asynchronous callback is triggered instead of the result returned directly.
    • GetGroupMuteListFromServer: The data type of the returned result is changed from List to Dictionary.
    • FetchRoomMuteList: The data type of the returned result is changed from List to Dictionary.
  8. Renamed the following methods in the GroupManager class:
    • AddGroupWhiteList was renamed AddGroupAllowList.
    • CheckIfInGroupWhiteList was renamed CheckIfInGroupAllowList.
    • GetGroupWhiteListFromServer was renamed GetGroupAllowListFromServer.
    • RemoveGroupWhiteList was renamed RemoveGroupAllowList.
  9. Renamed the following methods in the RoomManager class:
    • AddWhiteListMembers was renamed AddAllowListMembers.
    • RemoveWhiteListMembers was renamed RemoveAllowListMembers.
  10. Changed the ReactionList attribute in the Message class to be a method.
  11. Changed the visibility of options in Options in the Group class from public to internal.
  12. Made the following adjustments in the IGroupManagerDelegate class:
    • OnAddWhiteListMembersFromGroup was renamed OnAddAllowListMembersFromGroup.
    • OnRemoveWhiteListMembersFromGroup was renamed OnRemoveAllowListMembersFromGroup.
    • The reason parameter was removed from the OnInvitationAcceptedFromGroup method.
    • The groupName and decliner parameters were removed from the OnRequestToJoinDeclinedFromGroup method.

v1.0.8

v1.0.8 was released on November 22, 2022.

Improvements

  • Removed redundant SDK logs.
  • Changed the namespace from ChatSDK to AgoraChat.

Issues fixed

  • Failures in getting a large number of messages from the server in rare use-cases.
  • The issue with incorrect data statistics.
  • Crashes caused by log printing in rare use-cases.
  • The issue with the connection listener occasionally failing to receive connection callbacks.

v1.0.5

v1.0.5 was released on August 12, 2022.

New features

  • Supports presence subscription, which allows users to subscribe to the presence of other users.
  • Supports reaction, which enables users to add reaction emojis to a specified message.
  • Supports message threading, which allows users to have in-depth discussions on a specific message, without disrupting the conversation flow.
  • Supports message translation, which allows users to translate messages.
  • Supports message reporting, which allows users to report illegal messages.

Improvements

  • Modified the way SDK handlers are managed.
  • Added SDK initialization detection points.
  • Allowed certain message attributes to be obtained in real time.

Issues fixed

  • Certain data structure conversion issues.
  • The JSON data was not properly converted into HTTP parameters.
  • Crashes caused by incompatible characters passed to parameters in HTTP requests.

v1.0.2

v1.0.2 was 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: