19.0.0
Breaking
- Raises the minimum platform OS versions to allow SDK compatibility with Xcode 27, which enforces the following new minimum versions:
- iOS 12.0 -> iOS 15.0
- tvOS 12.0 -> tvOS 15.0
- Removes deprecated
BrazeInAppMessageUI.DisplayChoice.laterin favor ofBrazeInAppMessageUI.DisplayChoice.reenqueue.
Added
requestBannersRefreshnow merges into the existing banner cache instead of replacing it entirely. Only the requested placement IDs are affected; other cached banners are untouched, and a requested placement with no banner in the response is removed from the cache.- Adds
featureDisabledandcacheEvictedtoBraze.Banner.RemovalReason.featureDisabledis passed toremoveBannerContent(reason:)when the server configuration disables Banners and clears the local cache. Previously this teardown reported no reason.cacheEvictedis passed when a banner is discarded to stay within the on-device cache size budget.
- Adds
subscribeToEvents(_:)andeventsStreamonBraze.Banners,Braze.ContentCards, andBraze.FeatureFlagsfor cache replays, data updates, errors, and flushed analytics. - Adds support for
immediatetriggers, which display an In-App Message as soon as it's received.
Changed
- Content Cards, Banners, and Feature Flags no longer automatically retry a non-429 4xx response, an invalid API key, or a sync response the SDK cannot decode.
subscribeToEventsreports oneclientErrorwithdoNotRetryfor those failures. HTTP 429, server errors, network failures, and SDK authentication errors still retry up to 15 times.
Deprecated
- Deprecates
subscribeToUpdates(_:)and the dictionary-basedbannersStream/cardsStream/featureFlagsStreamproperties in favor ofsubscribeToEvents(_:)andeventsStream.