Repository navigation
Releases: AdversportTeam/react-native-aps
Releases · AdversportTeam/react-native-aps
Release list
Release 2.6.0
Bid requests are now queued inside the library, so an app no longer has to write its own scheduler around the Android APS SDK, which serves bid requests one at a time.
Added
loadAd(options)takes a priority and an abort signal.The library never hands the SDK more requests than it actually serves at once (1 on Android, 3 once widened withconst controller = new AbortController(); const kvs = await loader.loadAd({ priority: 0, signal: controller.signal });
bidRequestConcurrency, unbounded on iOS). Requests above that wait in a JS queue, ordered bypriority(lowest first, ties keep arrival order). While a request is still queued,controller.abort()drops it before it ever reaches Amazon. Once emitted, the SDK cannot cancel it: the abort is then ignored and the caller is responsible for discarding the answer.loadAd()with no argument behaves exactly as before.AdLoader.getQueueStats()reports the queue state for debug screens: cap in force, no-response delay, in flight, queued, emitted, aborted before emit, unanswered, max queue depth.AdLoader.NO_RESPONSE_MS, the floor of the no-response delay.getBidRequestExecutorStatus()also returnsbidTimeoutMs, the SDK bid timeout reported by Android, which Amazon can change server-side.
Fixed
loadAdalways settles. The Android SDK can swallow an exception before its HTTP call and never call back, leaving the promise pending for the life of the process. It now rejects with anAdErrorof codeno_response, and frees the queue slot. The delay is at least 8 s, above the SDK network budget (1 s connect plus 5 s read), and followsbidTimeoutMs + 3 swhen Android reports a higher value.- Native request map leak. Every one-shot request stayed in a native map for the life of the process, one per placement and per auction cycle. It is now removed on its first callback, with an identity check so a newer request reusing the same id is never dropped. Both platforms lock their map.
stopAutoRefresh()also drops a request still waiting in the queue.
Behaviour changes
loadAdcan now reject where it previously stayed pending forever:abortedwhen the caller aborts a queued request,no_responsewhen the native side never answers. A call site without a.catchwill surface an unhandled rejection where it used to hang silently.- Automatic SDK refreshes do not go through the queue, only explicit
loadAdcalls do.
Internal
- Android JVM unit tests now run in CI, so the guard test that checks the SDK private fields still exist really blocks an SDK bump that renames them.
Validated at runtime before release: queueing, priority order, abort before emit under simulated latency, no_response at 8 s with a muted native callback and recovery of the queued request, native map cleanup, on a Pixel emulator and a Galaxy S22 with real bids, plus an iOS simulator build.
Full Changelog: v2.5.0...v2.6.0
Release 2.5.0
Release 2.5.0 (2026-09-21)
Features
- Android bid request concurrency:
APSAds.initialize(appKey, { bidRequestConcurrency })widens the APS SDK bid executor, which serves requests one at a time on a single thread by default. Android only, integer 1–16, default 1 keeps the SDK behaviour; any failure keeps the SDK default and is reported, never thrown (dc27c8d, #19) APSAds.getBidRequestExecutorStatus(): what the SDK really serves (concurrency,widened,detail); iOS resolvesInfinity, its SDK does not serialise requests
Tests
- JVM unit test against the resolved
aps-sdk: pins the SDK members the widening relies on and proves three requests submitted through the SDK entry point run at once (cd example/android && ./gradlew :react-native-aps:testDebugUnitTest)
Chores
- podspec
sourcepoints at this repository and thev-prefixed tags
Release 2.4.0
Release 2.4.0 (2026-09-10)
Features
- Amazon DSP content URL:
contentUrloption on bid requests, applied right beforeloadAdinside the same native call (62b44e8) APSAds.setExternalUserIds: third-party user identifiers (ID5, LiveRamp…) sent with every bid request, cleared with an empty array (03d0130)
Bug Fixes
- iOS: build the APS external user id with the Swift initializer (81413ac)
Dependencies
- Android
aps-sdk11.1.1 → 12.0.1, iOSAmazonPublisherServicesSDK5.3.1 → 5.6.4 (03d0130)
Chores
Release 2.2.1
Release 2.2.1 (2026-03-30)
Bug Fixes
- Fix adLoader consistency: ensure adLoader updates are consistent across platforms (ef5e539)
- Enhance error handling: improve error handling in ad loading across iOS and Android (75461ee)
Improvements
- AdError refactor: clean up AdError class code for improved readability (2444a9c)
- Android GDPR: add iabtcf-decoder dependency to Android build.gradle for GDPR consent parsing (c6a671e, 6c8c2f0)
Chores
- Update GitHub workflows to use Node.js 22 and enable Corepack
- Update TypeScript version and configurations
- Update react-native-google-mobile-ads example dependency to 15.8.3
Release 2.2.0 - SDK Migration & New Architecture Support
What's Changed
SDK Updates
- iOS: Pin
AmazonPublisherServicesSDKto5.3.1(previously unpinned~> 5.2) - Android: Upgrade
aps-sdkfrom9.4.2to11.1.1
New Architecture & Build Targets
- Migrate to React Native 0.77 new architecture support
- iOS: Use
install_modules_dependencies, bump minimum to iOS 13.0 - Android:
compileSdkVersion35,minSdkVersion24,targetSdkVersion34,buildConfigenabled
Improvements
- Enhanced error handling and event logging for Banner, Interstitial, and APSAds components
- Example app migrated from Java to Kotlin (MainActivity/MainApplication)
- Removed legacy Flipper and JNI boilerplate
Breaking Changes
- Minimum iOS version raised from 10.0 to 13.0
- Minimum Android SDK raised from 21 to 24
- Android APS SDK major version bump (9.x → 11.x) may require adapter updates
Full Changelog: v2.0.7...v2.2.0