What Was New in Recent Releases
Here’s an archive of What’s New bulletins from recent Mobile SDK releases.
Mobile SDK 12.1.1 is a minor patch release that features these changes.
- We fixed a bug that cleared user account fields locally when some users logged in immediately after logout.
- SQLCipher upgrade: 4.6.1 (iOS and Android)
- SQLite upgrade: 3.46.1
- Google Lifecycle upgrade: 2.8.4 (Android)
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.
- Cordova: 7.1.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.
- We updated our privacy manifests so they're now compatible with the latest changes in Static Analyzer.
- We fine-tuned access modifiers on classes recently migrated from Java to Kotlin to ensure compatibility for the apps that extend them.
- We upgraded to SQLCipher 4.5.7, which comes with privacy manifests. See the 4.5.7 release notes from SQLCipher.
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.
- The server will only understand the new cipher mode after Summer 2025.
- Mobile apps using Mobile SDK 12.0 can handle both the legacy and new cipher mode.
- To keep using encrypted push notifications, upgrade your mobile apps to Mobile SDK 12.0 (or a later version) before Summer 2025.
- SQLCipher: 4.5.6
- SQLite: 3.44.2
- sf (previously sfdx): v2
- React Native: 0.73.6
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.
- We added configurable URL handling for login, which allows apps to control how links on the login screen are handled. For example, a phone number on the login screen can be configured to launch the device’s phone application.
- We fixed a bug that caused the biometric authentication opt-in status to be reset on login.
- Deployment target: 16
- Base SDK version: 17
- Xcode: 15
- Cordova for iOS: 7.1.0
- FMDB: 2.7.10
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 using 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:
- Update Your Android Mobile Connected App’s Information for Push Notifications in Salesforce Help.
- Configure Android Push Notifications in Salesforce Help.
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.
- Android SDK (min API): 26
- Android SDK (target API): 34
- Default SDK version for hybrid apps: 34
- Gradle: 8.2.0
- Java JDK: 17
- Firebase Cloud Messaging: 23.3.1
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’ve successfully tested Mobile SDK for compatibility with Android 14. See Android Version 14.
We’ve 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.
-
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’ve 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
tosingleTop
. Apps that extend LoginActivity now require the same change.
We’ve 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.
- Bug fixes for login and refresh with custom domain and enhanced domain.
- Access token re-hydration in hybrid apps and when using an IDP flow.
- Improved read performance for Key-Value Stores.
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.
- The default authentication on iOS and Android now uses Web Server Flow instead of User-Agent Flow. See OAuth 2.0 Web Server Flow.
- Device system biometric authentication for logins. See Biometric Authentication.
- Reworked multi-app SSO flows and configurations with identity providers. See Identity Provider Apps.
- External Component Version Updates
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
- Version Updates
Deployment target: 15
Base SDK version: 16
Xcode: 14
- Removed APIs
- Deprecated APIs
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.
- Version Updates
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)
- Deprecated APIs
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.
- Version Updates
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
- Deprecated APIs
Check your compiler warnings, or see Android Current Deprecations.
- Version Updates
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 API Methods for Briefcase Priming Records (iOS, Android)
REST request factory method and response parser for the Briefcase Priming Salesforce API. See Briefcase Priming Records.
- REST API Methods for sObject Collections (iOS, Android, React Native)
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.
- Briefcase Sync Down Target (iOS, Android)
New sync down target for downloading and locally synchronizing records from an org's briefcases. See Using the Briefcase Sync Down Target.
- Collection Sync Up Target using sObject Collections (iOS, Android)
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.- External Component Version Updates
SQLCipher: 4.5.1 (iOS and Android)
SQLite: 3.37.2
Gradle: 7.2.1
See also General Updates in Mobile SDK 10.0.
- Version Updates
SQLCipher: 4.5.1
SQLite: 3.37.2
- Deprecated APIs
Check your compiler warnings, or see iOS Current Deprecations.
See also General Updates in Mobile SDK 10.0.
- MobileSyncExplorerKotlin Template
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
- Version Updates
SQLCipher: 4.5.4
SQLite: 3.41.2
Gradle: 7.2.1
- Deprecated APIs
Check your compiler warnings, or see Android Current Deprecations.
See also General Updates in Mobile SDK 10.0.
- Version Updates
React Native: 0.70.14
- Version Updates
SQLCipher: 4.5.4 (iOS and Android)
SQLite: 3.41.2
See also General Updates in Mobile SDK 10.0.
- Briefcase Sync Down Target (iOS, Android)
New sync down target for downloading and locally synchronizing records from an org's briefcases.
- Collection Sync Up Target using sObject Collections (iOS, Android)
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.
- Binary Storage in Key-Value Stores
Key-value stores in native iOS and Android now support secure binary storage APIs. See Using Key-Value Stores for Secure Data Storage.
- External Component Version Updates
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
- Binary Storage in Key-Value Stores
Key-value stores now support secure binary storage with new Mobile SDK APIs. See Using Key-Value Stores for Secure Data Storage.
- Widgets in the MobileSyncExplorerSwift Template App
We've added a Recent Contacts widget to this template.
- Version Updates
Deployment target: 14
Base SDK version: 15
Xcode: 13
- Removed APIs
- Deprecated APIs
Check your compiler warnings, or see iOS Current Deprecations.
- Binary Storage in Key-Value Stores
Key-value stores now support secure binary storage using existing Mobile SDK APIs. See Using Key-Value Stores for Secure Data Storage.
- Version Updates
Minimum API: Android Nougat (API 24)
Target API: Android 12 (API 32)
Default SDK version for hybrid apps: Android 12 (API 32)
- Removed APIs
- Deprecated APIs
Check your compiler warnings, or see Android Current Deprecations.
- Version Updates
React Native: 0.67.1
- Version Updates
Cordova for iOS: 6.2.0
Cordova for Android: 10.1.1
Cordova command line: 11.0.0
- WAL for Android
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.
- Feature Deprecations
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.- Version Updates
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.
- Passcode Removal
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).
- Cordova
- iOS: 6.2.0
- Android: 10.1.0
- React Native
0.66.0 (iOS and Android)
- SQLite
3.34.1
- SQLCipher
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.
- Key-Value Stores (iOS, Android)
- Key-value store version 2 debuts in 9.1. With version 2, you can use key-value store APIs to retrieve all keys from the store.
- The Inspect Key-Value Store option of the Dev Support menu now lets you search for all keys that match a given partial or whole key name.
- For details of these features, see Using Key-Value Stores for Secure Data Storage.
- iPad Support in Sample Apps
- The MobileSyncExplorerSwift template app now supports Catalyst and multiple windows for iPad.
- The RestAPIExplorer sample app now supports Catalyst.
- REST API Wrapper Update
- We’ve added a
batchSize
parameter torequestForQuery
methods ofSFRestApi
(Objective-C) andRestClient
(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.
- We’ve added a
- Deprecations
- Check your compiler warnings, or see iOS Current Deprecations.
- REST API Wrapper Update
- We’ve added a
batchSize
parameter to theRestRequest.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.
- We’ve added a
- Deprecations
Check your compiler warnings, or see Android Current Deprecations.
- SmartStore
Smart SQL no longer requires index paths for all fields referenced in SELECT or WHERE clauses. See Smart SQL Queries.
- SOQL Sync Down Target Enhancement
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.
- General
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
- SQLCipher (iOS, Android): 4.4.2
- SQLite (iOS, Android): 3.33.0
- yarn: 1.22
- Cordova:
- iOS: 6.1.1
- Android: 9.0.0
- iOS
iPadOS Support
- Implemented multiple window support for iPadOS. This new feature requires changes to existing apps that intend to run on iPads. See Supporting iPadOS in Mobile SDK Apps.
- Improved support for landscape mode on iPadOS. (Other than updating to Mobile SDK 9.0, no app changes required.)
Version Updates
- Deployment target: iOS 13
- Base SDK: iOS 14
- Xcode: 12
- CocoaPods: 1.8.0 (no maximum)
Deprecations
- Check your compiler warnings, or see iOS Current Deprecations.
- The Carthage framework manager is no longer officially supported.
- Android
Version Updates
Target API: Android 11 (API 30)
Deprecations
Check your compiler warnings, or see Android Current Deprecations.
- React Native
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
- Mobile Sync
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.