Changelog

React Native SDK Changelog

All notable changes to this project are documented here. Follows Keep a Changelog and Semantic Versioning.


[2.1.10] - 2026-09-11

Added

  • Enabled third-party cookies on Android DeunaWebView (thirdPartyCookiesEnabled) to support redirect and authentication flows requiring session cookies.

Fixed

  • Implemented state-based process-wide mutex in ExternalUrlHelper to strictly prevent duplicate external URL openings (3DS, modal, or in-app browser) while an external view is actively open.
  • Preserved asynchronous AppState close detection for IN_APP_BROWSER (Chrome Custom Tabs) on Android while enforcing process-wide mutex.
  • Routed WebViewEventType.openExternalUrl and WebViewEventType.redirect through notifyOpenExternalUrl to ensure debounce and mutex checks are applied consistently.
  • Fixed ExternalUrlController to handle closeExternalUrl events sent from external WebViews.
  • Added resetReopenGuard cleanup in DeunaSDK.setWidgetController to prevent orphaned static mutex states across new widget initializations.
  • Moved Opening external URL log to execute only after canOpenUrl guard passes.

[2.1.9] - 2026-09-07

Removed

  • Removed deuna-web-sdk git submodule and copy-types.sh script to prevent CI build desyncs.
  • Embedded and directly versioned src/types/ within the repository.

[2.1.8] - 2026-09-07

Added

  • Added onOpenWindow prop forwarding to DeunaWidget.
  • Added warn method to DeunaLogs and exported DeunaLogs.

Fixed

  • Fixed window popups blocking in iOS WebView by enabling javaScriptCanOpenWindowsAutomatically.
  • Fixed trailing slashes in widget URLs when constructing controllers.
  • Fixed duplicate URL openings and redirection loops via unified reopen guard in ExternalUrlHelper.

Changed

  • Centralized SDK logging into DeunaLogs and removed redundant console logs across SDK and example apps.

[2.1.7] - 2026-08-11

Fixed

  • Fixed ELEMENTS_URLS import path in vaultApi.ts to reference constants instead of buildElementsLink.

[2.1.6] - 2026-08-06

Added

  • Added errorApmMissingReference to CheckoutEventType enum.
  • PaymentWidgetController now fires onError with PaymentErrorType.paymentError when an APM reference fails to generate or display (generation_failed / display_failed).

[2.1.4] - 2026-06-10

Added

  • Added paymentMethodsEntered and paymentMethodsStarted to the ElementsEvent enum.

Fixed

  • initPayment widget: userInfo is now always forwarded regardless of whether userToken is present, allowing both fields simultaneously.

[2.1.0] - 2026-05-12

🚨

BREAKING CHANGE — Native Wallet Support (Google Pay & Apple Pay)

Version 2.1.0 introduces native Google Pay and Apple Pay support via a new native module (DeunaWalletsModule). This requires additional setup steps that did not exist in previous versions.

What's new

  • sdk.getWalletsAvailable() — queries the vault API and filters by what the device actually supports natively.
  • sdk.initElements() — launches the native Google Pay or Apple Pay payment sheet directly, without a WebView.

Migration Guide

React Native CLI — run pod install after upgrading:

npm install @deuna/[email protected]
cd ios && pod install

Expo (managed workflow) — re-run prebuild after upgrading:

npm install @deuna/[email protected]
npx expo prebuild
⚠️

If you skip these steps, getWalletsAvailable() will always return [] and initElements() will throw.

Added

  • getWalletsAvailable(params) — returns native wallet providers available on the current device for the given order.
  • initElements(params) — launches the native wallet payment sheet (Google Pay or Apple Pay) and handles tokenization.
  • Native iOS module (DeunaWalletsModule) implemented as RCTEventEmitter — linked automatically via React Native autolinking.
  • Native Android module (DeunaWalletsModule) implemented as ReactContextBaseJavaModule — linked automatically via React Native autolinking.
  • Expo config plugin (withAndroidDepsCompat) automatically patches app/build.gradle during expo prebuild.

Fixed

  • Android: allowedCardNetworks incorrectly cast to String, causing crash on Google Pay launch.
  • Android: ObjectAlreadyConsumedException crash on Google Pay success — WritableMap consumed twice.
  • iOS: Removed redundant conditional cast warning in success callback logging.

[2.0.5] - 2026-04-28

Fixed

  • Fixed race condition for InAppBrowser close listener causing WebView to close before external URL was closed.

[2.0.4] - 2026-03-26

Fixed

  • Improved iOS in-app browser close handling by marking browser as closed after returning from openUrl.