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: 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 single conversation by search scope.
- Added the function of tagging a conversation:
ChatManager#MarkConversations: Tags or untags a conversation.ChatManager#GetConversationsFromServerWithCursor: Gets the conversations from the server by conversation tag.Conversation#Marks: Gets all tags of a local conversation.MultiDevicesOperation#CONVERSATION_MARK: Occurs on other devices when a conversation is tagged or untagged 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 groups they joined. - Added a 706
CHATROOM_OWNER_NOT_ALLOW_LEAVEerror code that occurs when the chat room owner leaves the chat room. IfOptions#IsRoomOwnerLeaveAllowedis set tofalseduring SDK initialization, the chat room owner is not allowed to leave. In this case, error 706 is reported if the chat room owner callsLeaveRoom. - 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 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
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. This issue is specific to the Unity SDK on Windows.
- 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. - Fine tuned the error message for token-based login for 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.
- Added support for uploading an attachment in fragments when sending an attachment message.
- 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 privacy protocol
PrivacyInfo.xcprivacy.
Issues fixed
- The database name is encrypted, but contents in the database are still in plain text. This issue is specific to the Unity SDK on Windows.
- 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
LeaveRoom. - Members in a group are counted twice in certain use-cases.
- The data reporting module crashes occasionally.
- The SDK is instantiated repeatedly when the
ChatManager#UpdateMessagemethod is called frequently for SDK initialization in multi-thread use-cases.
v1.2.2
v1.2.2 was released on November 12, 2024.
Fixed issues
- The SDK could sometimes execute
Clear_Resourcetwice when the app closed, occasionally leading to crashes. - Log retrieval issues for Windows and MacOS.
- In iOS,
FetchHistoryMessagesFromServerByfailed to retrieve message history if the option was empty. - An issue with unreasonable server time values for Windows and MacOS when calling
FetchHistoryMessagesFromServerBy.
Improvements
- Modified the error code for fetching chatroom info from the server: Changed
SERVER_NOT_REACHABLEtoEXCEED_SERVICE_LIMITwhen meeting the QPS limit for Windows and Mac.
v1.2.1
v1.2.1 was released on February 8, 2024.
Improvements
- Marked
DeInitfunction as obsolete. - Added support for the iOS platform setting in the
UNITY_EDITORmode.
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
- Supported the ARM64 mode on macOS.
- 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 underlying resources are not released when the SDK is not initialized.
- The issues in user attribute updates on Android and iOS systems.
v1.1.4
v1.1.4 was released on February 8, 2024.
Improvements
- Marked
DeInitfunction as obsolete. - Added support for the iOS platform setting in the
UNITY_EDITORmode.
v1.1.3
v1.1.3 was released on October 2, 2023.
Improvements
- Supports disabling domain reload in Enter Play Mode Options
- Supports setting the Managed Code Stripping Level property to High
- Supports changing the AppKey without restarting the IDE
v1.1.2
v1.1.2 was released on August 24, 2023.
Issues fixed
- Fixed the issue that the
messageReactionDidChangecallback leads to Unity suspend. - Fixed the issue that the
startMessageIdparameter does not work in theLoadMessagesAPI. - Fixed a rare crash where Chat SDK cannot find the callback handler.
New features
- You can now set
SDKDatapathin Chat SDK options. The default value isApplication.persistentDataPath; to enable the app user to retrieve their history locally, setSDKDatapathto ".". - The new
IsInitAPI helps you to check if you need to clear a resource in Chat SDK.
v1.1.1
v1.1.1 was released on June 8, 2023.
Issues fixed
- Using the
SDKClient.Instance.ChatManager.FetchHistoryMessagesFromServermethod on Android devices returned aNo value for typeerror message. - Callback-related bugs when sending video files on Android devices.
v1.1.0
v1.1.0 was released on April 28, 2023.
New features
- Upgrades the native platforms
iOSandAndroidthat the Unity platform depends on to v1.1.0. - Adds the function of managing custom chat room attributes to implement functions like seat control and synchronization in voice chat rooms. See Manage chat room attributes.
- Adds the
ChatManager#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
Modified the SDKClient#InitWithOptionsInitWithOptions method by adding the return result for the App Key format check.
Issues fixed
- Some login bugs.
- The issue that the read flag for the sent messages is 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. This issue is specific only to the Mac and Windows platforms for the Unity framework. If you need historical messages upon upgrade to v1.1.0, you are advised to 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 block list.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 block lists.
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:
RESTful API
v1.3.0
Added the following RESTful APIs:
- Modifying a text or custom message
- Sending a broadcast message to all chat rooms under an app
- Retrieving the contact list with pagination
- Binding or unbinding push information
- Retrieving the push information bound to devices of a user
- Querying the callback data stored on the Chat server
- Resending the callback data stored on the Chat server
v1.2.0
-
Added new REST APIs for management of custom attributes of group members:
- Setting custom attributes of a group member
- Retrieving all custom attributes of a group member
- Retrieving custom attributes of multiple group members by attribute key
-
Removed the
nicknameparameter from the RESTful APIs for adding one user or multiple users
