You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Braze.init and changeUser(userId:) no longer block the calling thread.
The following properties now block the calling thread until the SDK has settled, ensuring they reflect the latest user state immediately after changeUser or Braze.init:
braze.user.id
braze.deviceId
braze.contentCards.cards
braze.contentCards.unviewedCards
braze.contentCards.lastUpdate
braze.featureFlags.featureFlags
braze.featureFlags.featureFlag(id:)
For UI and other latency-sensitive code paths, prefer the asynchronous getters (getCachedContentCards(_:), getUnviewedCards(_:), getLastUpdate(_:), getAllFeatureFlags(_:)).
braze.user.id now returns nil after calling wipeData().
Previously, braze.user.id continued to return the last user ID after wipeData().
This matches the Swift SDK's behavior with that of the Android SDK.
changeUser now notifies Braze.ContentCards.subscribeToUpdates(_:) subscribers after a user switch, matching the existing Android SDK behavior.
Previously, subscribers were not notified until the next Content Cards sync.
Removes the deprecated push-to-start token update API on Braze.LiveActivities.
Removes the deprecated Braze.LiveActivities.PushToStartTokenUpdate enum and the pushToStartTokenUpdatesStream property.
Use subscribeToStateUpdates(_:) instead, which delivers the push-to-start token lifecycle events (UpdateEvent.ActivityType.pushToStartTokenRead, .pushToStartTokenFlushed, .pushToStartOptedOut, .pushToStartOptOutFlushed) as part of the complete Live Activities lifecycle in a single subscription.
Added
Adds non-blocking asynchronous accessors for user and device identifiers:
Braze.User.getId(_:) and Braze.User.getId() async — deliver on the main thread.
Braze.getDeviceId(_:) and Braze.getDeviceId() async — deliver on the main thread.
ObjC bridges: getIdWithCompletion: and getDeviceIdWithCompletion:.
Prefer these over the synchronous properties on the main thread or in @MainActor contexts.
Adds an sdkDisabled error on Braze.ContentCards.requestRefresh(_:), Braze.FeatureFlags.requestRefresh(_:), and Braze.Banners.requestBannersRefresh(_:). When the SDK is disabled, these now invoke their completion handler with .sdkDisabled instead of leaving it uncalled.