17.3.0 (2026-10-16)
Features
- ad-manager: add custom native ads (4688b18)
- add mobileAds().registerWebView(viewTag) for WebView API for Ads (a797dde)
- facebook: Meta ATT/DPO hooks and warn on unknown Expo plugin keys (675e62f)
- ios: expose setAudioSessionIsApplicationManaged for page video coexistence (f94470d)
Bug Fixes
- android: build NativeAdView with Activity context for click intents (2c5a3fe)
- android: clear Java deprecations and alias ANCHORED to LargeAnchored (f395a6e)
- android: clear Kotlin deprecations with AgeRestrictedTreatment and Event surfaceId (bc15327)
- android: clear owned Gradle deprecations and drop manifest package (d3a45c5)
- android: destroy BannerAd on host Activity destroy (82de758)
- android: guard googleMobileAdsJson when Expo plugin owns app config (08a8330)
- android: guard NativeAdView reloadAd against dual-host rebind crash (e537624)
- android: keep native-ad SDK overlay above React content for clicks (5cacb8d)
- android: lay out collapsible banners with dynamic measured height (4b93acf)
- android: refresh BannerAd presentation for hybrid video creatives (e8b208c)
- android: refresh NativeMediaView when pager layout becomes visible (7a17e1c)
- android: retain NativeAd AdLoader until createForAdRequest settles (efc2284)
- android: stop BannerAd from stealing hardware BACK focus (3747341)
- android: stop FLUID banner reload loop from sizeConfig and layout (d1bd432)
- appium: harden Android multi-format hook and native-overlay navigation (698a712)
- example: skip Kotlin 2.3 metadata check for :app compile (a71af5e)
- ios: bind fullscreen recovery to show-time presentation (6c93c11)
- ios: bind presented-ad identity once at present time (6b33173)
- ios: break Fabric banner paidEventHandler retain cycle (8a50f58)
- ios: ceil NativeAdView frame to keep assets inside the ad view (d20235a)
- ios: emit fullscreen reward before CLOSED and keep weak delegate alive (fca10d9)
- ios: export CeilNativeAdViewFrame with C linkage for .mm callers (2e3c154)
- ios: expose nativeAd.images in native ad payload (8ccfe5e)
- ios: make fullscreen dismiss recovery scene-safe (022d616)
- ios: mark RNGoogleMobileAds config script always out of date (f1f154e)
- ios: recover touches when fullscreen dismiss callback is skipped (b848e79)
- ios: require bound identity before draining interaction locks (7b8be1f)
- ios: resolve the window through the scene instead of the app delegate (0e6d709), closes #908
- ios: restore Codegen trailing whitespace in Spec.mm (2cf95b8)
- ios: restore userInteractionEnabled after NativeAsset Fabric recycle (98404d5)
- ios: seal presented identity after first capture attempt (5d805fd)
- ios: wait briefly for Info.plist in RNGoogleMobileAds config script (6f7b873)
- native-ad: re-register NativeAsset when FlatList rebinds responseId (2fb42e9)