SUQODocs
User GuideAPI ReferenceSDKs

Changelog & versioning

Release history and versioning policy for the SUQO React Native SDK.

Versioning policy

The SDK follows SemVer: MAJOR.MINOR.PATCH, with the version decided from Conventional Commits at release time.

  • MAJOR — a breaking change (feat!: or a BREAKING CHANGE: footer). A breaking change goes straight to 1.0.0, even while the version is below 1.0.
  • MINOR — a new feature (feat:).
  • PATCH — a fix (fix:).

Documentation, chore, test and refactor commits do not trigger a release. The SDK makes no SUQO API calls of its own, so unlike the server-side SDKs its version is not tied to the API's path version.

Compatibility table

SDK VersionSupported API VersionChange TypeStatus
0.0.1n/a (no API calls)Initial releaseShipped

The full history is in CHANGELOG.md in the SDK repository.

0.0.1 - 2026-10-07

Release on GitHub. The first published version.

Features

  • SuqoProvider and useSuqoCheckout(). One provider at the app root owns a single full-screen checkout screen; open({ sessionId }) shows it and reports the outcome through exactly one of onSuccess, onFailure or onClose. It also resolves a promise, so await works instead of callbacks. close() dismisses it. The checkout session is created on your backend and must already carry the buyer; nothing about the buyer passes through this SDK.
  • mode prop on SuqoProvider: 'live' resolves to app.suqo.ai, 'sandbox' (the default) to test.suqo.ai. baseUrl is optional and overrides it when set. LIVE_ORIGIN, SANDBOX_ORIGIN, resolveBaseUrl and the CheckoutMode type are exported alongside DEFAULT_CHECKOUT_PATH ('/c/:id').
  • A suqo:unavailable event carrying not-found | expired | spent | no-customer | no-methods | load-failed. Deliberately an event and not a callback: no payment was attempted, so onFailure would be a lie. The buyer sees the page's own explanation and dismisses, which settles as closed.
  • The screen is built from React Native core primitives — Modal and Animated — so react-native-webview is the only native dependency and the package works in Expo Go with no configuration. Presented as a full-screen modal rather than a route, so it needs no navigation library and no route registration, and Android's hardware back button dismisses it like any screen.
  • The checkout block scrolls inside the screen, which a seller with NPS enabled needs: the bank list alone runs to about 1500px.
  • loadingLabel on SuqoProvider — the line under the large spinner while the page loads. Defaults to Loading secure checkout; pass '' for a spinner on its own.
  • Bank and wallet deeplinks (fonepayApp://, Android intent://) are lifted out of the WebView to Linking.openURL. javascript:, data:, file: and blob: navigations are refused outright. suqo:intent (the browser SDK's deeplink message) is dropped on purpose: this WebView already navigates to a deeplink in the same window.
  • Gateway return pages are allowed to load, because that is where the payment is verified. The outcome is taken from the page's own suqo:result message, after verification.
  • Two load deadlines (12s to first signal, 25s to the block mounting) with a retry, so a page that never boots reports a loading failure rather than hanging.
  • debug forwards the page's own console output, errors and requests to the host's console, with redaction. An onEvent stream feeds the host's own logs.
  • VERSION, this package's version as published.

Requires

  • The SUQO web app must serve /c/<sessionId>, route postToHost and publishResult through window.ReactNativeWebView, treat an RN host as a gateway window, and hand off to gateways in the same window. Without those, the checkout page loads but reports nothing.

On this page