Fixed
- Fixed an issue where
BannerViewcould callWebViewAPIs afterdestroy()when async banner HTML loading ran after an embedder tore down the view (e.g. Flutter or React Native platform views). - Fixed a potential ANR when setting
BannerView.placementId(including during ComposeAndroidViewcomposition). Banner resolution viaBraze.getBannernow runs off the main thread; WebView updates still apply on the main thread. - Fixed
Braze.unregisterPushhanging when local SDK request rate limiting denied a send. Local rate-limit denial rejects enqueue (retriable failure, no HTTP status) instead of waiting for a token. - Fixed an issue where Back callbacks from an In-App Message could remain registered after transitioning through a blocklisted Activity, causing Back navigation to be intercepted after the message was no longer visible.
- Fixed an issue where Banner test sends from the dashboard were not included in
BannersUpdatedEventpublished toBraze.subscribeToBannersUpdates()subscribers. - Fixed an issue where sse connections wouldn't check for expired auth tokens and could reconnect with a cached token that had already expired.
- Fixed an issue in the sse stream reader where a closed socket could cause heavy CPU usage until the stream timeout fired.
- Fixed an issue where a Content Cards full sync with only malformed cards could clear the local card cache. Cached cards are now preserved when a full sync contains no processable cards.
- Fixed Push Story left/right navigation failing when Push Max attached a push dedupe id (
br_p_id).
Changed
- Updated the Android Gradle Plugin from 8.12.3 to 9.2.1.
- Migrated to AGP 9 built-in Kotlin and removed the separate
kotlin-android/org.jetbrains.kotlin.androidplugin.