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 aBREAKING CHANGE:footer). A breaking change goes straight to1.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 Version | Supported API Version | Change Type | Status |
|---|---|---|---|
0.0.1 | n/a (no API calls) | Initial release | Shipped |
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
SuqoProvideranduseSuqoCheckout(). One provider at the app root owns a single full-screen checkout screen;open({ sessionId })shows it and reports the outcome through exactly one ofonSuccess,onFailureoronClose. It also resolves a promise, soawaitworks 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.modeprop onSuqoProvider:'live'resolves toapp.suqo.ai,'sandbox'(the default) totest.suqo.ai.baseUrlis optional and overrides it when set.LIVE_ORIGIN,SANDBOX_ORIGIN,resolveBaseUrland theCheckoutModetype are exported alongsideDEFAULT_CHECKOUT_PATH('/c/:id').- A
suqo:unavailableevent carryingnot-found | expired | spent | no-customer | no-methods | load-failed. Deliberately an event and not a callback: no payment was attempted, soonFailurewould be a lie. The buyer sees the page's own explanation and dismisses, which settles asclosed. - The screen is built from React Native core primitives —
ModalandAnimated— soreact-native-webviewis 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.
loadingLabelonSuqoProvider— the line under the large spinner while the page loads. Defaults toLoading secure checkout; pass''for a spinner on its own.- Bank and wallet deeplinks (
fonepayApp://, Androidintent://) are lifted out of the WebView toLinking.openURL.javascript:,data:,file:andblob: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:resultmessage, 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.
debugforwards the page's own console output, errors and requests to the host's console, with redaction. AnonEventstream feeds the host's own logs.VERSION, this package's version as published.
Requires
- The SUQO web app must serve
/c/<sessionId>, routepostToHostandpublishResultthroughwindow.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.