Skip to content

Stash Native 2.3.1

Latest

Choose a tag to compare

@github-actions github-actions released this 03 Sep 16:35
· 12 commits to main since this release

Added

  • iOS/Android: StashNativeCard.setInspectableWebViewsEnabled(...) opt-in flag that makes the checkout WebViews inspectable (Safari Web Inspector / chrome://inspect) for QA/debug builds and automated UI tests. Off by default; enabled in both sample apps.

Changed

  • iOS/Android: new-window navigations (anchor target="_blank" or window.open, main frame or iframe) now open in the external browser instead of being dropped — http/https via the system browser (openLink semantics), other schemes via the existing deeplink handling. The checkout stays presented.
  • iOS/Android: deeplink interception extended to sub-frames, not just the main frame. Android parses intent:// URIs with component/selector stripping and browser_fallback_url / Play Store fallback; iOS offers user-tapped https links to a claiming app as universal links; both degrade gracefully when no app is installed.

Removed

  • Android: Google Pay WebView redirect handling (checkGooglePayRedirect / openGooglePayInBrowser, the googlePayRedirectHandled guard, and the GOOGLE_PAY_* constants). No public API change.

Fixed

  • Android: checkout WebView content is never darkened. Force-dark / algorithmic darkening is now disabled unconditionally instead of keyed to the host theme, fixing near-invisible third-party (Adyen secured-field) input text in device dark mode. The checkout self-themes via the theme= URL parameter, so paint-time darkening only ever hurt.
  • Android/iOS: expanded card height is clamped to the real content box, fixing the scroll bug and a keyboard-triggered expand that shrank the card below its collapsed height. Covers phone and tablet, including rotation, and drag-release snap-back.
  • Android: phone sheet height ceilings subtract bottom insets and intersect with the root-layout content box, closing a race where expand() ran before the first onApplyWindowInsets dispatch; expand() is capped so the card can never grow past 100%.
  • Android: clampRatio is guarded against NaN/Infinity (parity with iOS stashClampRatio), and scheme / provider-detection string matching uses Locale.ROOT to avoid Turkish-locale mismatches.
  • Sample apps: both samples bundle a deeplink test harness; iOS sample fixes device-build compilation and the iOS 18 tab bar layout.

Android

Download StashNative-2.3.1.aar and add to your project's libs folder.

dependencies {
    implementation files('libs/StashNative-2.3.1.aar')
    implementation 'androidx.appcompat:appcompat:1.6.1'
    implementation 'androidx.browser:browser:1.7.0'
}

iOS

Download StashNative-2.3.1.xcframework.zip, unzip, and add StashNative.xcframework to your Xcode project.

Alternatively, use Swift Package Manager with this repository URL.