Skip to content

Salesforce Mobile SDK 14.0.1-rc.0

Pre-release
Pre-release

Choose a tag to compare

@wmathurin wmathurin released this 26 Oct 20:31
· 11 commits to dev since this release

What's New in Mobile SDK 14.0.1-rc.0

This release candidate, Mobile SDK 14.0.1-rc.0, is available for early testing before the Mobile SDK 14.0.1 general-availability release. Additional release candidates might be published before the general-availability release.

For an overview of all 14.0 changes, see the Mobile SDK 14.0.0 release notes.

Changes Since 14.0.0

Authentication

  • DPoP support in Native Login — Native Login now supports DPoP on every path that produces a session: DPoP proofs, dpop_jkt, and nonce retry on the authorize and token requests, per-user key ownership, and persisted DPoP accounts. A request is replayed only after a genuine use_dpop_nonce challenge (HTTP 400/401 with an error=use_dpop_nonce body and a non-empty DPoP-Nonce header). This change also adds a temporary htu canonicalization workaround, applied to DPoP proofs for token, refresh and REST requests (not only Native Login), for Experience Cloud sites with a URL path prefix (vforcesite) until a server-side fix is available. (#4187)
  • Refresh token rotation recorded at login — On an app with refresh token rotation (RTR), the login-time identity refresh rotates the refresh token, but the rotation was dropped because the account didn't exist yet. lastTokenRotationDate is now stamped on the credentials regardless, and SFUserAccountManager registers the RT feature marker once the account exists. This matches Android. (#4184)

Developer Support

  • Native Login mode in Login Options — Any app with developer support enabled (the default in debug builds) can now log in with Native Login from the Login Options screen without app code changes. A new Authentication Mode (Browser / Native) selector exposes the Native Login client ID, callback URL, community login URL, DPoP and hybrid authentication options, saved separately from the browser configuration. A built-in SwiftUI login form handles the flow, with a "Log In with Browser" fallback, and a native login view controller registered through useNativeLogin always takes precedence. Automation can configure the mode through SalesforceManager.shared.debugLoginSettings. New user-facing strings were added to Localizable.strings. Apps that don't enable developer support are unchanged. (#4192)

Bug Fixes

  • Conditional-update HTTP dates use GMT — SFRestAPI's HTTP date formatter used the device's local time zone. Dates for conditional updates are now formatted in GMT with the en_US_POSIX locale. Fractional seconds are still truncated so the caller's cutoff is never advanced. (#4190)
  • Device hardware identification refreshed — M2 iPad Pro identifiers returned the opposite screen size, the first 11-inch iPad Pro had no display name, and several recent iPads had misleading names. Added 23 identifiers for released devices through iPhone 18 Pro / Pro Max, iPad Air (M4), iPad Pro (M5) and iPad (A16), and corrected Neural Engine detection for A12/A12X and newer devices. Public API: 15 model enum cases and name constants are appended; existing enum values and symbols are preserved, but some existing device display names change to Apple's product names. (#4191)
  • SmartStore developer info no longer crashes without a global store — Choosing "Inspect SmartStore" from the developer support dialog on the login screen of a freshly installed app crashed when the default global store couldn't be opened. The SQLCipher diagnostic rows now show "Unavailable" instead of inserting nil. Developer info display only — no change to database opening or recovery. (#4186)

Swift Package Manager

  • SalesforceFileLogger Swift package (iOS-Hybrid) — The existing Objective-C SalesforceFileLogger is now available as a SwiftPM product from SalesforceMobileSDK-iOS-Hybrid, with public forwarding headers and its privacy manifest. It depends on CocoaLumberjack 3.9.1 and the published SalesforceSDKCommon product in iOS-SPM 14.0.0; the podspec's CocoaLumberjack constraint is aligned. (iOS-Hybrid #329)

Grab the Latest Here