Discord Social SDK
All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Pages
Release Notes

Release Notes

1.4 (2025-06-26)

Lobby Chat History

  • 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
  • Added discordpp::Call::GetPTTReleaseDelay
  • Initialization of the voice engine is now delayed until it's needed
  • Fixed a deadlock with the Linux PulseAudio backend where malfunctioning audio devices could cause a voice engine lockup

Rich Presence

  • Added support for sending rich presence updates and invites without connecting to the Discord gateway on desktop

Misc

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