React Native SDK
iOS
✨ Improvements
- Klarna auto continues when single payment option
- Implement the Co-badged Cards feature on Drop-in
🔧 Fixes
- Fix memory crash in validateRawData with weak self capture
Android
✨ Improvements
- We have bumped
compile
andtarget
versions to35
- Analytics: We have reduced number of analytics events captured and sent to our server
- Improvements to DI resolution
✨ Improvements
- We have added
CardFormUIOptions.payButtonAddNewCard
to support the “Add New Card” option in the card form flow. - Introduced support for the ‘Continue payment flow’ workflow action to configure checkout outcome. See our documentation for more info.
Android
✨ Improvements
- PayPal: Improved support for picture-in-picture mode. Fixed an issue where some successful authentication flows were incorrectly marked as errors by the SDK.
- 3DS: Enhanced locale normalization. Resolved an issue where certain locales were being rejected by the 3DS SDK, causing the flow to fail.
- Klarna: Updated Klarna SDK to
1.1.0
⚠️ Primer SDK now supports BOM (Bill of Materials) via io.primer:bom
If you’re using Klarna in your own code, you can switch to the BOM to automatically stay aligned with the supported version:
implementation(platform("io.primer:bom:<version>")) implementation("io.primer:klarna-android")
This removes the need to manage Klarna versions manually.
If you choose not to use the BOM, make sure you manually update to io.primer:klarna-android:1.1.0
🚀 New feature
- The SDK will now default to using API version 2.4 when initialised. It is possible to use API version 2.3 via
PrimerSettings.apiVersion
. For more information see our SDK reference, Api Reference and Migration Guides.
Android
✨ Improvements
- 3DS Locale Propagation: Resolved an issue where the 3DS SDK occasionally rejected propagated locale settings.
- iDEAL via Adyen: iDEAL is now fully supported as a redirect-based payment method.
🔧 Fixes
- We have fixed a bug in the Drop-In Checkout which resulted in “Additional fees may apply” text being shown for the Card payment method, when no surcharge was present.
- 3DS Flow Stability: Fixed crashes that occurred when the 3DS flow failed while the app was running in the background.
iOS
✨ Improvements
- Improved error handling when server returns 202 response code
No Android Changes
iOS
🔧 Fixes
- We have fixed a bug in the Drop-In Checkout which resulted in “Additional fees may apply” text being shown for the Card payment method, when no surcharge was present.
✨ Improvements
- We have made changes to our internal Analytics logging system which will result in fewer unnecessary logs being sent.
🚀 New feature
- With this version it is possible to opt-in to use API v2.4. For more information see our SDK reference, API Reference and Migration Guides. By default, SDK will remain backward compatible and use API
v2.3
.
✨ Improvements
- Expanded Language Support: The React Native SDK now supports additional languages in drop-in, including:
- Arabic
- Bulgarian
- Czech
- Spanish (Argentina & Mexico)
- Estonian
- Croatian
- Hungarian
- Japanese
- Latvian
- Portuguese (Brazil)
- Romanian
- Vietnamese
- 3DS Sandbox Testing: Enhanced support for testing 3D Secure (3DS) flows in the sandbox environment.
Android
- Improved Analytics & Reporting: Enhanced tracking and insights for better performance monitoring.
🔧 Fixes
Android
- Drop-in: fixed an issue causing crashes when calling
Primer.dismiss()
after the checkout sheet is already dismissed.
✨ Improvements
- API Timeout values have been updated to improve behaviour in the loading phases of the checkout.
Android
- Enhanced Card Expiry Date Validation: We’ve improved the accuracy of expiry date validation for both headless and drop-in integrations.
- Improved Stability: Resolved crashes caused by
ConcurrentModificationException
during SDK initialization.
🚀 New feature
- We have added additional dismissal controls to IPrimerUIOptions. It is now possible to dismiss the Primer UI via gestures, an explicit close button, or both.
Android
- Co-badged cards in Drop-in: Primer SDK will automatically detect co-badged cards in the Drop-In integration. This release also brings improvements to card card network detection in general. Visit our documentation about co-badged cards in order to learn more.
🔧 Fixes
Android
- Analytics: fixed serialization and deserialization of analytics events.
🚀 New feature
-
Native Payment Method Button Support: Some payment methods require and offer their native views. To support this, we’ve updated our Asset Manager and introduced the
getPaymentMethodResource
method to access these native resources seamlessly. If you are using Headless integration, make sure to check our updated documentation about rendering of payment method buttons.ℹ️
Usage of Native Payment Method Button is a requirement for all new Android Google Pay API integrations that use a Google Pay payment button.
-
ACH Vaulting via Stripe: The ACH payment method through Stripe now supports a vaulting flow, enabling you to save customer details on agreement for future transactions.
-
Google Pay Enhancements: You can now collect additional user data through Google Pay, including the user’s email and shipping address. Check out our guide for details on enabling this feature.
-
Apple Pay Enhancements: You can now collect additional user data through Apple Pay, including the user’s email and shipping address. Check out our docs for details on enabling this feature.
🔧 Fixes
Android
- 3DS Locale Handling: We’ve fixed an issue where locale extensions were stripped, causing failed 3DS transactions. This update ensures compliance with 3DS guidelines and smoother transaction processing.
Deprecations
- In order to support
Native Payment Method Button
requirements, we have deprecated following methods:
🔧 Fixes
Android
- Prevent dismissal of Drop-in card form while a payment is active.
- Vipps via Adyen will now fall back to the Web flow in the event that the Vipps mobile app was not installed.
- We’ve fixed the crashes that occurred when using Blik through Adyen’s Drop-In in standalone mode.
- We’ve resolved occasional crashes related to the “fragment not attached” issue in Drop-In.
- We’ve resolved the issue causing crashes when users were deeplinked multiple times from PayPal.
- We’ve fixed the issue that caused crashes when retrying a 3DS challenge while another challenge was still in progress.
⚠️ Primer SDK now depends on io.primer:3ds-android:1.5.0
If you are using the 3DS dependency in your code, you are required to update it and align with the supported version. Otherwise, 3DS will result in failure.
iOS
- Fixes for range or index out of bounds crash in the Card Form UI.
- Fixes for a crash in InternalCardComponentsManager.
ℹ️ New 3DS SDK version is available If you are using the 3DS dependency in your code, we suggest updating to version 2.4.1.
🔧 Fixes
- iOS - Prevent dismissal of Drop-in card form while a payment is active.
- iOS - Discover card network image not showing.
- iOS - Move the cursor to the end of the text after pasting the card number.
- iOS - Errors in the card form are now correctly localized.
- iOS - Adyen Blik dismissal issue and small UI glitch.
- iOS - Fixed an issue where Adyen Vipps would not fall back to the Web flow in the event that the Vipps mobile app was not installed.
- iOS - Fixed an issue where Adyen Blik was not present in PrimerHeadlessUniversalCheckout availablePaymentMethods.
- iOS - Various stability improvements.
- Android - Fixed serialization issue on RN 0.76+
🔧 Fixes
- iOS - Fixed an issue where the PayPal flow was unusable in the Drop-In Universal Checkout
- iOS - Fixed an issue where
PrimerCheckoutData
was nil when reporting an error in payment creation.
✨ Improvements
Client Session caching
- It is now possible to cache the ClientSession configuration client-side, which can speed up certain flows in the SDK.
- This can be enabled via the clientSessionCachingEnabled flag. Before enabling the flag to true it’s recommended to reach out to Primer support for additional verification since there are edge cases where it is not advised.
✨ Improvements
Both platforms
- We have aligned the card expiry date validation logic between the Drop-In and Headless integrations, which were previously different. Additionally, we fixed a bug that caused the current month and year to be considered invalid expiry dates.
- We have aligned error handling across mobile platforms and enhanced our analytics capabilities. Additionally, we have thoroughly documented all errors. For more details, please refer to the official documentation for Android and iOS.
iOS
- We have fixed an issue where
primerWillCreatePaymentWithData
would be triggered twice when using the Klarna payment method.
🔧 Fixes
Android
- We have resolved the issue with the 3DS service initialization that was incorrectly triggering errors during the initialization process.
- Please note, that with this update, compatibility requires the use of the
1.4.3
version of the 3DS SDK (io.primer:3ds-android:1.4.3
).
iOS
- We have improved validation of the custom URL scheme setting used for payment methods with native UI.
- Fixed a bug in the Klarna Headless implementation where the correct events were not fired during a manual payment flow.
✨ Improvements
- We’ve added support for theming Drop-in Checkout - read more about configuring a theme in our documentation
🔧 Fixes
iOS:
- Klarna Cocoapods dependency build issue is now fixed. If
PrimerKlarnaSDK
was not present in the Pods, the compiler was reporting an error even if you do not have Klarna set up in your Primer dashboard.
Both platforms:
- PayPal: We have improved the PayPal payment method token by providing additional data, including the payer’s first name, last name, and external payer ID. For more information, see our docs (Android, iOS).
✨ Improvements
- We started the implementation of the comprehensive testing strategy for the ReactNative SDK. We have added a bunch of Unit tests to our project with the purpose of increasing confidence in our codebase. Much more tests are coming.
NOTE: This does not require any change on the merchant side.
💳 APMs support
iDEAL via Adyen
Adds the ComponentWithRedirectManager
that provides access to BanksComponent
. Using the BanksComponent
you can easily:
- load list of all supported banks
- submit user’s selection
For more information, see our payment method guide for iDEAL via Adyen, and sdk reference docs for ComponentWithRedirectManager.
Klarna is now available on HeadlessUniversalCheckout
We have extended our support for Klarna to React Native HeadlessUniversalCheckout.
Klarna payment categories have been expanded to allow support for all the available categories, including:
- Pay now
- Pay later: Pay in 30 days
- Pay over time: Pay in 3-4 instalments. First payment right away, then the rest in instalments (no interest)
- Fair financing: Instalment plans of 6, 12, 24, and 36 months with flexible payments (with interest)
For more information, see our payment method guide for Klarna headless, and sdk reference docs for KlarnaHeadlessManager.
🚀 New Feature
Support for Klarna EMD
Klarna may request extra merchant data (EMD) based on the merchant segment or consumer services. This additional information helps Klarna enhance risk assessment and improve conversion rates.
You can now dynamically pass any relevant EMD package via the Client Session as described here. Available schemas are documented here.
🔧 Fixes
iOS:
Previously on iOS, the SDK was sending an unexpected type for the paymentMethodType
in the IPrimerCheckoutPaymentMethodData
interface. To rectify this, we have added a new paymentMethod
field of type String
which should be used going forward. The paymentMethodType
field has been deprecated.
Android:
The paymentMethodType
field of the IPrimerCheckoutPaymentMethodData
interface has been deprecated in favour of paymentMethod
.
🚀 New Features
- Recapture the CVV of Saved Cards: In compliance with PCI standards, we’ve introduced a feature to recapture the CVV for saved cards to potentially increase the success rate of card-on-file transactions. This feature is particularly beneficial as some processors or issuers may have lower authorization rates for transactions without a CVV.
- Android - Google Pay: By default, Google Pay is presented to the user regardless of whether they have a supported card in their wallet. You can now automatically hide Google Pay if the user’s wallet does not contain a supported card by setting
existingPaymentMethodRequired
to true. Check our guide on how to enable this feature. - Android - PayPal: We have improved the PayPal payment method token by providing additional data, including the payer’s first name, last name, and external payer ID.
✨ Improvements
- Checkout Experience Enhancements:
- Enhanced immediacy of the loading spinner in the drop-in checkout process for a smoother user experience.
- Local card network identification has been made faster and more efficient.
- Client Session API: The
orderedAllowedCardNetworks
option has been introduced, allowing for the specification of supported card networks. This feature enhances network detection and validation for card payments and Apple Pay. - iOS - 3DS SDK Upgrade: Compatibility has been extended to version 2.3.0 or higher of the Primer 3DS SDK.
- iOS - Version Requirement: The minimum supported iOS version has been raised to 13.0, ensuring our SDK aligns with the latest iOS standards for improved app performance.
- iOS - Validation Error Handling: For card payments, the SDK now intelligently handles validation errors by only sending events when there’s a change in a field’s validation state. This optimization is specifically for card payments via headless checkout.
- iOS - Primer3DS SDK Version 2.2.0: The SDK has been upgraded to the latest version, ensuring access to state-of-the-art security features and an enhanced user experience.
- Android - Please note, that with this update, compatibility requires the use of the
1.4.2
version of the 3DS SDK (io.primer:3ds-android:1.4.2
). - Currency Handling: A new JSON data format for currencies has been introduced, centralizing currency information on our server to improve accuracy and efficiency.
🔧 Fixes
- Analytics Service Improvements: Significant enhancements have been made to our analytics service, improving its performance and resolving a memory leak issue that could lead to crashes in older SDK versions.
- UI Corrections: In the drop-in checkout, the card icon now accurately updates in response to changes in the entered card number.
- Android -Previously, when the app utilizing our SDK was built in release mode with minification applied, initialization of the SDK would fail. We’ve since addressed this issue by updating our consumer-rules.pro files. You should not manually include any Proguard rules, as consumer-rules.pro are seamlessly integrated with your existing Proguard rules.
✨ Improvements
- In this latest release, our 3DS support has undergone some slight enhancements. Please note, with this update, compatibility requires the use of the 1.4.0 version of the Android 3DS SDK (
io.primer:3ds-android:1.4.0
) andpod 'Primer3DS', '2.2.0'
for iOS. We recommend upgrading to this version as it brings new LOA Reference Number for all protocol versions. - Internally, between the different platforms, we have aligned how the currencies are formatted. Currency metadata is now being served from our server, allowing us to adapt to potential changes without the SDK update being needed.
🔧 Fixes
Android:
- Previously, Google Pay was hidden in case the amount was set to 0. From now on, Google Pay will be always shown in case it was enabled in Primer Dashboard and the device supports payments with Google Pay.
✨ Improvements
Android
- Fixed bug where order.fees.type was not being correctly deserialized by the SDK.
✨ Improvements
iOS
- Fixed an issue where typescript definitions weren’t being included in the release.
✨ Improvements
In this release, substantial enhancements have been made to our 3DS support, introducing a variety of improvements aimed at boosting the conversion rate of 3DS challenges. Please note, with this update, compatibility requires the use of io.primer:3ds-android:1.3.0
for Android and pod 'Primer3DS', '2.1.0'
for iOS.
Features
Headless Vault Manager
In this release, we have added VaultManager.configure()
which configures an instance of VaultManager
, which can then be used to:
- Fetch a list of vaulted payment methods
- Delete a vaulted payment method
- Perform a payment using a vaulted payment method and additional data (e.g. CVV)
Explore our documentation for detailed information.
✨ Improvements
iOS
- Fix the ApplePay bug where the flow was not shown if there were no cards added in the Wallet app.
- Added 2 flags:
showApplePayForUnsupportedDevice
: Bool If in some cases you don’t want to present the ApplePay option if the device is not supporting it set this tofalse
. The default value istrue
.checkProvidedNetworks
: Bool Flag introduced to enable the initiation of the ApplePay flow even when no cards are present in the Wallet. To enable ApplePay Add Card Flow, set this flag tofalse
This flag is set totrue
by default due to enable backward compatibility with older versions.
- Added 2 flags:
- 🍎 Upgraded Primer iOS SDK to 2.18.0 (Git | Changelog)
Android
✨ Improvements
Android:
In this version of the SDK we have introduced a new version of 3DS library. Primer SDK will depend on io.primer:3ds-android:1.2.0
from now on.
⚠️ If you are using 3DS dependency in your code, you are required to update it in order to align with the supported version. Otherwise, 3DS will result in failure.
🔧 Fixes
iOS
- Fix Apple Pay crash
Android
- Removed requirements for
amount
in client session when vaulting Paypal
⚠️ This version introduces breaking changes for Headless Checkout
✨ Improvements
It’s been more than 6 months that Headless Checkout has been released in Beta!
We gathered insightful feedback that pushed us to work on critical improvements to the developer experience of Headless Checkout.
This release candidate introduces a more robust, scalable, and stable flow for integrating Headless Checkout to implement a fully custom interface for your checkout.
Our documentation has been updated to reflect these changes. You can also find a Migration Guide detailing the changes.
3DS Service
Our 3DS service has been completely revamped. Primer SDK now supports 3DS protocol version 2.2.0
- Support 3DS weak validation
- Support 3DS OOB flow
- Improve 3DS reporting
Check out our detailed documentation here
ℹ️ iOS: If you are using Primer3DS
in your integration, make sure to bump it to v.1.2.0
🔧 Fixes
iOS
- Fix vaulted payment method on Drop In not getting tapped
- Enhance 3DS auth rates
- Fix checkout not rendering when there are vaulted payment methods
- Make performance improvements on raw data manager validation delegate
- Fix the scenario where the payment method’s image file is missing
- Print console warning when a
decisionHandler
is not implemented - Observability improvements
- Improves cancellation happening from 3rd party payment apps through deep links
- Fix Atome cancellation from within the web view
- Fix UI unresponsiveness happening on iOS 16.0.x in certain cases
Android:
✨ Improvements:
- Improvements to deeplink handling for Paypal and Redirect based payment methods
- Reintroduce showing a payment method directly with the Drop In UI integration
- Koin dependency has been bumped to version
3.3.3
- Better interoperability with
Java
when using Primer SDK - Internal SDK improvements
PrimerPaymentMethodAsset
now exposes the payment method’s friendly name
⚠️ If you are using Primer3DS
in your integration, make sure to bump it to v.1.2.0
✨ Improvements since 2.17.0-rc.11
- Enhance 3DS auth rates
✨ Improvements
- Reintroduce showing a payment method directly with the Drop In UI integration
✨ Improvements since 2.17.0-rc.9
iOS
⚠️ If you are also integrating Primer3DS
, make sure to install v.1.1.2 to avoid archiving issues with Xcode 14.3.1
- Fix checkout not rendering when there are vaulted payment methods
- Make performance improvements on raw data manager validation delegate
Android
- Apply fix on PayPal vaulting
- Resolved bug where Drop In UI could be launched multiple times at same time
⚠️ This version has a know bug and won’t render the Universal Checkout if there’re vaulted payment methods for the user defined in the client session
✨ Improvements since 2.17.0-rc.8
iOS
- Apply fix on PayPal vaulting
- Fix Klarna archiving issue
✨ Improvements
⚠️ This version introduces breaking changes for Headless Checkout. You also have to update the iOS pod Primer3DS
to version 1.1.1.
⚠️ This version has a know bug and won’t render the Universal Checkout if there’re vaulted payment methods for the user defined in the client session
- Our 3DS service has been completely revamped. Primer SDK now supports 3DS protocol version
2.2.0
- Support 3DS weak validation
- Support 3DS OOB flow
- Improve 3DS reporting
- Add 3DS sanity check in
PrimerSettings
Check out our detailed documentation here
✨ Improvements since 2.17.0-rc.11
- Minor fixes
🔧 Fixes
iOS:
- Take into account tax and discount on Apple Pay items
- Prioritize merchant amount over total amount
- Only take into account surcharge when merchant amount is not set
⚠️ This version introduces breaking changes for Headless Checkout
✨ Improvements
Asset
now exposes the payment method’s friendly name aspaymentMethodName
🔧 Fixes
iOS:
- Improved analytics
- Fix scenario where payment method’s image file is missing
- Print console warning when a
decisionHandler
is not implemented
⚠️ This version introduces breaking changes for Headless Checkout
✨ Improvements
💳 APMs support
Cards via iPay88
In this version of the SDK we added the support for Cards via iPay88.
Cards via iPay88 Payment Method now is fully supported via Headless Universal Checkout and Drop-In.
You can now make one-off payments or vault a card with iPay88 in order to make recurring payments.
✨ Improvements
Android:
- It is now possible to capture billing address using Google Pay by specifying
googlePayOptions.isBillingAddressCaptureEnabled = true.
Please check official docs for more details. - Contains the features and improvements of 2.16.5
iOS:
- Contains the features and improvements of 2.16.5
- Observability improvements
- Improves cancellation happening from 3rd party payment apps through deep links
- Fix Atome cancellation from within the webview
- Fix UI unresponsiveness happening on iOS 16.0.x on certain cases
- Fix iOS console warnings
🚀 Improvements
Android:
- Improved handling of payment cancellations for
Atome
- Improved internal analytics for 3DS events
- Improved internal analytics for headless integration
🔧 Fixes
iOS:
- Fix an issue that prevented 3DS from working with some card networks (AMEX, Maestro, Discover, and JCB)
- Fix an issue that prevented 3DS from working when the billing address is set or updated after the SDK is initialized with a client session
⚠️ This version introduces breaking changes for Headless Checkout
✨ Improvements
It’s been more than 6 months that Headless Checkout has been released in Beta!
We gathered insightful feedback that pushed us to work on critical improvements to the developer experience of Headless Checkout.
This release candidate introduces a more robust, scalable, and stable flow for integrating Headless Checkout to implement a fully custom interface for your checkout.
Our documentation has been updated to reflect these changes. You can also find a Migration Guide detailing the changes.
This release candidate will soon be merged into the main releases.
In addition to RC1
release, we have improved couple of things based on your feedback:
-
Fixed issue when calling
AssetsManager
’sgetPaymentMethodAsset
on Android that caused the result to be a string instead of an object -
Fixed an issue causing
applePay.isBillingAddressCaptureEnabled
to be ignored -
Reverted back old way of setting Drop-In callbacks: 2.17.0 does not introduce any breaking change for the drop-in checkout
-
Fixed an issue that caused Google Pay to be proposed on iOS
-
We’ve also added the changes to 2.16.4
⚠️ This version introduces breaking changes for Headless Checkout
✨ Improvements
It’s been more than 6 months that Headless Checkout has been released in Beta!
We gathered insightful feedback that pushed us to work on critical improvements to the developer experience of Headless Checkout.
This release candidate introduces a more robust, scalable, and stable flow for integrating Headless Checkout to implement a fully custom interface for your checkout.
Our documentation has been updated to reflect these changes. You can also find a Migration Guide detailing the changes.
This release candidate will soon be merged into the main releases.
✨ Improvements
In this version we are adding support for iPay88 card payments.
We have also added events to monitor the Headless flow.
Android
-
In this version of the SDK we have introduced a new version of 3DS library. Primer SDK will depend on
io.primer:3ds-android:1.1.2
from now on.⚠️ If you are using 3DS dependency in your code, you are required to update it in order to align with the supported version. Otherwise, 3DS will result in failure.
-
We have added a way to capture billing address using Google Pay. You will need to pass
captureBillingAddress = true
toPrimerGooglePayOptions
🔧 Fixes
- [iOS] Remove Xcode configuration flags from podspec.
- [iOS] Apple Pay will return an error on simulator.
🔧 Fixes
- Fixing the MBWay local asset loading on iOS
- Removed the
GENERATE_INFOPLIST_FILE
as part of thexcconfig
of thePrimerSDK
podspec dependency, as it was causing an issue upon archiving the hosting apps. - Added
CODE_SIGNING_ALLOWED => NO
toxcconfig
inPrimerSDK
podspec
dependency to remove the Signing requirement introduced in Xcode 14+ - Fixed an issue on Android when a developer wanted to disable the showing of some screens. Previously that was broken due to Android OS automatically showing the bottom sheet dialog when we get back on the main screen, even if we hide it before.
✨ Improvements
👌 Alongside the listed features below, we have performed improvements to our codebase.
In this version of the SDK we have introduced a new version of 3DS library for Android. Primer Android SDK will depend on io.primer:3ds-android:1.1.1
from now on.
⚠️ If you are using 3DS dependency in your code, you are required to update it in order to align with the supported version. Otherwise, 3DS will result in failure.
🔧 Fixes
- We have fixed certain redirection issues for payment methods using Buckaroo as PSP on Android
- We have improved the Cardholder name check on iOS
🔧 Fixes
- Aligned the
RN_ANDROID
on AnalyticssdkType
- Fixed an issue on iOS in regards to the availability of retrieving some assets
- Small improvements on iOS in the way the Country selector in billing address gets loaded
🔧 Fixes
- Fixed 3DS on frictionless flows
- Sending analytics events with correct
sdkVersion
andsdkType
✨ Improvements
👌 Alongside the listed features below, we have performed improvements to our codebase.
In this version of the SDK we have removed options to pass 3DS vaulting flag is3DSOnVaultingEnabled
Above flow is now obsoleted and 3DS will always follow workflows.
🔧 Fixes
- We have fixed wrong cardholder name checkout modules evaluations which resulted in not requesting cardholder name on headless
- We have fixed raw data validation callbacks not being fired on headless
- We have also fixed retrieval of card network assets
🔧 Fixes
- Fix initialization for Universal Checkout on Android.
ℹ️ This fix solves the issue affecting versions from 2.13.0
to 2.13.1
. We recommend updating to this 2.13.2
version.
🔧 Fixes
Fixing the Blik flow on iOS.
ℹ️ This fix solves the issue affecting versions from 2.7.0
to 2.13.0
. We recommend updating to this 2.13.1
version.
✨ Improvements
👌 Alongside the listed features below, we have performed improvements to our codebase.
💳 APMs support
Retail Outlets via Xendit
In this version of the SDK we added the support for Retail Outlets via Xendit.
Retail Outlets via Xendit Payment Method now is fully supported via Headless Universal Checkout (Beta) via the Raw Data Manager.
Check this out in our documentation 🙌
🔧 Fixes
iOS
Fixed on Headless Universal Checkout with ADYEN_BANCONTACT_CARD
flow failing on some scenarios.
🪲 Hotfix
iOS
Fixes a bug in the Klarna vault flow.
Android
Fixed raw card data formatting and mapping in some scenarios.
✨ Improvements
👌 Alongside the listed features below, we have performed improvements to our codebase.
💳 APMs support
Bancontact via Adyen
In this version of the SDK we added the support for Bancontact Debit via Adyen for.
Bancontact Debit via Adyen Payment Method now is fully supported via Headless Universal Checkout (Beta) and the standard SDK implementation.
In this release, developers have the ability of initializing the raw data for a Bancontact Card 💳 and perform the Tokenization flow via their own fully customized UI yet utilizing all of the features that make Primer great.
Apple Pay billing address on iOS
Last but not least, we are now capturing the billing address out of an Apple Pay payment.
To enable this feature, when configuring the Checkout with the PrimerSettings
, developers can setup PrimerApplePayOptions
with another parameter: isCaptureBillingAddressEnabled
. The SDK will take care of showing the option of adding the billing address and capture it.
✨ Improvements
👌 Alongside the listed features below, we have performed improvements to our codebase.
In this version of the SDK we improved the raw data validation in the Headless Universal Checkout flow.
✨ Improvements
👌 Alongside the listed features below, we have performed improvements to our codebase.
In this version of the SDK we added the support for Multibanco via Universal Checkout for iOS too 🙌.
Multibanco Payment Method now is fully supported on both platforms via Headless Universal Checkout (Beta) and the standard SDK implementation.
PromptPay is also now supported via Omise too 🙌.
In Headless Universal Checkout (Beta), developers will have access to a new event which will provide an object PrimerCheckoutQRCodeInfo
containing the data needed to build their awesome UI / UX.
For PromptPay specifically, the object will be PromptPayCheckoutAdditionalInfo
onCheckoutReceivedAdditionalInfo(additionalInfo: PrimerCheckoutAdditionalInfo?)
🚀 Improvements
Android
We have fixed a bug where cardholder name field was loosing focus when billing address checkout module was enabled.
✨ Improvements
👌 Alongside the listed features below, we have performed improvements to our codebase.
iOS
Applied a fix on the infinite loading with Xendit payment methods.
Android
Applied a fix on the infinite loading with Xendit payment methods.
We have removed some transitive dependencies from our code. This will result in smaller size of you application when Primer SDK is imported.
Try it out and let us know what do you think 🙌!
🪲 Hotfix
This release fixes a build warning on the duplication of the React Native SDK’s bridging header on iOS.
🪲 Hotfix
This release fixes a build warning on the duplication of the React Native SDK’s bridging header on iOS.
✨ Improvements
👌 Alongside the listed features below, we have performed improvements to our codebase.
Last release was all about bringing the possibility to Headless Checkout of utilizing the raw data a card 💳 contains so that developers could utilize their own fully customized UI and still use all of the features that make Primer great.
We kept expanding the Headless Checkout feature, now providing to our developers the raw phone number data they can utilize to create payments.
The payment method supporting that is only OVO via Xendit for now.
Try it out and let us know what do you think 🙌!
We didn’t stop here though, alongside the phone number capture, we have enriched our suite of available payment methods adding MB Way, working with Portuguese phone numbers 🇵🇹 and needing the MB Way App to complete the payment.
Here is a preview for iOS and Android 👇

