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#MemberCountattribute. This count updates when members join or leave the chat room. - The chat room-wide mute status, using the
Room#IsAllMemberMutedattribute. This status updates when a mute or unmute event is received. - The chat room creation time, using the new
Room#CreateTimeStampattribute. - Whether the current user is on the chat room allow list, using the new
Room#IsInAllowListattribute. - The current user's mute expiration time, using the
Room#MuteUntilTimeStampattribute.
- The current member count, using the
- Added the
IRoomManagerDelegate#OnMuteListAddedFromRoom(string roomId, Dictionary<string, long> mutes)event, which provides the muted members' user IDs and their mute expiration timestamps through themutesparameter. This event deprecates the oldIRoomManagerDelegate#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#FromIdsattribute replaces the originalFetchServerMessagesOption#Fromattribute. 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 (usingChatManager#LoadMessages) by message ID. For details, see Retrieve local messages by message ID. - Added the
IGroupManagerDelegate#OnMembersJoinedFromGroupandIGroupManagerDelegate#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 deprecateIGroupManagerDelegate#OnMemberJoinedFromGroupandIGroupManagerDelegate#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
IConnectionDelegate#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
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
TYPEfield was empty in theIChatThreadManagerDelegate#OnUserKickOutOfChatThreadevent. IChatManagerDelegate#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#GetConversationsFromServerWithCursororChatManager#GetConversationsFromServerWithPagedid 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, callChatManager#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
RoomObject:RoomIdMemberCountCreateTimeStampIsAllMemberMutedIsInAllowListMuteUntilTimeStamp
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
infoparameter toOnLoggedOtherDeviceto 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#DeleteAllMessagesAndConversationsmethod to uni-directionally clear all conversations and messages in them. - Added the function of searching for messages by search scope in
MessageSearchScopeduring 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#Broadcastproperty to indicate whether the message is a broadcast message sent via a RESTful API to all chat rooms under an app. - Added the
Message#DeliverOnlineOnlyfield to set whether the message is delivered only when the recipient(s) is/are online. If this field is set totrue, the message is discarded when the recipient is offline. - Added the
GroupManager#FetchMyGroupsCountmethod to allow the current user to retrieve the total number of joined groups. - Added the error code 706
CHATROOM_OWNER_NOT_ALLOW_LEAVEthat occurs when chat room owner leaves the chat room. IfOptions#IsRoomOwnerLeaveAllowedis set tofalseduring 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 theLeaveRoommethod to leave the chat room. - Added the support for retrieval of historical messages of chat rooms from the server.
- Added the
Options#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
Message#IsContentReplacedproperty 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#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 theIGroupManagerDelegate#OnRequestToJoinDeclinedFromGroupevent to respectively indicate the user that applies to join the group and the user that declines the join request. - Added the
Options#IncludeSendMessageInMessageListenerproperty to set whether to return the successfully sent message in theMessageListener#onMessageReceivedevent. - Added the
SDKClient#LoginWithTokenmethod for login with the user ID and user token. - Added the
SDKClient#RenewTokenmethod for users to renew a token. - Added the support for returning the modified custom message via the
IChatManagerDelegate#OnMessageContentChangedevent if the message is modified via the RESTful API.
Improvements
- Marked the
SDKClient#LoginWithAgoraTokenandSDKClient#Loginmethods deprecated. Use theLoginWithTokenmethod instead. - Marked the
SDKClient#RenewAgoraTokenmethod deprecated. Use theRenewTokenmethod instead. - Added the
Facilitylibrary 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#MarkAllConversationsAsReadmethod 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
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 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
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 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
LeaveRoommethod. - 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#UpdateMessagemethod 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#GetConversationsFromServerWithCursormethod to retrieve the conversation list from the server or retrieve the list of pinned conversations from the server. Marked theChatManager#GetConversationsFromServermethod deprecated. - Added
FetchServerMessagesOptionas the parameter configuration class for pulling historical messages from the server. - Added the
ChatManager#FetchHistoryMessagesFromServerBymethod to retrieve historical messages of a conversation from the server according toFetchServerMessagesOption, the parameter configuration class for pulling historical messages. - Added the
Conversation#DeleteMessagesmethod 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
Optionsclass: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#OnAppActiveNumberReachLimitationcallback 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:
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
Listattribute inMessageReactionDidChange:MessageReactionChange#ReactionList: The changed Reaction list.MessageReactionChange#OperationList: The changed Reaction operation list.
- Added the error code
MESSAGE_SIZE_LIMITthat is returned when the body of the message to be sent exceeds the upper limit.
Improvements
- Renamed
kickAllDevicetoKickAllDevice. - Corrected misspellings in
MessageReaction. - Changed
RectiontoReaction. - Corrected misspellings in
MessageBody: - Changed
ThumbnaiRemotePathtoThumbnailRemotePath. - Changed
ThumbnaiSecrettoThumbnailSecret. - Changed
ThumbnaiDownStatustoThumbnailDownStatus.
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#GetConversationsFromServerWithPagemethod 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#Priorityattribute 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 totrue. - 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
- Adds the following methods to the
SDKClientclass: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.
- Adds the following methods to the
RoomManagerclass: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.
- Adds the following callbacks to the
IRoomManagerDelegateclass: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.
- Adds the following callbacks to the
IConnectionDelegateclass: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.
- Adds the following attributes to the
Groupclass: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
- Changed the name space from ChatSDK to AgoraChat.
- Renamed the
handleparameter in the methods ascallback. - Removed the
pushmanagerclass. - Capitalized the name of each field in the
UserInfoclass. - Removed the
UINT32andJSONSTRINGtypes from theAttributeValuesubclass in theMessageclass. - Removed the
iparameter of the integer type from theOnDisconnectedmethod. - 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 fromListtoDictionary.FetchRoomMuteList: The data type of the returned result is changed fromListtoDictionary.
- Renamed the following methods in the
GroupManagerclass:AddGroupWhiteListwas renamedAddGroupAllowList.CheckIfInGroupWhiteListwas renamedCheckIfInGroupAllowList.GetGroupWhiteListFromServerwas renamedGetGroupAllowListFromServer.RemoveGroupWhiteListwas renamedRemoveGroupAllowList.
- Renamed the following methods in the
RoomManagerclass:AddWhiteListMemberswas renamedAddAllowListMembers.RemoveWhiteListMemberswas renamedRemoveAllowListMembers.
- Changed the
ReactionListattribute in theMessageclass to be a method. - Changed the visibility of options in
Optionsin theGroupclass from public to internal. - Made the following adjustments in the
IGroupManagerDelegateclass:OnAddWhiteListMembersFromGroupwas renamedOnAddAllowListMembersFromGroup.OnRemoveWhiteListMembersFromGroupwas renamedOnRemoveAllowListMembersFromGroup.- The
reasonparameter was removed from theOnInvitationAcceptedFromGroupmethod. - The
groupNameanddeclinerparameters were removed from theOnRequestToJoinDeclinedFromGroupmethod.
v1.0.8
v1.0.8 was released on November 22, 2022.
Improvements
- Removed redundant SDK logs.
- Changed the namespace from
ChatSDKtoAgoraChat.
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:
- Enable and Configure Chat
- Chat SDK quickstart
- Messages
- Chat Group
- Chat Room
- API Reference
