Skip to content

v17.2.0

Latest

Choose a tag to compare

@mikehardy mikehardy released this 25 Sep 03:36

17.2.0 (2026-09-25)

Features

  • hooks: add options-only useGAMInterstitialAd with onAppEvent (c6ac231)
  • hooks: add useAppOpenAdManager for app-open lifecycle (40573d8)
  • hooks: add useNativeAd with lifecycle-safe NativeAd ownership (1093613)
  • js: export TestDeviceIds and clarify test device docs (2f90580)
  • pools: gate AdPoolProvider creates with enabled for consent (dcabb4e)
  • report android-next-gen AdCapabilities when linked (2edad12)

Bug Fixes

  • ads: apply categoryExclusions to ad requests (904b85c)
  • ads: coerce numeric customTargeting values to strings (1387579)
  • ads: reject sparse customTargeting arrays (9a29f44)
  • ads: unify MobileAd/PooledAd show() failure channels (6ee6a7b)
  • android: skip kotlin-android when AGP built-in Kotlin is present (28ea492)
  • appium, example: stabilize pool poll and Ad Inspector dismiss (7a47e09)
  • appium: dismiss Android immersive fullscreen education (69a4cad)
  • appium: harden iOS serial startup and Rewarded dismiss flake (b5b3ff1)
  • appium: stabilize iOS overlay dismiss and parallel startup (7de852a)
  • core: gate pool peek on capabilities with structured AdError (da9bee6)
  • e2e: pin Appium driver transitive dependencies (006bd65)
  • e2e: scope Android host recovery to the focused window (959e622)
  • e2e: wait for rewarded dismiss chrome before Android close taps (90522eb)
  • hooks: avoid dynamic delete and redundant cast in usePooledAd (f54f116)
  • hooks: make useAppOpenAdManager autoLoad the master request gate (7c168ee)
  • hooks: preserve PooledAd.show() two-channel contract in usePooledAd (b2630e4)
  • hooks: suppress app-open auto-show after another fullscreen ad (AO-2) (7402f9f)
  • js: name GAM unit remedy in AdMob banner pool/multi-format errors (f463de9)