Simulator
✨ Improvements
👌 Alongside the listed features below, we have performed improvements to our codebase.
This release enhance the capabilities of our SDK in its Headless Checkout feature, bringing the possibility of utilizing your fully customized UI and still use all of the features that make Primer great. We now give to our developers all the raw data a card contains.
Try it out and let us know what do you think 🙌!
✨ Improvements
👌 Alongside the listed features below, we have performed improvements to our codebase.
This release brings a totally new way of retrieving the APMs.
We have now the possibility of providing some APMs without even push a new release 🙌.
That’s a huge milestone for us and the developments of our product.
- Android
- Fix exposing views
- iOS
- Internal codebase refactor
✨ Improvements
👌 Alongside the listed features below, we have performed improvements to our codebase.
💳 APMs support
Grab Pay, Poli and GCash via Rapyd
iOS and Android representation


Grabpay Gcash Simulator


Billing address support 🧾
We can now capture the billing address before performing a payment.
iOS and Android representation


Primer & Billing
✨ Improvements
The version 2 of the Headless Universal Checkout is out!
✨ Payments created automatically
Primer Headless Universal Checkout | SDK
Starting from this version, automatic payment creation is included in the Headless Universal Checkout
. You should now only care about creating best possible and seamless experience for your users, we will take care of the rest. Please take a look at our simple explanation about the changes we made.
- Fix Klarna checkout
- Dummy APMs
- Update Android dependency to 1.15.1
- Fix Klarna checkout
- Fix Klarna checkout with HUC
- Include Headless Universal Checkout Beta
✨ Improvements
The version 2 of the SDK is out! This includes a simplified way to integrate Primer
📚 Take a look at the migration guide for updating your integration to version 2.
✨ Payments created automatically
Universal Checkout | SDK
Creating payments with Universal Checkout is now seamless. There’s no more need for callbacks, API calls and headaches to create a payment. It’s all done under the hood 🧙
In the past, creating payments involved manual payment handling:
On the client side, you would have had to implement the dreaded clientTokenCallback
, onTokenizeSuccess
and onResumeSuccess
delegate functions.
On the server side, you had to manually call our Payments API in order to create a payment 🤷
Rejoice! As from version 2.0.0
no manual payment handling is required! Payment creation is now, as mentioned above, :chef-kiss: - seamless.
Feel free to rip out the above mentioned callbacks when migrating to version 2.0.0
and enjoy the feeling of utter relaxation as all your payment handling is now done by Universal Checkout 💆
- Fixed PayPal vaulting on iOS and Android
- Fixed Android mappings
- Added following APMs
- Coinbase
- Opennode
- 2c2p
- PayShop
- Fix Apple Pay merchant name not showing
- Fixes cardholder name field not deleting characters
- Changes cardholder name field’s keyboard type
- Bug fixes & stability improvements
- Update native dependencies
- Fix callbacks naming and types
- Update native dependencies
- Beta-1 for the Headless Universal Checkout
- Fix
is3DSDevelopmentMode
flag
- Bug fixes
- Update native dependencies
- Fix actions callback
- Update native dependencies
- Update native dependencies
- Improved deep linking for both native platforms
- Extended language support for Android
- Added support for more payment methods
- Fixed single payment method payment flow
- Performance improvements on both native platforms
- Autofocus feature for card forms added
- Add support for
SET_BILLING_ADDRESS
client session action - Enables postal code capture in card form on both platforms
- Improvements to surcharge feature
- Add beta support for payment method Atome
- Stable surcharge feature for both iOS & Android.
- Minor bug fixes.
- Improvements to example app.
- Adds
onClientSessionActions
callback - Early version of surcharge added for both platforms.
- Refactored error handling for
onTokenizeSuccess
andonResumeSuccess
- Improved flow for example app
- Adds Bancontact, EPS, Giropay, iDeal and Sofort via Buckaroo
- Minor updates to example app
- Minor fix on PayPal presentation for iOS

Billing Address