Added Client::GetLobbyMessagesWithLimit to retrieve lobby message histories based on a provided lobby ID, with a maximum of 200 messages and up to 72 hours.
Only messages from lobbies the user is currently a member of can be retrieved.
DM history will be coming soon too!
Unified Friends List
Added Client::GetRelationshipsByGroup which both logically groups a user’s relationships for the purpose of rendering a friends list and sorts users based on our Unified Friends List design guidelines. Before, it was necessary to call Client::GetRelationships and manually partition each relationship into the appropriate friend group, as well as write your own sorting operations.
Added Client::SetRelationshipGroupsUpdatedCallback which fires whenever a user change occurs which could invalidate a previously sorted friends list retrieved from Client::GetRelationshipsByGroup. Call Client::GetRelationshipsByGroup again to maintain an up-to-date friends list.
Added IsSpamRequest to RelationshipHandle, returns true if Discord believes the request to be spam.
Audio Changes
A new experimental audio mode has been added for mobile devices which uses standard media audio streams instead of voice-specific processing. On iOS this causes the voice engine to use the Remote I/O Audio Unit instead of Voice Processing I/O and likewise on Android, media stream types are used instead of voice communication types. This mode may be enabled by creating a Client with a ClientCreateOptions parameter whose experimentalAudioSystem property is set to AudioSystem::Game. In this case, you should also set Client::SetEngineManagedAudioSession to true. We do not recommend using this for production - however, if you are interested in trying it out, we are looking for feedback!
Added Client::SetAecDump to enable recording of audio diagnostic information.
Auth
Publisher Auth
Publisher Auth is a new feature which makes authorization easier for publishers with multiple games. This is an early release of this feature and only available to a limited number of partners for now.
Added Client::ExchangeChildToken to facilitate child token exchange for public clients. Confidential clients will require a server to server implementation, but this method may be useful for development.
Invites from sibling applications will be visible to the SDK. They can be identified by the applicationId field on the ActivityInvite payload.
Messages sent from other sibling applications will be visible to the SDK. They can be identified by the ApplicationId method on the MessageHandle.
Added Client::RevokeToken and Client::UnmergeIntoProvisionalAccount to allow games leveraging Public Clients to perform token revocation or unmerge operations directly from clients.
Android
The SDK is now compatible with 16KB page size.
Misc
Improved activity serialization, avoiding including null/empty keys in the JSON payload.
1.3.9273 (2025-06-05)
PlayStation
Added missing linker stubs to Unreal packages
1.3 (2025-06-02)
Auth
Added an APPLICATION_DEAUTHORIZED webhook event which can be configured in the developer portal. When a user unlinks their account or revokes authorization for your application in any way, this event will be sent to configured webhooks. The payload will contain serialized user information. See https://discord.com/developers/docs/events/webhook-events for more information on configuring webhook events. Documentation is coming soon, but check the developer portal for details in the meantime.
PC
Added configurable request timeout SDK HTTP client requests to mitigate crashing when connected to unstable/slow internet. Support is on PC in this release with console and mobile support coming in future release. Timeout default value is 30000ms (30 seconds) and can be configured using the new Client API: Client::SetHttpRequestTimeout
Mobile
SetSpeakerMode is now deprecated. Unless SetEngineManagedAudio is used, audio routing will be handled automatically by the SDK
Android
Fixed routing of game and voice audio when external audio devices are connected and/or disconnected. SetEngineManagedAudio has been added to communicate that the SDK should not manage audio routing and automatically enter and leave MODE_IN_COMMUNICATION when joining and leaving calls.
Fixed an issue with the Authorize method when a device configuration change needs to restart the activity
iOS
Various fixes for audio routing and session management. When using the Unity plugin, game audio will no longer stop playing when ending a call. For standalone SDK use, a method SetEngineManagedAudio has been added to communicate that the SDK should not automatically start and stop the AVAudioSession when joining and leaving calls.
Corrected supported platform values in Info.plist for iOS .frameworks.
Consoles
Standalone archives now only contain console-specific files, like the Unity and Unreal Engine archives
Misc
Fixed a thread safety issue with Client::AddLogCallback
Added [Flags] declaration for bit flags enums in C#
1.2.8730 (2025-05-08)
Resolved load errors on iOS 11. Note that the minimum version supported for Client::Authorize support remains iOS 15. Support for legacy iOS versions is limited to provisional accounts at this time.
1.2 (2025-05-05)
Rich Presence
Added support for adding custom buttons on activity cards via Activity::AddButton
Packaging
Unity and Unreal plugin artifacts now contain just the additional files for console support so they can be extracted on top of the base plugin
Unity plugin is now packaged as a .zip that you should extract inside the Packages directory of your project to enable the above
Console archives now contain a small README with some console-specific documentation
Misc
Added Client::OpenConnectedGamesSettingsInDiscord for deeplinking into Discord's settings for connected games, which provides players some control over who can DM them
Fixed a hang that could occur on Linux in Client::RegisterLaunchCommand and Client::RegisterLaunchSteamApplication
Client::RegisterLaunchCommand and Client::RegisterLaunchSteamApplication now work from inside the Steam Runtime on Linux
Fixed a crash on exit that could occur when there were pending callbacks in the queue
1.1.8318 (2025-04-18)
Platforms
Playstation standalone archives now include linker stubs
Voice
Fixed a regression in audio playback on Linux
1.1 (2025-04-11)
Platforms
Added Xbox One and PS4 console support
Auth
Added support for Unity Services as an external auth provider
Voice
StartCallWithAudioCallbacks now permits sample data to be modified during record and playback for custom effects processing
Fixed a bug where the speaking state for a user could be stuck in the "on" state
Reduced some log spam from desktop client RPC message handling
Fixed a build issue on Unity for Android when targeting 32-bit ARM devices
1.0 (2025-03-26)
Downloads
Downloads for the SDK can now be found on the developer portal. If you go to https://discord.com/developers/applications and click on your application you should have a new "Discord Social SDK" section in the sidebar (shown below) and you can download the latest release from there.
API Cleanup
In the 1.0 release, we removed all APIs that were previously marked as deprecated. Additionally we had to make one additional breaking change from the previous release. Before we had a single Client::GetDefaultScopes function that returned the oauth scopes to use, but we planned on separating these.
Client::GetDefaultPresenceScopes now returns an oauth scope that will enable: account linking, the friends list, rich presence, provisional accounts, and activity invites.
Client::GetDefaultCommunicationScopes now returns an oauth scope that will enable: user DMs, lobbies, linked channels, and voice chat, in addition to everything in the presence scopes.
Client::GetDefaultCommunicationScopes is the exact same as what your integrations have been using so far, so just switching to that will be a noop, it returns the exact same oauth scopes as before and nothing else has changed.
However, if you are not planning to use DMs or Lobbies, you should consider switching to Client::GetDefaultPresenceScopes, since that way when users go to authorize the integration, they will only see the scopes that your integration is actually requesting, and won't wonder why you are requesting messaging permissions when you don't use them. If you have any questions about this though, please reach out!
Going forward, we are also enabling linked channels by default for apps that use the "communications" scopes, however, that change was not retroactive, so if you plan to use linked channels, please reach out to us when you are ready and we can turn that on for you.
Voice
Ensure that when a call is ended the participant always notifies the server they have left
Added Call::GetVADThreshold
Fixed a subtle regression in Client::SetSelfDeafAll
Documented that Client::StartCall will return null if attempting to start a call in a lobby while already in a call for that same lobby
Fix a crash that occurs in lobby voice after network drop out on Xbox
Presence/Invites
Fixed a crash when a non-friend user sends an activity invite to a lobby
Fixed that for provisional accounts, who also had the discord desktop app running, presence would not be cleared when the SDK was shutdown but the game was still running.
When publishing rich presence, the Joinable flag will only be set on the Activity if valid party information is present so that the Discord apps do not render the rich presence as joinable which can lead to an error
Fixed UserHandle::Status and UserHandle::GameActivity not including information about the current user
Improved the docs around RegisterLaunchCommand
C/C++ APIs
Fixed the internal C api (which we don't recommend using) to not crash if a nullptr is passed to the free function
Fixed Discord_SetGlobalAllocator was not exported
Removed DiscordObjectState::Unowned since it was never used
Misc
Fix an issue with the SDK getting not reconnecting after a temporary disconnection
Fix an occasional crash in the Unity editor on domain reload because of a stale callback queue
Reduced how frequently the SDK tries to RPC to the Discord desktop app
Fixed the Discord desktop RPC client getting behind if there were a number of RPCs sent at once
Signed the binaries for mac
Fixed the validation code in AcceptGameFriendRequest