Skip to content

Releases: AdversportTeam/react-native-aps

Release 2.6.0

Choose a tag to compare

@JeromeBonfort JeromeBonfort released this 22 Sep 12:36
0cee567

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.
    const controller = new AbortController();
    const kvs = await loader.loadAd({ priority: 0, signal: controller.signal });
    The library never hands the SDK more requests than it actually serves at once (1 on Android, 3 once widened with bidRequestConcurrency, unbounded on iOS). Requests above that wait in a JS queue, ordered by priority (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 returns bidTimeoutMs, the SDK bid timeout reported by Android, which Amazon can change server-side.

Fixed

  • loadAd always 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 an AdError of code no_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 follows bidTimeoutMs + 3 s when 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

  • loadAd can now reject where it previously stayed pending forever: aborted when the caller aborts a queued request, no_response when the native side never answers. A call site without a .catch will surface an unhandled rejection where it used to hang silently.
  • Automatic SDK refreshes do not go through the queue, only explicit loadAd calls 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

Choose a tag to compare

@JeromeBonfort JeromeBonfort released this 21 Sep 13:56
f19f517

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 resolves Infinity, 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 source points at this repository and the v-prefixed tags

Release 2.4.0

Choose a tag to compare

@JeromeBonfort JeromeBonfort released this 21 Sep 13:56
dfefd37

Release 2.4.0 (2026-09-10)

Features

  • Amazon DSP content URL: contentUrl option on bid requests, applied right before loadAd inside 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-sdk 11.1.1 → 12.0.1, iOS AmazonPublisherServicesSDK 5.3.1 → 5.6.4 (03d0130)

Chores

  • Publish workflow simplified to npm publish (bc610b2)
  • Docs: why the deprecated iOS setters stay on DTBAds (8727f94)

Release 2.2.1

Choose a tag to compare

@JeromeBonfort JeromeBonfort released this 30 Mar 14:27

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

Choose a tag to compare

@JeromeBonfort JeromeBonfort released this 27 Mar 15:34

What's Changed

SDK Updates

  • iOS: Pin AmazonPublisherServicesSDK to 5.3.1 (previously unpinned ~> 5.2)
  • Android: Upgrade aps-sdk from 9.4.2 to 11.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: compileSdkVersion 35, minSdkVersion 24, targetSdkVersion 34, buildConfig enabled

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

Release 2.0.7

Choose a tag to compare

@JeromeBonfort JeromeBonfort released this 11 Sep 15:16

2.0.7 (2025-09-11)

Bug Fixes

  • resolve ObjectAlreadyConsumedException and RN 0.79 compatibility (690864a)

Release 2.0.6

Choose a tag to compare

@JeromeBonfort JeromeBonfort released this 09 Sep 13:27

2.0.6 (2025-09-09)

Bug Fixes

  • convert Android classes from Kotlin to Java for universal compatibility (9531b83)

Release 2.0.5

Choose a tag to compare

@JeromeBonfort JeromeBonfort released this 08 Sep 14:15

2.0.5 (2025-09-08)

Bug Fixes

  • ci: update deprecated GitHub Actions to latest versions (5123eb3)
  • test: resolve Jest performance object conflict and NativeEventEmitter issues (2322a2e)

Release 2.0.1

Choose a tag to compare

@github-actions github-actions released this 11 Jun 08:51

2.0.1 (2022-06-11)

Bug Fixes

  • ios: fix ios auto refresh not working (#2) (19d6b6a)

Release 2.0.0

Choose a tag to compare

@wjaykim wjaykim released this 31 May 06:47

2.0.0 (2022-05-31)