Releases: dodopayments/dodopayments-mobile-sdk
Releases · dodopayments/dodopayments-mobile-sdk
Release list
React Native v1.2.0
- Add
customizationonstart(): an optionalBrowserCustomizationwith
separateandroid/iosbags. Android covers toolbar and
navigation-bar(-divider) colors, close button style and position,
share/title/URL-bar-hiding/bookmarks/downloads toggles, and a forced
light/darkcolorScheme. iOS covers dismiss button style, bar-collapsing,
presentation style, andcolorScheme. Every field is optional and simply
omitted when unset, so the underlying platform's own current behavior
applies rather than this SDK asserting a value on its behalf. - Bumps
com.dodopayments.api:checkout-androidto 1.1.0 and re-vendors the
Swift core with the same customization support.
Kotlin v1.1.0
- Add
BrowserCustomizationonCheckoutParams: toolbar and
navigation-bar(-divider) colors, close button style (DEFAULT/BACK) and
position, share/title/URL-bar-hiding/bookmarks/downloads toggles, and a
forced light/darkcolorScheme. Every field defaults tonull, andnull
means the correspondingCustomTabsIntent.Buildersetter is never called
at all — the Custom Tab host's own current behavior applies rather than
this SDK asserting a value on its behalf.
Flutter v1.1.0
- Add
customizationonCheckoutParams: an optionalAndroidBrowserOptions/
IosBrowserOptionspair. Android covers toolbar and
navigation-bar(-divider) colors, close button style and position,
share/title/URL-bar-hiding/bookmarks/downloads toggles, and a forced
light/dark color scheme. iOS covers dismiss button style, bar-collapsing,
presentation style, and color scheme. Every field is nullable and simply
transmitted asnullwhen unset, so the underlying platform's own current
behavior applies rather than this SDK asserting a value on its behalf. - Bumps
com.dodopayments.api:checkout-androidto 1.1.0 and re-vendors the
Swift core with the same customization support.
react-native-v1.1.2
- Fix: swiping down to dismiss the checkout sheet left
start()'s promise
unresolved, which also kept the in-progress guard set — every later
start()call rejected withALREADY_IN_PROGRESSuntil app restart.
Re-vendors the Swift core at v1.0.2, which resolves the promise with
cancelledon swipe-dismiss too, same as the Done button.
flutter-v1.0.4
- Fix: swiping down to dismiss the checkout sheet left
start()'sFuture
uncompleted, which also kept the in-progress guard set — every later
start()call threwALREADY_IN_PROGRESSuntil app restart. Re-vendors
the Swift core at v1.0.2, which completes theFuturewithcancelled
on swipe-dismiss too, same as the Done button.
React Native v1.1.1
- Bump
com.dodopayments.api:checkout-androidto 1.0.2 and re-vendor the
Swift core at v1.0.1: aCANCELLED/PENDINGresult no longer wipes the
abandoned-session record, sogetAbandonedSession()can be reconciled
after a dismissed or unparseable checkout instead of returningnull. - README's
reconcileAbandonedSession()example now reconcilespending
alongsidecancelled, and only clears the record once the backend
reports a terminal outcome.
Kotlin v1.0.2
- Fix: a
CANCELLEDorPENDINGresult no longer wipes the abandoned-session
record. Dismissing the Custom Tab is one outcome the SDK cannot vouch for --
no return URL arrived, so the payment may well have succeeded (e.g. tapping
the close button while the hosted success page counts down its redirect).
PENDINGis the other: it's also the fallback for a missing or unrecognized
status, so a malformed return URL landed here too, sometimes with no
paymentId/subscriptionIdeither -- clearing then left no handle at all.
Thecks_...session id now survives both, sogetAbandonedSession()
returns it and the merchant can reconcile server-side instead of guessing.
Statuses parsed off the return URL with a durable outcome still clear the
record as before, and pre-presentation failures still clear it so no
phantom session is left behind -- except a checkout activity recreated by a
late redirect with no launch parameters, which can follow a real payment in
a now-dead process and no longer clears blindly. - No API change: the five statuses and their triggers are untouched.
Flutter v1.0.3
- Bump
com.dodopayments.api:checkout-androidto 1.0.2 and re-vendor the
Swift core at v1.0.1: aCheckoutStatus.cancelled/.pendingresult no
longer wipes the abandoned-session record, sogetAbandonedSession()can
be reconciled after a dismissed or unparseable checkout instead of
returningnull. - README's
reconcileAbandonedSession()example now reconcilespending
alongsidecancelled, and only clears the record once the backend
reports a terminal outcome.
React Native v1.1.0
- Expo config plugin registers the merchant callback scheme at prebuild when given
{ "scheme": "myappcheckout" }: writes AndroidmanifestPlaceholders["dodoCallbackScheme"]and an iOSCFBundleURLTypesentry. Bare plugin entry withoutschemeremains a no-op. - Rejects
http/httpsand other system schemes; throws on invalid present schemes (no silent no-op). - Gradle editing is scoped to the
defaultConfigblock and skips comments and string literals, so amanifestPlaceholdersmap belonging to abuildTypes/productFlavorsvariant — or one that is commented out — is never edited by mistake. Merges into an existingdefaultConfigmap (including the empty[:]literal) and otherwise appends at the end of the block, so a later whole-map assignment cannot wipe the key. Re-running prebuild is idempotent and preserves surrounding indentation. - Warns when the scheme collides with
expo.scheme(prefer a dedicated checkout scheme). Loads config-plugins viaexpo/config-pluginswith a@expo/config-pluginsfallback. iOS still needshandleOpenURL.
React Native v1.0.1
- Fix
NativeDodoCheckout.tscodegen spec failing to parse on RN <0.80: importUnsafeObject/EventEmitterdirectly fromreact-native/Libraries/Types/CodegenTypesinstead of the namespacedCodegenTypes.Xform, which older codegen can't resolve. android/build.gradlenow depends oncheckout-android:1.0.1(was still pinned to1.0.0) andkotlinx-coroutines-android:1.9.0(was1.11.0) — the stale pins here previously overrode the Kotlin core's own fixed versions for any consuming RN app. LoweredcompileSdk/targetSdkfallback from 36 to 35 to match.- Correct the documented minimum React Native version from 0.76.0 to 0.77.0 — 0.76's
CodegenTypesmodule has noEventEmitterexport, so this spec never actually typechecked on 0.76 in the first place. - Document the real Android floor:
compileSdk34, taken from the AAR metadata of the AndroidX artifacts the native core depends on. There is no Kotlin Gradle plugin or AGP floor beyond what React Native itself imposes.