What Was New in Recent Releases
Configure WebSockets
REST Wrappers for SFAP APIs
Using Key-Value Stores for Secure Data Storage
Dark Mode and Dark Theme Settings
Here’s an archive of What’s New bulletins from recent Mobile SDK releases.
Mobile SDK 13.1.1 is a minor patch release that features these changes.
showOnlyAuthorizedHosts parameter from being respected when enabled.Mobile SDK 13.1 is a minor release that features client-side support for WebSockets, URLRequest support on iOS, Android 16 support, and login with the Salesforce welcome domain for internal apps.
In interim releases, we often deprecate items in native libraries for removal in an upcoming major release. Be sure to check your compiler logs for deprecation warnings so that you can address any changes before they go into effect.
These changes apply to more than one platform.
We added support for WebSockets, a bidirectional TCP connection that works with our authentication features and products like Agentforce Speech Foundation. See Configure WebSockets.
Internal apps can now log in with welcome.salesforce.com. The welcome login domain is not yet available to external apps.
See also: General Updates in Mobile SDK 13.1
Our REST client now supports direct network calls with URLRequest, which reduces the need for SFRestRequest conversions. Existing SFRestRequest interfaces are still fully supported.
See iOS APIs Removed in Mobile SDK 13.1.
Check your compiler warnings, or see iOS Current Deprecations.
See also: General Updates in Mobile SDK 13.1
We successfully tested Mobile SDK for compatibility with Android 16. See Android Version 16.
See Android APIs Removed in Mobile SDK 13.1.
Check your compiler warnings, or see Android Current Deprecations.
Mobile SDK 13.0.1 is a minor patch release that features these changes.
userIdentity, whereas in Mobile SDK 13.0 we didn’t.NewLoginHostView, we renamed label to hostName.Mobile SDK 13.0 is a major release that features user experience improvements on Android and iOS, asynchronous REST API requests, REST wrappers for SFAP APIs, and SmartStore support for several SQLCipher editions.
In major releases, we typically remove items that have been deprecated. To learn about new features and breaking changes that can affect your app, read the rest of this article. In every release, be sure to check your compiler logs for deprecation warnings so that you can address these changes before they go into effect.
These changes apply to more than one platform.
You can now receive logs with LogReceiver. See Receiving Logs with LogReceiver.
Smartstore now supports SQLCipher Commercial, Enterprise, and Enterprise FIPS. See Using SQLCipher with SmartStore.
See also: General Updates in Mobile SDK 13.0
We redesigned the Add Connection screen for better accessibility.
Note: The updated screen comes with new localizable strings. If your app supports localization, see our updated list of Localizable.strings on GitHub and localize the latest additions.
We updated the way REST API requests are handled in the RestClient class.
async and await methods instead of completion handlers.async and await methods. See iOS Current Deprecations.We introduced REST wrappers for SFAP APIs in the SfapApiClient class. SFAP requires JWT-based access tokens, which we now support. See REST Wrappers for SFAP APIs.
In hybrid remote applications, we now use session IDs, sourced from the login and refresh token endpoints, to load the app’s start page. This replaces the behavior in previous versions, which relied on a frontdoor URL to establish a UI session.
Note: This feature requires hybrid authentication, which is enabled by default. To verify the hybrid authentication setting, ensure that the useHybridAuthentication property in SalesforceSDKManager is set to true.
See iOS APIs Removed in Mobile SDK 13.0.
Check your compiler warnings, or see iOS Current Deprecations.
See also: General Updates in Mobile SDK 13.0
We redesigned the login experience on Android. The redesign features a modernized architecture that uses Jetpack Compose and Model-View-ViewModel (MVVM), and these general changes.
WebView background by default.LoginViewModel without subclassing LoginActivity.WebView.See also:
Note: The login redesign introduces new localizable strings. If your app supports localization, see our updated list of sf__strings.xml on GitHub and localize the latest additions.
See Android APIs Removed in Mobile SDK 13.0.
Check your compiler warnings, or see Android Current Deprecations.
Mobile SDK 12.2 is a minor release that features QR code login, visionOS support, refresh behavior enhancements, and modernized support for iOS and Android.
In interim releases, we often deprecate items in native libraries for removal in an upcoming major release. Be sure to check your compiler logs for deprecation warnings so that you can address any changes before they go into effect.
These changes apply to more than one platform.
When displaying a Salesforce UI in a webview or external browser without requiring users to reenter their credentials, we now use the Single Access UI Bridge API (UI Bridge API for short) to construct the frontdoor URL, which was previously constructed manually. See also:
With the help of Apex classes, Visualforce Pages, UI Bridge API, and new Mobile SDK methods, we can now log users in with a QR code. To learn more about QR code login and how to set it up, see:
We enhanced our token refresh behavior for 403 (Bad_OAuth_Token) responses. Where apps previously managed a 403 response by performing a preliminary REST call to update the access token, we now refresh the token automatically.
The new refresh behavior impacts the /service/oauth2 endpoint and helps with our new REST wrapper for UI Bridge API.
See also: General Updates in Mobile SDK 12.2
We successfully tested Mobile SDK for compatibility with iOS 18 and XCode 16. See Apple’s iOS 18 Release Notes.
We added support for visionOS. See Add visionOS as a supported destination for your app in Apple’s documentation.
Check your compiler warnings, or see iOS Current Deprecations.
See also: General Updates in Mobile SDK 12.2
We fixed a bug that sometimes caused the login screen to relaunch after a successful authentication.
This bug fix introduced a breaking change. If your app overrides LoginActivity or uses advanced authentication, change the launch mode from ‘singleTop’ to ‘singleTask’.
Important
We successfully tested Mobile SDK for compatibility with Android 15. See Android Version 15.
Note: Apps that target SDK 35 on Android 15 now display edge-to-edge. To change the color of the status bar, override the sf__api_35_status_bar_color resource.
In hybrid remote applications, we now use session IDs, sourced from the login and refresh token endpoints, to load the app’s start page. This replaces the behavior in previous versions, which relied on a frontdoor URL to establish a UI session.
Note: This feature requires hybrid authentication, which is enabled by default. To verify the hybrid authentication setting, verify that the useHybridAuthentication property in SalesforceSDKManager is set to true.
Check your compiler warnings, or see Android Current Deprecations.
Mobile SDK 12.1.1 is a minor patch release that features these changes.
Mobile SDK 12.1.0 is a minor release that introduces user-registration and password-reset flows to the native login suite for Experience Cloud.
We added user-registration and password-reset support for Experience Cloud sites, which means you can now fully customize the UI for these flows.
SQLCipher: 4.6.0 (iOS and Android)
React Native: 0.74.3
See also: General Updates in Mobile SDK 12.1.
See also: General Updates in Mobile SDK 12.1.
Cordova: 13.0.0
Gradle: 8.7.0
Mobile SDK 12.0.1 is a minor patch release that features these changes.
Mobile SDK 12.0 is a major release that provides native login support for Experience Cloud, including passwordless login. In 12.0, we’re also changing the cipher mode used for encrypting push notifications on the server.
In major releases, we typically remove items that have been deprecated. To learn about new features and breaking changes that can affect your app, read the rest of this article. In every release, be sure to check your compiler logs for deprecation warnings so that you can address these changes before they go into effect.
These changes apply to more than one platform.
We added native login support for Experience Cloud sites, including passwordless login. See also:
Starting in Summer 2024, we use a new cipher mode for encrypting push notifications on the server.
See also: General Updates in Mobile SDK 12.0
We included privacy manifests in all of our libraries and upgraded our dependencies to a version that includes privacy manifests. See Apple’s documentation on privacy manifest files: https://developer.apple.com/documentation/bundleresources/privacy_manifest_files.
See iOS APIs Removed in Mobile SDK 12.0.
Check your compiler warnings, or see iOS Current Deprecations.
See also: General Updates in Mobile SDK 12.0
We upgraded FCM to version 23.3.1. For apps that use Android or Hybrid push notifications, google-services.json replaces androidPushNotificationClientId in Mobile SDK 12.0. See also:
Because of a change in how Google handles push notifications for apps, Android mobile connected apps now collect the Admin SDK private key and project ID from a Google Firebase project. This change applies to mobile connected apps with Android push notifications. See also:
We upgraded to Gradle 8 and Android Gradle Plugin (AGP) 8. We also moved to Java JDK 17. See the release notes for Gradle 8 at https://docs.gradle.org/8.0/release-notes.html.
We moved to a new SQLCipher for Android Package, with sqlcipher-android replacing android-database-sqlcipher in 12.0. See the SQLCipher release notes at SQLCipher 4.5.5 and SQLCipher 4.5.6.
See Android APIs Removed in Mobile SDK 12.0.
Check your compiler warnings, or see Android Current Deprecations.
Mobile SDK 11.1.0 is a minor release that features modernized support for iOS and Android.
In interim releases, we often deprecate items in native libraries for removal in an upcoming major release. Be sure to check your compiler logs for deprecation warnings so that you can address any changes before they go into effect.
These changes apply to more than one platform.
Cordova for Android: 12.0.1
Cordova for iOS: 7.0.1
React Native: 0.70.14
We’ve successfully tested Mobile SDK for compatibility with iOS 17 and XCode 15. See iOS 17 Release Notes.
We’ve introduced support for Swift Package Manager, which can now be used to bring Mobile SDK into applications.
Binary Frameworks for Mobile SDK are hosted on a new repository: https://github.com/forcedotcom/SalesforceMobileSDK-iOS-SPM.
We’ve added a iOSNativeSwiftPackageManager template, which pulls its dependencies through Swift Package Manager.
See also: Add Mobile SDK Libraries to Your Project, Creating an iOS Swift Project Manually, Creating an iOS Project with Forceios.
Check your compiler warnings, or see iOS Current Deprecations.
We successfully tested Mobile SDK for compatibility with Android 14. See Android Version 14.
We modernized the Mobile Sync Library on Android.
All source files are now written in Kotlin.
Parameters and members now use non-nullable types wherever nulls aren’t expected or supported.
Kotlin syntax is now supported where appropriate. For example: string templates, ?:, let, also, map, forEach, when, etc.
Co-routine wrappers are now available for key methods in SyncManager. See Incremental Syncs with reSync, Handling “Ghost” Records After Sync Down Operations, Using Sync Names.
Although we don’t typically require consuming code changes in minor releases such as Mobile SDK 11.1, our modernized Mobile Sync library requires consuming code changes in some cases. For example, constants that were once imported from a class in Java are now imported from a companion object in consuming Kotlin code.
Note
Our Mobile SDK Android templates are now up to date with the Kotlin DSL migration.
Our templates are now set up to download Mobile SDK artifacts from Maven Central, which results in a friendlier build environment.
We fixed these bugs related to advanced auth.
If Chrome wasn’t found during the advanced auth flow, Android users were presented with an error and couldn’t continue with login. Advanced authentication now reinstates the expected behavior of using the default browser if Chrome isn’t available at runtime.
A bug caused some Android users’ login flow to reset to the initial screen when the app was backgrounded during MFA. We’ve fixed this issue and changed LoginActivity’s launch mode from singleInstance to singleTop. Apps that extend LoginActivity now require the same change.
We added new advanced auth methods that allow you to 1) configure which browser your app selects and 2) view the currently selected custom tab browser. See Configuring Advanced Authentication in Android Apps.
Check your compiler warnings, or see Android Current Deprecations.
Mobile SDK 11.0.1 is a minor patch release that features these changes.
Mobile SDK 11.0 is a major release that modernizes several authentication flows. In major releases, we typically remove items that have been deprecated for removal. Read the following information to learn about new features and breaking changes that can affect your app. In every release, be sure to check your compiler logs for deprecation warnings so that you can address these changes before they go into effect.
These changes apply to more than one platform.
SQLCipher: 4.5.4 (iOS and Android)
SQLite: 3.41.2
Cordova for Android: 11.0.0
Cordova for iOS: 6.3.0
Cordova Command Line: 12.0.0
See also: General Updates in Mobile SDK 11.0
Deployment target: 15
Base SDK version: 16
Xcode: 14
Check your compiler warnings, or see iOS Current Deprecations.
Mobile SDK 10.2 is an interim release that features non-breaking API changes and modernized platform support.
iOS 16 Compatibility
We’ve successfully tested Mobile SDK for compatibility with iOS 16. See iOS 16 Release Notes.
SQLite: 3.39.2
SQLCipher: 4.5.2
React Native: 0.70.1
ShellJS: 0.8.5 (for command line tools)
TypeScript: 4.8.3 (for React Native)
Check your compiler warnings, or see iOS Current Deprecations.
Android 13 Compatibility
We’ve successfully tested Mobile SDK for compatibility with Android 13. See Android Version 13.
SQLite: 3.39.2
SQLCipher: 4.5.2
OkHttp: 4.10.0
Cordova-android: 11.0.0
React Native: 0.70.1
ShellJS: 0.8.5 (for command line tools)
TypeScript: 4.8.3 (for React Native)
Android SDK (target API): 33
Check your compiler warnings, or see Android Current Deprecations.
React Native: 0.70.1
Mobile SDK 10.1.1 is a minor patch release. Mobile SDK 10.1.1 restores use of the Lock App After timeout setting from the org’s Connected App settings for your mobile app. When set, the mobile app locks after it has been in the background for longer than the timeout period. Locking occurs when the mobile app is activated. Unlocking the app remains the same.
Mobile SDK 10.1.0 is a minor release that includes bug fixes, performance enhancements, feature additions, and updates.
In interim releases, we often deprecate items in native libraries for removal in an upcoming major release. Be sure to check your compiler logs for deprecation warnings so that you can address any changes before they go into effect.
These changes apply to more than one platform.
REST request factory method and response parser for the Briefcase Priming Salesforce API. See Briefcase Priming Records.
REST request factory methods and response parser for the following sObject Collections operations:
Create—See Collection Create.Retrieve—See Collection Retrieve.Update—See Collection Update.Upsert—See Collection Upsert.Delete—See Collection Delete.New sync down target for downloading and locally synchronizing records from an org's briefcases. See Using the Briefcase Sync Down Target.
New sync up target that uses sObject Collections to improve performance. If you don't specify an implementation class ("androidImpl" or "iOSImpl") in your sync up target configuration, Mobile SDK automatically uses CollectionSyncUpTarget. See Using the sObject Collection Sync Up Target.
SQLCipher: 4.5.1 (iOS and Android)
SQLite: 3.37.2
Gradle: 7.2.1
See also General Updates in Mobile SDK 10.0.
SQLCipher: 4.5.1
SQLite: 3.37.2
Check your compiler warnings, or see iOS Current Deprecations.
See also General Updates in Mobile SDK 10.0.
A new Android app template that demonstrates the full power of Mobile Sync, using Kotlin and Jetpack Compose: https://github.com/forcedotcom/SalesforceMobileSDK-Templates/tree/dev/MobileSyncExplorerKotlinTemplate
SQLCipher: 4.5.4
SQLite: 3.41.2
Gradle: 7.2.1
Check your compiler warnings, or see Android Current Deprecations.
See also General Updates in Mobile SDK 10.0.
React Native: 0.70.14
SQLCipher: 4.5.4 (iOS and Android)
SQLite: 3.41.2
See also General Updates in Mobile SDK 10.0.
New sync down target for downloading and locally synchronizing records from an org's briefcases.
New sync up target that uses sObject Collections to improve performance. If you don't specify an implementation class in your sync up target configuration, Mobile SDK automatically uses CollectionSyncUpTarget.
Mobile SDK 10.0.0 is a major trust release. It includes breaking API changes, bug fixes, performance enhancements, minor feature additions, and updates.
In major releases, we remove items in native libraries that were deprecated in interim releases. For your convenience, we’ve compiled lists of deprecated native APIs.
These changes apply to more than one platform.
Key-value stores in native iOS and Android now support secure binary storage APIs. See Using Key-Value Stores for Secure Data Storage.
React Native: 0.67.1
Cordova for iOS: 6.2.0
Cordova for Android: 10.1.1
Cordova command line: 11.0.0
SQLCipher: 4.5.0 (iOS and Android)
SQLite: 3.36.0
node.js: 12.0 to latest LTS version
Key-value stores now support secure binary storage with new Mobile SDK APIs. See Using Key-Value Stores for Secure Data Storage.
We've added a Recent Contacts widget to this template.
Deployment target: 14
Base SDK version: 15
Xcode: 13
Check your compiler warnings, or see iOS Current Deprecations.
Key-value stores now support secure binary storage using existing Mobile SDK APIs. See Using Key-Value Stores for Secure Data Storage.
Minimum API: Android Nougat (API 24)
Target API: Android 12 (API 32)
Default SDK version for hybrid apps: Android 12 (API 32)
Check your compiler warnings, or see Android Current Deprecations.
React Native: 0.67.1
Cordova for iOS: 6.2.0
Cordova for Android: 10.1.1
Cordova command line: 11.0.0
Mobile SDK 10.0 implements write-ahead logging (WAL) in SQLCipher for Android. Although SQLCipher's concurrent read-write support remains blocked on Android, lower-level updates bring measurable improvements to SmartStore performance.
Due to improvements in third-party modules, the external storage feature and the SoupSpec class have been deprecated for removal in Mobile SDK 11.0. SmartStore is now fully capable of handling large data sets. See Android Current Deprecations and iOS Current Deprecations.
SQLCipher: 4.5.0 (iOS and Android)
SQLite: 3.36.0
Mobile SDK 9.2.0 is an interim release that features non-breaking API changes and modernized iOS support.
In interim releases, we often deprecate items in native libraries for removal in an upcoming major release. Be sure to check your compiler logs for deprecation warnings so that you can address any changes before they go into effect.
These changes apply to more than one platform.
We’ve removed app-specific passcodes from iOS and Android apps in favor of mobile operating system security. Mobile SDK still honors an org’s passcode requirement but ignores passcode length, passcode timeout, and biometric settings from a connected app. For customers who’ve already configured a device lock screen or biometric unlock, this upgrade is seamless. For others, the new app lock screen prompts the customer to configure an authentication mode. When the customer reactivates the app from the background, the device passcode, rather than an app-specific passcode, is required. See About Login and Passcodes (iOS) and Using Passcodes (Android).
0.66.0 (iOS and Android)
3.34.1
4.4.3 (iOS and Android)
Mobile SDK 9.1.0 is an interim release that features non-breaking API changes and modernized iOS support.
In interim releases, we often deprecate items in native libraries for removal in an upcoming major release. Be sure to check your compiler logs for deprecation warnings so that you can address any changes before they go into effect.
These changes apply to more than one platform.
batchSize parameter to requestForQuery methods of SFRestApi (Objective-C) and RestClient (Swift). Use this parameter to specify a preferred number of records to be returned in each fetch. Permissible values range from 200 to 2,000 (default setting). To allow for run-time performance adjustments, Mobile SDK doesn’t guarantee that your requested size will be the actual batch size.batchSize parameter to the RestRequest.getRequestForQuery method. Use this parameter to specify a preferred number of records to be returned in each fetch. Permissible values range from 200 to 2,000 (default setting). To allow for run-time performance adjustments, Mobile SDK doesn’t guarantee that your requested size will be the actual batch size.Check your compiler warnings, or see Android Current Deprecations.
Smart SQL no longer requires index paths for all fields referenced in SELECT or WHERE clauses. See Smart SQL Queries.
You can now configure the size for SOQL sync down batches. You can specify any value from 200 to 2,000 (default value). See Using the SOQL Sync Down Target.
These changes apply to more than one platform.
Developer Tools
(iOS, Android) The Dev Support menu now provides a new utility: Inspect Key-Value Store. In-App Developer Support
External Component Version Updates
iPadOS Support
Version Updates
Deprecations
Version Updates
Target API: Android 11 (API 30)
Deprecations
Check your compiler warnings, or see Android Current Deprecations.
TypeScript Now Supported
Mobile SDK’s implementation of React Native now supports TypeScript for app development in addition to standard JavaScript. Mobile SDK libraries for React Native now also use types. TypeScript requires you to install the TypeScript compiler. React Native Development
Version Updates
React Native version: 0.63.4
Parent-Child Sync Up Adds externalIdField Parameter
The new externalIdField parameter for parent-child sync up matches the functionality added for basic sync operations in Mobile SDK 8.0. Syncing Up by External ID.
We've Moved