Primer.dismiss() and Primer.cleanUp() no longer remove event listeners they did not add, including listeners registered by your app, and no longer clear the settings passed to Primer.configure()
Setting up the ACH, bank redirect or raw data manager again on the same instance now replaces the previous callbacks instead of adding a second set
Android: fixed callbacks no longer firing after checkout was closed, until Primer.configure() was called again
iOSiOS SDK updated to v2.52.0✨ Improvements
Improvements to cancellation handling and web redirect based payment methods
🔧 Fixes
Apple Pay: fixed amounts showing ten times too high in the payment sheet for three-decimal currencies (BHD, IQD, JOD, KWD, LYD, OMR, TND)
Apple Pay: onBeforePaymentCreate now fires after the shopper authorizes the payment, so the billing and shipping details collected in the Apple Pay sheet are available on the client session. This matches Android
Bancontact: fixed tokenization failing in Headless raw data integrations, and two-digit (MM/YY) expiry years are now accepted
Cached SDK assets moved from the app’s Documents directory to Library/Caches, so they are no longer included in device backups
AndroidAndroid SDK updated to v2.53.0✨ Improvements
Improvements to cancellation handling and web redirect based payment methods
Apple Pay & Google Pay: added allowedCardTypes, letting you restrict which card types are offered
✨ Improvements
Improved TypeScript type definitions
The allowedCardNetworks option has been removed from Google Pay. Configure supported card networks with orderedAllowedCardNetworks in your client session.
iOSiOS SDK updated to v2.51.1🔧 Fixes
Fixed co-badged card validation in Headless integrations
AndroidAndroid SDK updated to v2.51.0✨ Improvements
General fixes and improvements
Primer SDK now depends on io.primer:klarna-android:1.3.0
If you are using the Klarna dependency in your code, you are encouraged to update it and align with the supported version.Klarna SDK was updated from v2.7.1 to v2.11.3. Please refer to the official Klarna CHANGELOG
for more information.
Note: From this version onward, Primer3DS requires a minimum version of 2.7.0.
✨ Improvements
Show processing screen prior to presenting 3DS challenge.
AndroidAndroid SDK updated to v2.47.0✨ Improvements
Primer SDK now depends on io.primer:3ds-android:1.8.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.Changelog:
New LOA Reference Number
Updated Device Information Data Version to EMVCo 3DS SDK Device Information 1.7
Bouncy Castle (artefact: org.bouncycastle:bcprov-jdk15to18) has been removed as a dependency. The 3DS SDK defaults to the default OS Security Provider in case Bouncy Castle is not found.
EFTPOS co-badged cards selection is now automatic based on merchant’s network preference
Improved deeplink handling
Klarna UI fixes (Continue button, back button)
🔧 Fixes
Fixed an issue with surcharge amount validation
Fixed card network state not properly cleared when card number field emptied
Fixed card validation issues that could cause network picker display problems
AndroidAndroid SDK updated to v2.46.0
Primer SDK now depends on io.primer:3ds-android:1.7.0If 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.Changelog:
The 3DS SDK now follows the EU Directive 2019/882.
✨ Improvements
EFTPOS co-badged cards selection is now automatic based on merchant’s network preference
🔧 Fixes
Fixed a corner case when switching between different co-badged cards
Fixed navigation bar blur when edge-to-edge enabled
Breaking Change: This version removes support for legacy API versions. The SDK now requires API version 2.4 or later.The PrimerApiVersion.V2_3 option for settings.apiVersion has been removed. The SDK now exclusively uses API version 2.4.If you were using the PrimerApiVersion.V2_3 setting:
Ensure your backend integration supports API version 2.4
Review the Migration Guide for detailed upgrade instructions
Improved internal analytics event processing to consolidate redundant events and enhance payload data with richer contextual metadata.
This internal improvement reduces network overhead while providing better system insights.
Improvements to Klarna theme selection.
Primer SDK now depends on io.primer:klarna-android:1.2.0
If you are using the Klarna dependency in your code, you are encouraged to update it and align with the supported version.Klarna SDK was updated from v2.6.27 to v2.7.1. Please refer to the official Klarna CHANGELOG
for more information.
🔧 Fixes
Fixed crash that occurred when switching payment methods after the PrimerSessionIntent parameter was changed
Fixed crash that could occur when calling cleanup() if the Drop-in dismissal event was not properly handled internally
Continuing 3DS flow sometimes failed silently, resulting in failed-to-resume or payment-failed errors.
We have fixed that and improved our logging in this specific use case.
Add appearance mode override to respect app-level theme settings.
✨ Improvements
Improvements to Klarna vaulting flow.
If you are using the Klarna dependency in your code, you are encouraged to update PrimerKlarnaSDK to 1.2.0.
Please note that this version contains critical fixes for the new Liquid Glass UI when built with Xcode 26/iOS 26.Klarna SDK was updated from v2.6.14 to v2.7.2. Please refer to the official Klarna CHANGELOG
for more information.
🔧 Fixes
Improved payment tokenization and cancellation flow.
iOS🚀 New featuresThis release introduces Apple Pay merchant tokens, a powerful new feature that enables merchants
to process recurring payments, subscriptions, and automatic reloads without being tied to specific customer devices.Ready to get started? Follow our implementation guides
to request merchant tokens (MPANs) and integrate this feature into your payment flow.✨ Improvements
Added support for MM/YY expiry date format
Enhanced Apple Pay error handling with new specific error IDs:
apple-pay-no-cards-in-wallet: Detects when no payment cards are configured in Apple Wallet
apple-pay-device-not-supported: Identifies devices that don’t support Apple Pay
apple-pay-presentation-failed: Captures general presentation failures
🔧 Fixes
Reduce console noise for nil remoteUrl in ImageManager
Reduce excessive validation logging
🛠️ Refactor
Introduce default values for PrimerError
Migrated many classes and files to async await
Clean up UI event posting
Android✨ Improvements
Primer SDK now depends on Kotlin 2.0.21
Primer SDK now depends on io.primer:3ds-android:1.6.2
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.Changelog:
Due to several security vulnerabilities, Bouncy Castle (artefact : org.bouncycastle:bcprov-jdk15to18) was updated to version 1.79
This update improves performance on devices with larger memory capacities by fulfilling Google’s requirement for 16 KB memory page sizes, ensuring full compatibility with future Play Store regulations.
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:bomIf 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
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.
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
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.
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.
🔧 FixesAndroid
Drop-in: fixed an issue causing crashes when calling Primer.dismiss() after the checkout sheet is already dismissed.
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 network detection in general. Visit our documentation about co-badged cards in order to learn more.
🔧 FixesAndroid
Analytics: fixed serialization and deserialization of analytics events.
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.
🔧 FixesAndroid
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:
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.
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.
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.
🔧 FixesAndroid
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.
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 supportiDEAL via AdyenAdds 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 HeadlessUniversalCheckoutWe 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 FeatureSupport for Klarna EMDKlarna 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.
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.
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) and pod '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.
✨ ImprovementsIn 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.FeaturesHeadless Vault ManagerIn 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)
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 to false. The default value is true.
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 to false This flag is set to true by default due to enable backward compatibility with older versions.
🍎 Upgraded Primer iOS SDK to 2.18.0 (Git | Changelog)
Android
🤖 Upgraded Primer Android SDK to 2.18.0 (Git | Changelog)
✨ ImprovementsAndroid: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.
⚠️ This version introduces breaking changes for Headless Checkout
✨ ImprovementsIt’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 ServiceOur 3DS service has been completely revamped. Primer SDK now supports 3DS protocol version 2.2.0
⚠️ This version introduces breaking changes for Headless Checkout
✨ Improvements💳 APMs supportCards via iPay88In 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.✨ ImprovementsAndroid:
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
⚠️ This version introduces breaking changes for Headless Checkout
✨ ImprovementsIt’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’s getPaymentMethodAsset 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
⚠️ This version introduces breaking changes for Headless Checkout
✨ ImprovementsIt’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.
✨ ImprovementsIn 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 to PrimerGooglePayOptions
🔧 Fixes
[iOS] Remove Xcode configuration flags from podspec.
[iOS] Apple Pay will return an error on simulator.
Removed the GENERATE_INFOPLIST_FILE as part of the xcconfig of the PrimerSDK podspec dependency, as it was causing an issue upon archiving the hosting apps.
Added CODE_SIGNING_ALLOWED => NO to xcconfig in PrimerSDKpodspec 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.
👌 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
👌 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 is3DSOnVaultingEnabledAbove 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
👌 Alongside the listed features below, we have performed improvements to our codebase.
💳 APMs supportRetail Outlets via XenditIn 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 🙌
👌 Alongside the listed features below, we have performed improvements to our codebase.
💳 APMs supportBancontact via AdyenIn 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 iOSLast 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.
👌 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 PromptPayCheckoutAdditionalInfoonCheckoutReceivedAdditionalInfo(additionalInfo: PrimerCheckoutAdditionalInfo?)
👌 Alongside the listed features below, we have performed improvements to our codebase.
iOSApplied a fix on the infinite loading with Xendit payment methods.AndroidApplied 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 🙌!
👌 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 👇
👌 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 🙌!
👌 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.
✨ ImprovementsThe version 2 of the Headless Universal Checkout is out!✨ Payments created automaticallyPrimer Headless Universal Checkout | SDKStarting 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.
✨ ImprovementsThe 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 automaticallyUniversal Checkout | SDKCreating 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 💆
Adds Bancontact, EPS, Giropay, iDeal and Sofort via Buckaroo
Minor updates to example app
Minor fix on PayPal presentation for iOS
Billing Address
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Primer","description":"Learn how to connect, build, and scale with Primer. Our docs offer clear guides and technical references to help you get more from our unified payments infrastructure.","colors":{"primary":"#FF7C4F","light":"#FF7C4F","dark":"#1b1a1a"},"logo":{"light":"https://mintcdn.com/primer-cc826789/fMxS38v0lFyMKyzD/logo/primer_logo.svg?fit=max\u0026auto=format\u0026n=fMxS38v0lFyMKyzD\u0026q=85\u0026s=0010b4ac2a8a90e656efd18fb57c9366","dark":"https://mintcdn.com/primer-cc826789/fMxS38v0lFyMKyzD/logo/primer_logo.svg?fit=max\u0026auto=format\u0026n=fMxS38v0lFyMKyzD\u0026q=85\u0026s=0010b4ac2a8a90e656efd18fb57c9366","href":"https://primer.io/docs"},"favicon":"https://mintcdn.com/primer-cc826789/fMxS38v0lFyMKyzD/logo/primer_logo.svg?fit=max\u0026auto=format\u0026n=fMxS38v0lFyMKyzD\u0026q=85\u0026s=0010b4ac2a8a90e656efd18fb57c9366","appearance":{"default":"light"},"background":{"decoration":"grid","color":{"light":"#ffffff"}},"navbar":{"links":[{"href":"https://primer.io/contact-us","label":"Contact Sales"}],"primary":{"type":"button","label":"Contact support","href":"https://portal.support.primer.io/servicedesk/customer/portal/11"}},"footer":{"socials":{"youtube":"https://www.youtube.com/channel/UCblj8Ya4PGjRbKVXmVwKyeQ","linkedin":"https://www.linkedin.com/company/primerapi","website":"https://primer.io/"}},"styling":{"eyebrows":"breadcrumbs","codeblocks":"dark","latex":false},"integrations":{"gtm":{"tagId":"GTM-NW2HXNZC"},"cookies":{"key":"ANALYTICS_CONSENT","value":"yes"}},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"primer-cc826789","hasAudioNarration":false,"actualSubdomain":"primer-cc826789","customDomains":["primer.io"],"gitSource":{"type":"gitlab","owner":"primer-io/general","repo":"public-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"projectId":69511232,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6aec97f0574963a2d11dbfed","collectionId":"d4772cf4-44a3-491c-bdf4-fcea1b1b0406","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6aec97f0574963a2d11dbfed"},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"REMOVE_BRANDING":{"status":"DISABLED"},"CONTEXTUAL_FEEDBACK":{"status":"DISABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"DISABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6aedeceee38f903348a1bd08","clientVersion":"0.0.4076","searchFilterCounts":[{"language":"default","tag":"SDK Reference","count":256},{"language":"default","tag":"Payment methods","count":242},{"language":"default","tag":"Documentation","count":171},{"language":"default","tag":"API reference","count":164},{"language":"default","tag":"API Reference","count":158},{"language":"default","tag":"Legacy SDKs","count":139},{"language":"default","tag":"Connections","count":129},{"language":"default","tag":"Checkout","count":118},{"language":"default","tag":"PrimerHeadlessUniversalCheckout","count":77},{"language":"default","tag":"iOS","count":58}]},"assistantConfig":{"enableAskAiButton":true,"enableAskAiSearchBar":false},"basePath":"/docs","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"css/colorCard.css","content":".color_card{display:block;max-width:268px;border-radius:16px;text-decoration:none;color:#1c1c1c;margin:1rem 0;background-color:#fffbeb;border:none!important;transition:transform 0.2s ease-in-out, box-shadow 0.2s ease-in-out}.color_card:hover{transform:translateY(-5px);box-shadow:0 10px 20px rgba(0, 0, 0, 0.1);border:none!important}.color_card-visual{display:flex;justify-content:center;align-items:center}.color_card-image{max-width:100%;height:auto;border-radius:16px 16px 0 0;margin:0}.color_card-text-content{text-align:start;padding:1.5rem}.color_card-title{font-size:1rem;font-weight:600;margin:0 0 0.5rem 0}.color_card-description{font-size:1rem;line-height:1.6;margin:0;color:#796262!important;font-weight:400!important}.dark .color_card-description{color:#9B7A7A!important}.color_card-description p{margin:0}.dark .horizontal_color_card h2{color:#FFFFFF}.color_card.yellow,.horizontal_card.yellow,.icon-container.yellow{background-color:#FFEDE6}.dark .color_card.yellow,.dark .horizontal_card.yellow,.dark .icon-container.yellow{background-color:#381000}.color_card.purple,.horizontal_card.purple,.icon-container.purple{background-color:#FFEDE6}.dark .color_card.purple,.dark .horizontal_card.purple,.dark .icon-container.purple{background-color:#381000}.color_card.red,.horizontal_card.red,.icon-container.red{background-color:#FFEDE6}.dark .color_card.red,.dark .horizontal_card.red,.dark .icon-container.red{background-color:#381000}.color_card.lilac,.horizontal_card.lilac,.icon-container.lilac{background-color:#FFEDE6}.dark .color_card.lilac,.dark .horizontal_card.lilac,.dark .icon-container.lilac{background-color:#381000}.color_card.pink,.horizontal_card.pink,.icon-container.pink{background-color:#FFEDE6}.dark .color_card.pink,.dark .horizontal_card.pink,.dark .icon-container.pink{background-color:#381000}.color_card.green,.horizontal_card.green,.icon-container.green{background-color:#FFEDE6}.dark .color_card.green,.dark .horizontal_card.green,.dark .icon-container.green{background-color:#381000}.color_card.blue,.horizontal_card.blue,.icon-container.blue{background-color:#FFEDE6}.dark .color_card.blue,.dark .horizontal_card.blue,.dark .icon-container.blue{background-color:#381000}"},{"filePath":"css/home.css","content":"/* cyrillic-ext */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2JL7SUc.woff2) format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\n}\n/* cyrillic */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa0ZL7SUc.woff2) format('woff2');\n unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n/* greek-ext */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2ZL7SUc.woff2) format('woff2');\n unicode-range: U+1F00-1FFF;\n}\n/* greek */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1pL7SUc.woff2) format('woff2');\n unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;\n}\n/* vietnamese */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2pL7SUc.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa25L7SUc.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* cyrillic-ext */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2JL7SUc.woff2) format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\n}\n/* cyrillic */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa0ZL7SUc.woff2) format('woff2');\n unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n/* greek-ext */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2ZL7SUc.woff2) format('woff2');\n unicode-range: U+1F00-1FFF;\n}\n/* greek */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1pL7SUc.woff2) format('woff2');\n unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;\n}\n/* vietnamese */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2pL7SUc.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa25L7SUc.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* cyrillic-ext */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2JL7SUc.woff2) format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\n}\n/* cyrillic */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa0ZL7SUc.woff2) format('woff2');\n unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n/* greek-ext */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2ZL7SUc.woff2) format('woff2');\n unicode-range: U+1F00-1FFF;\n}\n/* greek */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1pL7SUc.woff2) format('woff2');\n unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;\n}\n/* vietnamese */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2pL7SUc.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa25L7SUc.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* cyrillic-ext */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 700;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2JL7SUc.woff2) format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\n}\n/* cyrillic */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 700;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa0ZL7SUc.woff2) format('woff2');\n unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n/* greek-ext */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 700;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2ZL7SUc.woff2) format('woff2');\n unicode-range: U+1F00-1FFF;\n}\n/* greek */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 700;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1pL7SUc.woff2) format('woff2');\n unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;\n}\n/* vietnamese */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 700;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2pL7SUc.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 700;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa25L7SUc.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Inter';\n font-style: normal;\n font-weight: 700;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\nbody{font-family:-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;min-height:100vh;transition:all 0.3s ease}body{background:white}body.dark{background:#000000}.hero-section{text-align:center;position:relative;padding:6.5rem 20px 160px 20px;min-height:400px;display:flex;align-items:center;justify-content:center;background:#f8fafc}@media (max-width: 768px){.hero-section{padding:60px 16px 160px 16px;min-height:300px}}.dark .hero-section{background:#111827}.hero-banner{width:100%;height:100%;object-fit:cover;position:absolute;top:0;left:0;z-index:1}.hero-content{position:relative;z-index:2;padding:0 20px;max-width:1200px;margin:0 auto}.hero-content h1{font-family:\"Inter Display\", \"Inter\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;font-size:4rem;max-width:1000px;font-weight:600;margin-bottom:2.5rem;letter-spacing:-1px;line-height:4.5rem;color:#212121}@media (max-width: 768px){.hero-content h1{font-size:2.5rem;margin-bottom:1rem;letter-spacing:-.075rem;line-height:2.8rem}}.dark .hero-content h1{color:#ffffff}.hero-content p{font-size:1rem;line-height:1.4375rem;font-weight:400;color:black;max-width:620px;margin:0 auto;padding:0 16px}@media (max-width: 768px){.hero-content p{font-size:0.9rem;line-height:1.5}}.dark .hero-content p{color:#d1d5db}.features-section{position:relative;margin-top:-100px;padding:0 20px 80px 20px;z-index:10}.features-grid{display:grid;grid-template-columns:repeat(3, 1fr);gap:24px;max-width:860px;margin:0 auto}.features-grid .card h2{font-weight:600!important}.features-grid .card{background:white;border-radius:16px;overflow:hidden;border:1px solid #e5e7eb;box-shadow:0 4px 20px rgba(0, 0, 0, 0.08);transition:all 0.3s ease;margin:0}.dark .features-grid .card{background-color:rgb(28 28 28);border-color:#424242;box-shadow:0 4px 20px rgba(0, 0, 0, 0.3)}.features-grid .card:hover{transform:translateY(-4px);box-shadow:0 8px 30px rgba(0, 0, 0, 0.12)}.dark .features-grid .card:hover{box-shadow:0 8px 30px rgba(0, 0, 0, 0.4)}.feature-image{width:100%;height:200px;object-fit:cover}.feature-content{padding:24px;height:140px;display:flex;flex-direction:column;justify-content:flex-start}.feature-card h3{font-size:1.25rem;font-weight:600;color:#1a1a1a;margin-bottom:8px;transition:color 0.3s ease}.dark .feature-card h3{color:white}.feature-card p{font-size:0.95rem;color:#6b7280;line-height:1.5;transition:color 0.3s ease}.dark .feature-card p{color:#9ca3af}@media (max-width: 768px){.features-grid{grid-template-columns:1fr;gap:20px}.hero{padding:60px 16px 150px 16px}.features-section{margin-top:-80px;padding:0 16px 60px 16px}.theme-toggle{top:20px;right:20px;padding:10px 16px;font-size:14px}}@media (max-width: 1024px) and (min-width: 769px){.features-grid{grid-template-columns:repeat(2, 1fr)}}.build-with-ai-cta{display:inline-flex;align-items:center;gap:0.5rem;margin-top:2rem;padding:15px 20px;border:1px solid #FF7C4F!important;border-radius:9999px;background:#FF7C4F;color:#230800!important;font-size:1rem;font-weight:600;line-height:1;text-decoration:none!important;transition:color 0.3s, background 0.3s, border 0.3s}.build-with-ai-cta:hover{border-color:#230800!important;background:#230800;color:#F9F3EE!important}.build-with-ai-cta__icon{position:relative;display:inline-flex;overflow:hidden}.build-with-ai-cta__arrow{display:flex;transform:translateX(0%);transition:transform 0.5s cubic-bezier(0.6, 0.6, 0, 1) 0.1s}.build-with-ai-cta__arrow--in{position:absolute;inset:0;transform:translateX(-100%);transition:transform 0.5s cubic-bezier(0.6, 0.6, 0, 1)}.build-with-ai-cta:hover .build-with-ai-cta__arrow{transform:translateX(100%);transition:transform 0.5s cubic-bezier(0.6, 0.6, 0, 1)}.build-with-ai-cta:hover .build-with-ai-cta__arrow--in{transform:translateX(0%);transition:transform 0.5s cubic-bezier(0.6, 0.6, 0, 1) 0.1s}"},{"filePath":"css/horizontalCard.css","content":".horizontal_card{display:flex;border-radius:2px;overflow:hidden;margin:1rem 0;border:1px solid #110f0e1a;margin-top:20px;border-radius:8px;transition:border-color 0.2s ease}a.horizontal_card:hover,.dark a.horizontal_card:hover{border-color:#FF7C4F}.dark .horizontal_card{border-color:#ffffff1a}.horizontal_card .card-image-container{flex:1;min-width:45%}.horizontal_card .card-image-container img{width:100%;height:100%;border-radius:0;object-fit:cover;margin:0!important}.horizontal_card .card-content-container{flex:2;padding:40px 24px;display:flex;flex-direction:column}.horizontal_card .card-title{margin:0 0 0.75rem 0;font-size:1rem;font-weight:500;letter-spacing:0.01rem}.horizontal_card .card-description{font-size:1rem;line-height:1.5;flex-grow:1;font-weight:350}.horizontal_card .card-description p{margin:0;font-weight:350}.horizontal_card .card-link{margin-top:1rem;text-decoration:none;transition:color 0.2s ease-in-out;border:none;max-width:fit-content;font-weight:500}.horizontal_card .card-link:hover{text-decoration:underline}@media (max-width: 768px){.horizontal_card{flex-direction:column}.horizontal_card .card-image-container{min-width:100%}.horizontal_card .card-content-container{padding:20px 16px}}"},{"filePath":"css/horizontalColorCard.css","content":""},{"filePath":"css/iconCard.css","content":".icon-title-card{display:inline-flex;flex-direction:column;align-items:center;text-decoration:none;margin:0 auto}.icon-container svg{width:32px;height:32px;color:#5b21b6}.item-title{font-weight:500;text-align:center;margin:0;font-size:0.9rem}.icon-container{width:50px;height:50px;border-radius:50%;background-color:#ede9fe;margin-bottom:1rem;display:flex;justify-content:center;align-items:center}.dark .icon-container{background-color:#4c1d95}.icon-container svg{width:24px;height:24px;color:#000}.dark .icon-container svg{color:#fff}"},{"filePath":"css/logoCarousel.css","content":"@keyframes scroll{0%{transform:translateX(0)}100%{transform:translateX(-50%)}}.logo-carousel-container{padding:2rem 0;border:1px solid #110f0e1a;border-radius:2px;margin-top:20px}.dark .logo-carousel-container{border-color:#333}.carousel-title{font-size:1.25rem;font-weight:500;margin-bottom:2rem;margin-top:1.5rem;padding:0 2rem}.logo-carousel-scroller{overflow:hidden;position:relative}.logo-track{display:flex;width:calc(200px * var(--logo-count));animation:scroll 12s linear infinite}.logo-track a{text-decoration:none;color:inherit;border:none}.logo-item{width:100px;height:80px;display:flex;justify-content:center;align-items:center;flex-shrink:0;transition:transform 0.2s ease}.logo-item:hover{transform:scale(1.1)}.logo-item svg{max-width:100%;max-height:56px;opacity:0.95;transition:opacity 0.2s ease;border-radius:8px}.logo-item:hover svg{opacity:1}.explore-link{display:block;width:fit-content;margin-left:2rem;margin-top:1.5rem;margin-bottom:0;font-size:1rem;font-weight:500;color:#333;text-decoration:underline;transition:color 0.2s ease;border-bottom:none!important}.dark .explore-link{color:#eee}.explore-link:hover{color:#e88178}"},{"filePath":"css/style.css","content":"@import url(\"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700\u0026family=Inter+Display:wght@400;500;600;700\u0026display=swap\");@import url(\"./filterableTable.css\");div.card .prose a.link{color:#007bff;text-decoration:underline;font-weight:500}div.card .prose a.link:visited{color:#551a8b}div.card .prose a.link:hover{color:#0056b3;text-decoration:underline}.prose :where(code):not(:where([class~=\"not-prose\"],[class~=\"not-prose\"] *)){color:red;font-family:\"Roboto Mono\", monospace;font-size:13px;font-weight:300;line-height:inherit!important}.overview_cards_container .card{max-width:269px!important}.card-group{justify-items:baseline}.dark .group img{background-color:transparent!important}.param-head{div[data-component-part=\"field-name\"] {\n color: #000 !important;\n }}.dark .param-head{div[data-component-part=\"field-name\"] {\n color: #fff !important;\n }}h1,h2,h3,h4,h5,h6{font-weight:600!important;font-family:\"Inter Display\", \"Inter\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen, Ubuntu, Cantarell, sans-serif}.block.absolute.inset-0.overflow-hidden{background:none!important}.banner_img_cover{border-radius:8px}table th{text-align:left!important}.color-value{display:flex;align-items:center;justify-content:space-between;gap:6px}.color-swatch{width:14px;height:14px;border-radius:3px;flex-shrink:0}.color-swatch--bordered{border:1px solid #E0E0E0}.tokens-grid table{width:100%}.tokens-grid td:first-child{width:120px}.tokens-grid td:last-child code{font-size:12px;white-space:nowrap}.token-swatch{display:inline-block;width:48px;height:48px;border-radius:6px;vertical-align:middle}.token-radius{display:inline-block;width:48px;height:48px;background-color:#E0E0E0;vertical-align:middle;margin-right:8px}.token-space{display:inline-block;height:24px;background-color:#2f98ff;border-radius:2px;vertical-align:middle;margin-right:8px;min-width:2px}.token-size{display:inline-block;background-color:#2f98ff;border-radius:4px;vertical-align:middle;margin-right:8px}.token-width{display:inline-block;width:48px;height:32px;background-color:#ffffff;border:solid #212121;border-radius:4px;vertical-align:middle;margin-right:8px}.token-typography-preview{padding:16px;background-color:#f5f5f5;border-radius:8px;margin:12px 0 24px 0;font-family:-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif}.dark .token-typography-preview{background-color:#2a2a2a}.token-animation-preview{padding:24px;background-color:#f5f5f5;border-radius:8px;display:flex;align-items:center;gap:16px}.dark .token-animation-preview{background-color:#2a2a2a}.animation-demo{width:48px;height:48px;background-color:#2f98ff;border-radius:8px;transition:transform 200ms cubic-bezier(0.44, 0, 0.4, 1)}.animation-demo:hover{transform:scale(1.2)}.phase-timeline-circle{background-color:#fff}.dark .phase-timeline-circle{background-color:#0e0b0c}"},{"filePath":"css/filterableTable.css","content":".filterable-table-container{width:100%;max-width:100%;margin:0 0 1.5rem 0!important}div:has(>.filterable-table-container){margin-top:0!important}.filterable-table-container *,.filterable-table-container *::before,.filterable-table-container *::after{box-sizing:border-box}.filterable-table-controls{display:flex;flex-direction:column;gap:1rem;margin-bottom:1rem}@media (min-width: 768px){.filterable-table-controls{flex-direction:row;align-items:center;justify-content:space-between}}.filterable-table-search{flex:1;max-width:400px}.filterable-table-search-input{width:100%;padding:0.625rem 1rem;border:1px solid #e5e7eb;border-radius:8px;font-size:0.875rem;background-color:#fff;color:#1f2937;transition:border-color 0.2s ease, box-shadow 0.2s ease}.filterable-table-search-input:focus{outline:none;border-color:#FF7C4F;box-shadow:0 0 0 3px rgba(255, 124, 79, 0.1)}.filterable-table-search-input::placeholder{color:#9ca3af}.dark .filterable-table-search-input{background-color:#1f2937;border-color:#374151;color:#f9fafb}.dark .filterable-table-search-input:focus{border-color:#FF7C4F;box-shadow:0 0 0 3px rgba(255, 124, 79, 0.2)}.dark .filterable-table-search-input::placeholder{color:#6b7280}.filterable-table-filters{display:flex;flex-wrap:wrap;gap:0.75rem;align-items:center}.filterable-table-select{padding:0.625rem 2rem 0.625rem 1rem;border:1px solid #e5e7eb;border-radius:8px;font-size:0.875rem;background-color:#fff;color:#1f2937;cursor:pointer;appearance:none;background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%236b7280' d='M2.5 4.5L6 8l3.5-3.5'/%3E%3C/svg%3E\");background-repeat:no-repeat;background-position:right 0.75rem center;transition:border-color 0.2s ease}.filterable-table-select:focus{outline:none;border-color:#FF7C4F}.dark .filterable-table-select{background-color:#1f2937;border-color:#374151;color:#f9fafb;background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%239ca3af' d='M2.5 4.5L6 8l3.5-3.5'/%3E%3C/svg%3E\")}.dark .filterable-table-select:focus{border-color:#FF7C4F}.filterable-table-clear-btn{padding:0.625rem 1rem;border:none;border-radius:8px;font-size:0.875rem;background-color:#fee2e2;color:#b91c1c;cursor:pointer;transition:background-color 0.2s ease}.filterable-table-clear-btn:hover{background-color:#fecaca}.dark .filterable-table-clear-btn{background-color:#450a0a;color:#fca5a5}.dark .filterable-table-clear-btn:hover{background-color:#7f1d1d}.filterable-table-results-count{font-size:0.875rem;color:#6b7280;margin-bottom:0.75rem}.dark .filterable-table-results-count{color:#9ca3af}.filterable-table-wrapper{overflow:hidden;border-radius:8px;border:1px solid #e5e7eb}.dark .filterable-table-wrapper{border-color:#374151}table.filterable-table{width:100%;border-collapse:collapse;border-spacing:0;font-size:0.875rem;table-layout:auto;margin:0;padding:0;border:none}table.filterable-table thead{background-color:#f9fafb}.dark table.filterable-table thead{background-color:#1f2937}table.filterable-table th{padding:0.75rem 1rem;text-align:left;font-weight:600;color:#374151;border:none;border-bottom:1px solid #e5e7eb;white-space:nowrap;background-color:#f9fafb}.dark table.filterable-table th{color:#e5e7eb;border-bottom-color:#374151;background-color:#1f2937}table.filterable-table td{padding:0.75rem 1rem;color:#4b5563;border:none;border-bottom:1px solid #e5e7eb;vertical-align:top;background-color:#fff}.dark table.filterable-table td{background-color:#111827;color:#d1d5db;border-bottom-color:#374151}table.filterable-table tbody tr:hover td{background-color:#f3f4f6}.dark table.filterable-table tbody tr:hover td{background-color:#1f2937}table.filterable-table tbody tr:last-child td{border-bottom:none}table.filterable-table th:first-child,table.filterable-table td:first-child{padding-left:1.25rem}table.filterable-table th:last-child,table.filterable-table td:last-child{padding-right:1.25rem}table.filterable-table code{font-size:0.8125rem;padding:0.125rem 0.375rem;border-radius:4px;background-color:#f3f4f6;color:#1f2937;font-family:ui-monospace, SFMono-Regular, \"SF Mono\", Menlo, Consolas, monospace}.dark table.filterable-table code{background-color:#374151;color:#e5e7eb}.filterable-table-compatibility{font-size:0.8125rem;line-height:1.75}.filterable-table-no-results{text-align:center;padding:2rem 1rem;color:#6b7280}.dark .filterable-table-no-results{color:#9ca3af}"},{"filePath":"css/componentTree.css","content":".component-tree-container{border-radius:8px;padding:20px;border:1px solid #e5e7eb}.component-tree-connector{color:#9ca3af;user-select:none}.component-tree-name{font-weight:500;color:#111827}.component-tree-goes-into{margin-left:10px;padding:2px 8px;border-radius:4px;background-color:#f3f4f6;color:#6b7280;font-size:11px;font-weight:400}.component-tree-slot{margin-left:8px;padding:2px 8px;border-radius:4px;background-color:#dbeafe;color:#1d4ed8;font-size:11px;font-weight:500}.component-tree-note{margin-left:10px;color:#6b7280;font-size:12px;font-style:italic}.component-tree-legend{display:flex;align-items:center;gap:20px;padding-top:16px;margin-top:16px;border-top:1px solid #e5e7eb;font-size:12px;color:#6b7280}.dark .component-tree-container{border-color:#374151}.dark .component-tree-connector{color:#6b7280}.dark .component-tree-name{color:#f9fafb}.dark .component-tree-goes-into{background-color:#374151;color:#d1d5db}.dark .component-tree-slot{background-color:#1e3a8a;color:#93c5fd}.dark .component-tree-note{color:#9ca3af}.dark .component-tree-legend{border-top-color:#374151;color:#9ca3af}"},{"filePath":"css/designSystem.css","content":":root{--ds-color-brand: #2f98ff;--ds-color-brand-light: #e8f2ff;--ds-color-brand-muted: rgba(47, 152, 255, 0.12);--ds-color-success: #1a8a5c;--ds-color-success-light: #edf8f2;--ds-color-success-muted: rgba(26, 138, 92, 0.12);--ds-color-warning: #c47a20;--ds-color-warning-light: #fef6eb;--ds-color-warning-muted: rgba(196, 122, 32, 0.12);--ds-color-error: #c44040;--ds-color-error-light: #fef0f0;--ds-color-text: #1c1b18;--ds-color-text-secondary: #5c5953;--ds-color-text-muted: #9d9a92;--ds-color-border: #e4e2dd;--ds-color-border-hover: #d0cec8;--ds-color-bg-page: #f5f4f1;--ds-color-bg-surface: #ffffff;--ds-color-bg-subtle: #fafaf8}.dark{--ds-color-brand: #60a5fa;--ds-color-brand-light: #1e3a8a;--ds-color-brand-muted: rgba(96, 165, 250, 0.15);--ds-color-success: #34d399;--ds-color-success-light: #064e3b;--ds-color-success-muted: rgba(52, 211, 153, 0.15);--ds-color-warning: #fbbf24;--ds-color-warning-light: #78350f;--ds-color-warning-muted: rgba(251, 191, 36, 0.15);--ds-color-error: #f87171;--ds-color-error-light: #7f1d1d;--ds-color-text: #f3f4f6;--ds-color-text-secondary: #d1d5db;--ds-color-text-muted: #9ca3af;--ds-color-border: #374151;--ds-color-border-hover: #4b5563;--ds-color-bg-page: #0a0a0a;--ds-color-bg-surface: #111827;--ds-color-bg-subtle: #1f2937}.ds-token-row-btn{display:block;width:100%;padding:12px;border:none;border-bottom:1px solid var(--ds-color-bg-subtle);background:var(--ds-color-bg-surface);cursor:pointer;text-align:left;transition:background 120ms ease}.ds-token-row-btn:last-child{border-bottom:none}.ds-token-row-btn:hover{background:var(--ds-color-bg-subtle)}.ds-token-row-btn.selected{background:var(--ds-color-brand-light)}.ds-token-row-name{font-family:ui-monospace, 'SF Mono', SFMono-Regular, Menlo, Monaco, Consolas, monospace;font-size:11px;color:var(--ds-color-text);font-weight:500}.ds-token-row-value{font-size:11px;color:var(--ds-color-text-muted);margin-top:2px;display:flex;justify-content:space-between;align-items:center}.ds-token-color-swatch{display:inline-flex;align-items:center;gap:4px}.ds-token-color-box{width:12px;height:12px;border-radius:2px;border:1px solid var(--ds-color-border)}.ds-mode-toggle-group{display:inline-flex;background:var(--ds-color-bg-subtle);border-radius:8px;padding:3px;border:1px solid var(--ds-color-border)}.ds-mode-toggle-btn{padding:8px 14px;border:none;border-radius:6px;background:transparent;color:var(--ds-color-text-muted);font-weight:500;font-size:12px;cursor:pointer;transition:all 120ms ease}.ds-mode-toggle-btn.active{background:var(--ds-color-bg-surface);color:var(--ds-color-text);box-shadow:0 1px 3px rgba(0, 0, 0, 0.08)}.ds-category-pills{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:12px}.ds-category-pill{padding:5px 10px;border:none;border-radius:6px;background:var(--ds-color-bg-subtle);color:var(--ds-color-text-secondary);font-size:11px;font-weight:500;cursor:pointer;text-transform:capitalize;transition:all 120ms ease}.ds-category-pill.active{background:var(--ds-color-brand);color:#fff}.ds-tree-item{border-radius:8px;padding:10px 12px;margin:4px 0;cursor:pointer;transition:all 120ms ease;background:var(--ds-color-bg-subtle);border:2px solid var(--ds-color-border)}.ds-tree-item.depth-2{padding:6px 8px}.ds-tree-item.selected{background:var(--ds-color-warning-light);border-color:var(--ds-color-warning);box-shadow:0 0 0 3px rgba(196, 122, 32, 0.1)}.ds-tree-item.highlighted{background:var(--ds-color-success-light);border-color:var(--ds-color-success);box-shadow:0 0 0 3px rgba(26, 138, 92, 0.1)}.ds-tree-item.default{cursor:default}.ds-tree-item-label{font-family:ui-monospace, 'SF Mono', SFMono-Regular, Menlo, Monaco, Consolas, monospace;font-weight:600;font-size:12px;color:var(--ds-color-text-secondary);display:flex;align-items:center;gap:8px}.ds-tree-item.depth-2 .ds-tree-item-label{font-size:11px}.ds-tree-item.selected .ds-tree-item-label{color:var(--ds-color-warning)}.ds-tree-item.highlighted .ds-tree-item-label{color:var(--ds-color-success)}.ds-tree-item-children{margin-top:8px}.ds-highlight-wrapper{position:relative;border-radius:inherit}.ds-highlight-overlay{position:absolute;inset:-2px;border:2px solid var(--ds-color-success);border-radius:inherit;background:var(--ds-color-success-muted);pointer-events:none;transition:all 200ms ease}.ds-control-panel{display:flex;gap:8px;align-items:center;margin-bottom:16px;flex-wrap:wrap}.ds-reset-btn{padding:8px 12px;border:1px solid rgba(196, 64, 64, 0.4);border-radius:4px;background:var(--ds-color-bg-surface);color:var(--ds-color-error);font-size:12px;cursor:pointer}.ds-token-editor{margin-top:16px;padding:12px;background:var(--ds-color-bg-subtle);border-radius:8px;border:1px solid var(--ds-color-border)}.ds-token-editor-label{font-size:10px;font-weight:700;color:var(--ds-color-text-muted);text-transform:uppercase;letter-spacing:0.5px;margin-bottom:10px}.ds-token-editor-affects{margin-top:10px;font-size:10px;color:var(--ds-color-text-muted)}.ds-token-editor-affects-item{font-family:ui-monospace, 'SF Mono', SFMono-Regular, Menlo, Monaco, Consolas, monospace;color:var(--ds-color-success)}.ds-component-selector{padding:12px}.ds-component-selector-empty{color:var(--ds-color-text-muted);font-size:12px;font-style:italic}.ds-component-selector-title{font-family:ui-monospace, 'SF Mono', SFMono-Regular, Menlo, Monaco, Consolas, monospace;font-size:14px;font-weight:600;margin-bottom:12px}.ds-component-token-item{padding:10px;background:var(--ds-color-bg-subtle);border-radius:4px;margin-bottom:8px}.ds-component-token-name{font-family:ui-monospace, 'SF Mono', SFMono-Regular, Menlo, Monaco, Consolas, monospace;font-size:11px;font-weight:500;margin-bottom:8px;color:var(--ds-color-text)}.ds-main-grid{display:grid;grid-template-columns:260px 1fr;gap:20px}.ds-preview-section{display:flex;flex-direction:column;gap:16px}.ds-preview-card{padding:20px;background:var(--ds-color-bg-page);border-radius:0 0 12px 12px}.ds-legend{display:flex;gap:16px;font-size:11px;color:var(--ds-color-text-muted)}.ds-legend-item{display:flex;align-items:center;gap:8px}.ds-legend-box{width:14px;height:14px;border-radius:4px}.ds-legend-box.affected{background:var(--ds-color-success-light);border:2px solid var(--ds-color-success)}.ds-legend-box.selected{background:var(--ds-color-warning-light);border:2px solid var(--ds-color-warning)}.ds-preview-label{display:block;font-weight:500}.ds-preview-input{background:var(--ds-color-bg-surface)}"},{"filePath":"css/stylingVariables.css","content":".token-swatch{display:inline-block;width:24px;height:24px;border-radius:4px;border:1px solid #e0e0e0;vertical-align:middle}.dark .token-swatch{border-color:#4b5563}.token-radius{display:inline-block;width:32px;height:32px;background:#2f98ff;vertical-align:middle}.dark .token-radius{background:#60a5fa}.token-space{display:inline-block;height:24px;background:#2f98ff;vertical-align:middle}.dark .token-space{background:#60a5fa}.tokens-grid{margin:1rem 0}.tokens-grid table{width:100%}.tokens-grid td:first-child{width:100px}"},{"filePath":"css/themeBuilder.css","content":".theme-builder-container{border:1px solid #e5e7eb;border-radius:12px;overflow:hidden;background:#fafafa}.theme-builder-header{background:white;padding:16px 20px;border-bottom:1px solid #e5e7eb}.theme-builder-title{margin:0 0 12px 0;font-size:16px;font-weight:600;color:#1a1a1a}.theme-builder-presets{display:flex;flex-wrap:wrap;gap:8px}.theme-builder-preset-btn{padding:6px 12px;border:1px solid #e5e7eb;border-radius:6px;background:white;color:#1a1a1a;cursor:pointer;font-size:13px;font-weight:500}.theme-builder-preset-btn.active{border:2px solid #2f98ff;background:#eff6ff;color:#2f98ff}.theme-builder-grid{display:grid;grid-template-columns:1fr 1fr;min-height:500px}.theme-builder-tokens{border-right:1px solid #e5e7eb;background:white;overflow:auto;max-height:600px}.theme-builder-group{border-bottom:1px solid #e5e7eb}.theme-builder-group-header{width:100%;padding:12px 16px;background:none;border:none;display:flex;justify-content:space-between;align-items:center;cursor:pointer;font-size:14px;font-weight:600;color:#1a1a1a}.theme-builder-group-content{padding:0 16px 16px}.theme-builder-token-row{display:flex;justify-content:space-between;align-items:center;padding:8px 0;border-top:1px solid #f3f4f6}.theme-builder-token-label{font-size:13px;color:#4b5563}.theme-builder-preview-panel{padding:20px;background:#f8f9fa;transition:background 200ms ease}.theme-builder-preview-panel.dark-bg{background:#0f0f0f}.theme-builder-preview-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.theme-builder-preview-label{font-size:14px;font-weight:600;color:#1a1a1a}.theme-builder-theme-toggle{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border:1px solid #e5e7eb;border-radius:6px;background:white;color:#6b7280;cursor:pointer;font-size:11px;font-weight:500}.theme-builder-theme-toggle.dark{border-color:#374151;background:#1f2937;color:#e5e7eb}.code-preview-container{margin-top:16px;border-radius:8px;overflow:hidden;border:1px solid #e5e7eb}.code-preview-header{display:flex;align-items:center;justify-content:space-between;background:#f8f9fa;border-bottom:1px solid #e5e7eb;padding:0 12px}.code-preview-tabs{display:flex;gap:0}.code-preview-tab{padding:10px 16px;background:transparent;border:none;border-bottom:2px solid transparent;color:#6b7280;cursor:pointer;font-size:13px;font-weight:500;font-family:monospace}.code-preview-tab.active{border-bottom-color:#2f98ff;color:#2f98ff}.code-preview-copy-btn{display:flex;align-items:center;gap:6px;padding:6px 10px;background:transparent;border:1px solid #e5e7eb;border-radius:6px;color:#6b7280;cursor:pointer;font-size:12px;font-weight:500;transition:all 150ms ease}.code-preview-copy-btn.copied{background:#dcfce7;border-color:#86efac;color:#16a34a}.code-preview-code{background:#1a1a1a;color:#e5e7eb;padding:16px;margin:0;overflow:auto;font-size:12px;font-family:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;max-height:280px;line-height:1.5}.theme-builder-input-text{padding:6px 8px;border:1px solid #e5e7eb;border-radius:4px;font-size:12px;background:white;color:#1a1a1a}.theme-builder-input-text.monospace{font-family:monospace}.dark .theme-builder-container{background:#1f2937;border-color:#374151}.dark .theme-builder-header{background:#111827;border-bottom-color:#374151}.dark .theme-builder-title{color:#f3f4f6}.dark .theme-builder-preset-btn{background:#1f2937;border-color:#4b5563;color:#e5e7eb}.dark .theme-builder-preset-btn.active{background:#1e3a8a;border-color:#3b82f6;color:#93c5fd}.dark .theme-builder-tokens{background:#111827;border-right-color:#374151}.dark .theme-builder-group{border-bottom-color:#374151}.dark .theme-builder-group-header{color:#f3f4f6}.dark .theme-builder-token-row{border-top-color:#374151}.dark .theme-builder-token-label{color:#9ca3af}.dark .theme-builder-preview-panel{background:#0a0a0a}.dark .theme-builder-preview-label{color:#f3f4f6}.dark .theme-builder-theme-toggle{background:#1f2937;border-color:#4b5563;color:#e5e7eb}.dark .code-preview-container{border-color:#374151}.dark .code-preview-header{background:#1f2937;border-bottom-color:#374151}.dark .code-preview-tab{color:#9ca3af}.dark .code-preview-tab.active{color:#60a5fa;border-bottom-color:#60a5fa}.dark .code-preview-copy-btn{background:#1f2937;border-color:#4b5563;color:#9ca3af}.dark .code-preview-copy-btn.copied{background:#064e3b;border-color:#059669;color:#6ee7b7}.dark .theme-builder-input-text{background:#1f2937;border-color:#4b5563;color:#e5e7eb}"}],"page":{"pagePath":"changelogs/react-native-sdk","slug":"/changelogs/react-native-sdk","pageMetadata":{"title":"React Native SDK","sidebarTitle":"React Native SDK","icon":"react","rss":true,"description":null,"href":"/changelogs/react-native-sdk"},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,em:`em`,hr:`hr`,img:`img`,li:`li`,ol:`ol`,p:`p`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{Frame,Info,Note,OptimizedImage,Tip,Update,Warning}=_components;if(!Frame)_missingMdxReference(`Frame`,true);if(!Info)_missingMdxReference(`Info`,true);if(!Note)_missingMdxReference(`Note`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!Update)_missingMdxReference(`Update`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(Update,{label:`v2.47.1`,description:`2026-09-15`,id:`v2-47-1`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Fixed `,_jsx(_components.code,{children:`onDismiss`}),` not firing when your app closes checkout with `,_jsx(_components.code,{children:`Primer.dismiss()`}),`. It previously fired only when the shopper closed the sheet`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.47.0`,description:`2026-09-11`,id:`v2-47-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`Primer.dismiss()`}),` and `,_jsx(_components.code,{children:`Primer.cleanUp()`}),` no longer remove event listeners they did not add, including listeners registered by your app, and no longer clear the settings passed to `,_jsx(_components.code,{children:`Primer.configure()`})]}),`\n`,_jsx(_components.li,{children:`Setting up the ACH, bank redirect or raw data manager again on the same instance now replaces the previous callbacks instead of adding a second set`}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Android`}),`: fixed callbacks no longer firing after checkout was closed, until `,_jsx(_components.code,{children:`Primer.configure()`}),` was called again`]}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`iOS`})}),_jsxs(_components.p,{children:[`iOS SDK updated to `,_jsx(_components.strong,{children:`v2.52.0`})]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Improvements to cancellation handling and web redirect based payment methods`}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Apple Pay`}),`: fixed amounts showing ten times too high in the payment sheet for three-decimal currencies (`,_jsx(_components.code,{children:`BHD`}),`, `,_jsx(_components.code,{children:`IQD`}),`, `,_jsx(_components.code,{children:`JOD`}),`, `,_jsx(_components.code,{children:`KWD`}),`, `,_jsx(_components.code,{children:`LYD`}),`, `,_jsx(_components.code,{children:`OMR`}),`, `,_jsx(_components.code,{children:`TND`}),`)`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Apple Pay`}),`: `,_jsx(_components.code,{children:`onBeforePaymentCreate`}),` now fires after the shopper authorizes the payment, so the billing and shipping details collected in the Apple Pay sheet are available on the client session. This matches Android`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Bancontact`}),`: fixed tokenization failing in Headless raw data integrations, and two-digit (`,_jsx(_components.code,{children:`MM/YY`}),`) expiry years are now accepted`]}),`\n`,_jsxs(_components.li,{children:[`Cached SDK assets moved from the app’s Documents directory to `,_jsx(_components.code,{children:`Library/Caches`}),`, so they are no longer included in device backups`]}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Android`})}),_jsxs(_components.p,{children:[`Android SDK updated to `,_jsx(_components.strong,{children:`v2.53.0`})]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Improvements to cancellation handling and web redirect based payment methods`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.46.1`,description:`2026-07-16`,id:`v2-46-1`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`iOS`}),`: fixed a crash when SDK events were emitted after the native module had been released`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.46.0`,description:`2026-07-03`,id:`v2-46-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🚀 New features`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Apple Pay \u0026 Google Pay`}),`: added `,_jsx(_components.code,{children:`allowedCardTypes`}),`, letting you restrict which card types are offered`]}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Improved TypeScript type definitions`}),`\n`]}),_jsx(Info,{children:_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`allowedCardNetworks`}),` option has been removed from Google Pay. Configure supported card networks with `,_jsx(_components.a,{href:`/api-reference/v2.4/api-reference/client-session-api/create-a-client-session#request.body.paymentMethod.orderedAllowedCardNetworks`,children:_jsx(_components.code,{children:`orderedAllowedCardNetworks`})}),` in your client session.`]})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`iOS`})}),_jsxs(_components.p,{children:[`iOS SDK updated to `,_jsx(_components.strong,{children:`v2.51.1`})]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Fixed co-badged card validation in Headless integrations`}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Android`})}),_jsxs(_components.p,{children:[`Android SDK updated to `,_jsx(_components.strong,{children:`v2.52.0`})]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Removed a redundant title from the web view`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.45.0`,description:`2026-06-04`,id:`v2-45-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`iOS`})}),_jsxs(_components.p,{children:[`iOS SDK updated to `,_jsx(_components.strong,{children:`v2.49.0`})]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`General fixes and improvements`}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Android`})}),_jsxs(_components.p,{children:[`Android SDK updated to `,_jsx(_components.strong,{children:`v2.51.0`})]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`General fixes and improvements`}),`\n`]}),_jsxs(Info,{children:[_jsxs(_components.p,{children:[_jsxs(_components.strong,{children:[`Primer SDK now depends on `,_jsx(_components.code,{children:`io.primer:klarna-android:1.3.0`})]}),_jsx(`br`,{}),`\nIf you are using the Klarna dependency in your code, you are encouraged to update it and align with the supported version.`]}),_jsxs(_components.p,{children:[`Klarna SDK was updated from v2.7.1 to v2.11.3. Please refer to the official Klarna `,_jsx(_components.a,{href:`https://github.com/klarna/klarna-mobile-sdk-android/blob/master/CHANGELOG.md`,children:`CHANGELOG`}),`\nfor more information.`]})]})]}),`\n`,_jsxs(Update,{label:`v2.44.0`,description:`2026-05-19`,id:`v2-44-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`iOS`})}),_jsxs(_components.p,{children:[`iOS SDK updated to `,_jsx(_components.strong,{children:`v2.48.0`})]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🚀 New features`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Improved payment method processing`}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Android`})}),_jsxs(_components.p,{children:[`Android SDK updated to `,_jsx(_components.strong,{children:`v2.50.0`})]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🚀 New feature`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Improved payment method processing`}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Fixes some issues with text color and dark mode theming`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.43.1`,description:`2026-05-14`,id:`v2-43-1`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🚀 New features`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Added `,_jsx(_components.code,{children:`KlarnaComponent.cleanUp()`}),` to tear down the Klarna component, enabling consecutive Klarna payments within the same app session.`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.43.0`,description:`2026-04-28`,id:`v2-43-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`iOS`})}),_jsxs(_components.p,{children:[`iOS SDK updated to `,_jsx(_components.strong,{children:`v2.47.0`})]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🚀 New features`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Improved payment method processing`}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Improvements to Card Network data`}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Android`})}),_jsxs(_components.p,{children:[`Android SDK updated to `,_jsx(_components.strong,{children:`v2.49.0`})]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🚀 New feature`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Improved payment method processing`}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Add cvvLabel to CardNetwork Descriptor`}),`\n`]})]}),`\n`,_jsx(Update,{label:`v2.42.2`,description:`2026-02-02`,id:`v2-42-2`,children:_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Fixed an issue that could cause Codegen errors on older React Native versions.`}),`\n`]})}),`\n`,_jsxs(Update,{label:`v2.42.1`,description:`2026-01-28`,id:`v2-42-1`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`iOS`})}),_jsxs(_components.p,{children:[`iOS SDK updated to `,_jsx(_components.strong,{children:`v2.44.1`})]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Fixed an issue that could cause a precondition to trigger`}),`\n`,_jsx(_components.li,{children:`Fixed an issue that could cause the app to become unresponsive after dismissing Apple Pay`}),`\n`,_jsx(_components.li,{children:`General improvements around error handling`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.42.0`,description:`2026-01-16`,id:`v2-42-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`iOS`})}),_jsxs(_components.p,{children:[`iOS SDK updated to `,_jsx(_components.strong,{children:`v2.44.0`})]}),_jsx(Warning,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Note`}),`: From this version onward, `,_jsx(_components.code,{children:`Primer3DS`}),` requires a minimum version of `,_jsx(_components.code,{children:`2.7.0`}),`.`]})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Show processing screen prior to presenting 3DS challenge.`}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Android`})}),_jsxs(_components.p,{children:[`Android SDK updated to `,_jsx(_components.strong,{children:`v2.47.0`})]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(Warning,{children:[_jsxs(_components.p,{children:[_jsxs(_components.strong,{children:[`Primer SDK now depends on `,_jsx(_components.code,{children:`io.primer:3ds-android:1.8.0`})]}),_jsx(`br`,{}),`\nIf 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.`]}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Changelog`}),`:`,_jsx(`br`,{})]}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`New LOA Reference Number`}),`\n`,_jsx(_components.li,{children:`Updated Device Information Data Version to EMVCo 3DS SDK Device Information 1.7`}),`\n`,_jsx(_components.li,{children:`Bouncy Castle (artefact: org.bouncycastle:bcprov-jdk15to18) has been removed as a dependency. The 3DS SDK defaults to the default OS Security Provider in case Bouncy Castle is not found.`}),`\n`]})]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`improved 3DS locale normalization`}),`\n`,_jsx(_components.li,{children:`improved custom Locale handling in Drop-in`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.41.0`,description:`2025-12-12`,id:`v2-41-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`iOS`})}),_jsxs(_components.p,{children:[`iOS SDK updated to `,_jsx(_components.strong,{children:`v2.43.1`})]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`EFTPOS co-badged cards selection is now automatic based on merchant’s network preference`}),`\n`,_jsx(_components.li,{children:`Improved deeplink handling`}),`\n`,_jsx(_components.li,{children:`Klarna UI fixes (Continue button, back button)`}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Fixed an issue with surcharge amount validation`}),`\n`,_jsx(_components.li,{children:`Fixed card network state not properly cleared when card number field emptied`}),`\n`,_jsx(_components.li,{children:`Fixed card validation issues that could cause network picker display problems`}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Android`})}),_jsxs(_components.p,{children:[`Android SDK updated to `,_jsx(_components.strong,{children:`v2.46.0`})]}),_jsxs(Warning,{children:[_jsx(_components.p,{children:_jsxs(_components.strong,{children:[`Primer SDK now depends on `,_jsx(_components.code,{children:`io.primer:3ds-android:1.7.0`})]})}),_jsx(_components.p,{children:`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.`}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Changelog:`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`The 3DS SDK now follows the EU Directive 2019/882.`}),`\n`]})]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`EFTPOS co-badged cards selection is now automatic based on merchant’s network preference`}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Fixed a corner case when switching between different co-badged cards`}),`\n`,_jsx(_components.li,{children:`Fixed navigation bar blur when edge-to-edge enabled`}),`\n`,_jsx(_components.li,{children:`Fixed initial deeplink handling`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.40.0`,description:`2025-11-14`,id:`v2-40-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`iOS`})}),_jsxs(_components.p,{children:[`iOS SDK updated to `,_jsx(_components.strong,{children:`v2.42.2`})]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Fixes an issue where received url schemes were causing an exception.`}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Android`})}),_jsxs(_components.p,{children:[`Android SDK updated to `,_jsx(_components.strong,{children:`v2.45.0`})]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Raised the minimum supported SDK version to `,_jsx(_components.code,{children:`23`})]}),`\n`,_jsxs(_components.li,{children:[`Updated `,_jsx(_components.code,{children:`play-services-wallet`}),` dependency to `,_jsx(_components.code,{children:`19.5.0`})]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.39.2`,description:`2025-10-30`,id:`v2-39-2`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`iOS`})}),_jsxs(_components.p,{children:[`iOS SDK updated to `,_jsx(_components.strong,{children:`v2.42.1`})]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Fixes an issue where a back button was showing incorrectly in Klarna headless flow`}),`\n`,_jsx(_components.li,{children:`Improve threading in InternalCardComponentsManager`}),`\n`,_jsx(_components.li,{children:`Improved Swift interoperability path resolution`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.39.1`,description:`2025-10-24`,id:`v2-39-1`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🚀 New features`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Migrated Drop-In to use `,_jsx(_components.strong,{children:`Turbo Modules`}),` for improved performance, reliability, and startup time.`]}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Android`})}),_jsxs(_components.p,{children:[`Android SDK updated to `,_jsx(_components.strong,{children:`v2.44.1`})]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Fixed crash that occurred when user returned to 3DS screen using a deeplink.`}),`\n`,_jsx(_components.li,{children:`Reduced redundant data fetching to speed up loading and improve overall performance.`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.38.0`,description:`2025-10-15`,id:`v2-38-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🚀 New feature`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Add EFTPOS network support`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.37.1`,description:`2025-09-25`,id:`v2-37-1`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Enable TypeScript declaration generation`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.37.0`,description:`2025-09-24`,id:`v2-37-0`,children:[_jsxs(Warning,{children:[_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Breaking Change`}),`: This version removes support for legacy API versions. The SDK now requires API version 2.4 or later.`]}),_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`PrimerApiVersion.V2_3`}),` option for `,_jsx(_components.code,{children:`settings.apiVersion`}),` has been removed. The SDK now exclusively uses API version 2.4.`]}),_jsx(_components.p,{children:_jsxs(_components.strong,{children:[`If you were using the `,_jsx(_components.code,{children:`PrimerApiVersion.V2_3`}),` setting:`]})}),_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Ensure your backend integration supports API version 2.4`}),`\n`,_jsxs(_components.li,{children:[`Review the `,_jsx(_components.a,{href:`/changelogs/migration-guides/API-2.3-to-2.4`,children:`Migration Guide`}),` for detailed upgrade instructions`]}),`\n`]}),_jsxs(_components.p,{children:[`For more information, see our `,_jsx(_components.a,{href:`/sdk/react-native/v2.x.x/common-objects/PrimerSettings#apiVersion`,children:`SDK reference`}),` and `,_jsx(_components.a,{href:`/api-reference/get-started/overview`,children:`API Reference`}),`.`]})]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`iOS`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`iOS SDK updated to v2.41.1`}),`\n`,_jsx(_components.li,{children:`Improved iOS 26 and Xcode 26 compatibility`}),`\n`,_jsx(_components.li,{children:`Enhanced error reporting clarity`}),`\n`,_jsx(_components.li,{children:`Fixed card network validation security issue`}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Android`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Android SDK updated to v2.43.0`}),`\n`,_jsx(_components.li,{children:`Enhanced internal storage of analytics events`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.36.0`,description:`2025-09-04`,id:`v2-36-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`Android`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Improved internal analytics event processing to consolidate redundant events and enhance payload data with richer contextual metadata.\nThis internal improvement reduces network overhead while providing better system insights.`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Improvements to Klarna theme selection.`}),`\n`,_jsxs(Info,{children:[_jsxs(_components.p,{children:[_jsxs(_components.strong,{children:[`Primer SDK now depends on `,_jsx(_components.code,{children:`io.primer:klarna-android:1.2.0`})]}),_jsx(`br`,{}),`\nIf you are using the Klarna dependency in your code, you are encouraged to update it and align with the supported version.`]}),_jsxs(_components.p,{children:[`Klarna SDK was updated from v2.6.27 to v2.7.1. Please refer to the official Klarna `,_jsx(_components.a,{href:`https://github.com/klarna/klarna-mobile-sdk-android/blob/master/CHANGELOG.md`,children:`CHANGELOG`}),`\nfor more information.`]})]}),`\n`]}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Fixed crash that occurred when switching payment methods after the `,_jsx(_components.code,{children:`PrimerSessionIntent`}),` parameter was changed`]}),`\n`,_jsxs(_components.li,{children:[`Fixed crash that could occur when calling `,_jsx(_components.code,{children:`cleanup()`}),` if the Drop-in dismissal event was not properly handled internally`]}),`\n`,_jsxs(_components.li,{children:[`Continuing 3DS flow sometimes failed silently, resulting in `,_jsx(_components.code,{children:`failed-to-resume`}),` or `,_jsx(_components.code,{children:`payment-failed`}),` errors.\nWe have fixed that and improved our logging in this specific use case.`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.35.0`,description:`2025-08-27`,id:`v2-35-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`iOS`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🚀 New features`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Add appearance mode override to respect app-level theme settings.`}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Improvements to Klarna vaulting flow.`}),`\n`]}),_jsxs(Warning,{children:[_jsxs(_components.p,{children:[`If you are using the Klarna dependency in your code, you are encouraged to update `,_jsx(_components.code,{children:`PrimerKlarnaSDK`}),` to `,_jsx(_components.code,{children:`1.2.0`}),`.\n`,_jsx(_components.strong,{children:`Please note that this version contains critical fixes for the new Liquid Glass UI when built with Xcode 26/iOS 26.`})]}),_jsxs(_components.p,{children:[`Klarna SDK was updated from v2.6.14 to v2.7.2. Please refer to the official Klarna `,_jsx(_components.a,{href:`https://github.com/klarna/klarna-mobile-sdk/blob/master/CHANGELOG.md`,children:`CHANGELOG`}),`\nfor more information.`]})]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Improved payment tokenization and cancellation flow.`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.34.1`,description:`2025-08-20`,id:`v2-34-1`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Fixed compilation bug on RN 0.81+`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.34.0`,description:`2025-07-16`,id:`v2-34-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`iOS`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🚀 New features`})}),_jsxs(_components.p,{children:[`This release introduces `,_jsx(_components.strong,{children:`Apple Pay merchant tokens`}),`, a powerful new feature that enables merchants\nto process recurring payments, subscriptions, and automatic reloads without being tied to specific customer devices.`]}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Ready to get started?`}),` Follow our `,_jsx(_components.a,{href:`/connections/payment-methods/apple-pay/overview#apple-pay-mpan-configuration`,children:`implementation guides`}),`\nto request merchant tokens (MPANs) and integrate this feature into your payment flow.`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Added support for MM/YY expiry date format`}),`\n`,_jsxs(_components.li,{children:[`Enhanced Apple Pay error handling with new specific error IDs:`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`apple-pay-no-cards-in-wallet`}),`: Detects when no payment cards are configured in Apple Wallet`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`apple-pay-device-not-supported`}),`: Identifies devices that don’t support Apple Pay`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`apple-pay-configuration-error`}),`: Reports merchant configuration issues`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`apple-pay-presentation-failed`}),`: Captures general presentation failures`]}),`\n`]}),`\n`]}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Reduce console noise for nil remoteUrl in ImageManager`}),`\n`,_jsx(_components.li,{children:`Reduce excessive validation logging`}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🛠️ Refactor`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Introduce default values for PrimerError`}),`\n`,_jsx(_components.li,{children:`Migrated many classes and files to async await`}),`\n`,_jsx(_components.li,{children:`Clean up UI event posting`}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Android`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Primer SDK now depends on `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`Kotlin 2.0.21`})})]}),`\n`]}),_jsxs(Warning,{children:[_jsxs(_components.p,{children:[_jsxs(_components.strong,{children:[`Primer SDK now depends on `,_jsx(_components.code,{children:`io.primer:3ds-android:1.6.2`})]}),_jsx(`br`,{}),`\nIf 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.`]}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Changelog`}),`:`,_jsx(`br`,{})]}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Due to several security vulnerabilities, Bouncy Castle (artefact : org.bouncycastle:bcprov-jdk15to18) was updated to version 1.79`}),`\n`,_jsx(_components.li,{children:`This update improves performance on devices with larger memory capacities by fulfilling Google’s requirement for 16 KB memory page sizes, ensuring full compatibility with future Play Store regulations.`}),`\n`]})]})]}),`\n`,_jsxs(Update,{label:`v2.33.0`,description:`2025-06-13`,id:`v2-33-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`iOS`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Klarna auto continues when single payment option`}),`\n`,_jsx(_components.li,{children:`Implement the Co-badged Cards feature on Drop-in`}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Fix memory crash in validateRawData with weak self capture`}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Android`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`We have bumped `,_jsx(_components.code,{children:`compile`}),` and `,_jsx(_components.code,{children:`target`}),` versions to `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`35`})})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Analytics:`}),` We have reduced number of analytics events captured and sent to our server`]}),`\n`,_jsx(_components.li,{children:`Improvements to DI resolution`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.32.2`,description:`2025-05-16`,id:`v2-32-2`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`We have added `,_jsx(_components.code,{children:`CardFormUIOptions.payButtonAddNewCard`}),` to support the “Add New Card” option in the card form flow.`]}),`\n`,_jsxs(_components.li,{children:[`Introduced support for the ‘Continue payment flow’ workflow action to configure checkout outcome. See our `,_jsx(_components.a,{href:`/workflows/apps/native-apps/primer-payments-app/continue-payment-flow-action#control-the-checkout-result-with-checkout-outcome`,children:`documentation`}),` for more info.`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.32.1`,description:`2025-04-17`,id:`v2-32-1`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`Android`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`PayPal`}),`: Improved support for picture-in-picture mode. Fixed an issue where some successful authentication flows were incorrectly marked as errors by the SDK.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`3DS`}),`: Enhanced locale normalization. Resolved an issue where certain locales were being rejected by the 3DS SDK, causing the flow to fail.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Klarna`}),`: Updated Klarna SDK to `,_jsx(_components.code,{children:`1.1.0`})]}),`\n`]}),_jsxs(Warning,{children:[_jsxs(_components.p,{children:[`⚠️ `,_jsxs(_components.strong,{children:[`Primer SDK now supports BOM (Bill of Materials) via `,_jsx(_components.code,{children:`io.primer:bom`})]})]}),_jsxs(_components.p,{children:[`If you’re using Klarna in your own code, you can `,_jsx(_components.strong,{children:`switch to the BOM`}),` to automatically stay aligned with the supported version:`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:_jsx(_components.code,{children:`implementation(platform(\"io.primer:bom:\u003cversion>\")) implementation(\"io.primer:klarna-android\")`})})}),_jsx(_components.p,{children:`This removes the need to manage Klarna versions manually.`}),_jsxs(_components.p,{children:[`If you choose `,_jsx(_components.strong,{children:`not`}),` to use the BOM, make sure you manually update to `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`io.primer:klarna-android:1.1.0`})})]})]})]}),`\n`,_jsxs(Update,{label:`v2.32.0`,description:`2025-03-25`,id:`v2-32-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🚀\\xA0New feature`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`The SDK will now default to using API version 2.4 when initialised. It is possible to use API version 2.3 via `,_jsx(_components.code,{children:`PrimerSettings.apiVersion`}),`. For more information see our `,_jsx(_components.a,{href:`/sdk/android/v2.x.x/common-objects/PrimerSettings#properties.apiVersion`,children:`SDK reference`}),`, `,_jsx(_components.a,{href:`/sdk/react-native/v2.x.x/common-objects/PrimerSettings`,children:`Api Reference`}),` and `,_jsx(_components.a,{href:`/changelogs/migration-guides/API-2.3-to-2.4`,children:`Migration Guides`}),`.`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.31.0`,description:`2025-03-19`,id:`v2-31-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`Android`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`3DS Locale Propagation:`}),` Resolved an issue where the 3DS SDK occasionally rejected propagated locale settings.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`iDEAL via Adyen:`}),` iDEAL is now fully supported as a redirect-based payment method.`]}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`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.`}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`3DS Flow Stability:`}),` Fixed crashes that occurred when the 3DS flow failed while the app was running in the background.`]}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`iOS`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Improved error handling when server returns 202 response code`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.30.2`,description:`2025-02-26`,id:`v2-30-2`,children:[_jsx(_components.p,{children:_jsx(_components.em,{children:`No Android Changes`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`iOS`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`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.`}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`We have made changes to our internal Analytics logging system which will result in fewer unnecessary logs being sent.`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.30.1`,description:`2025-02-12`,id:`v2-30-1`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`We’ve increased the timeout for payment creation and handling for better stability.`}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`iOS`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`We have fixed a bug in our Drop-In Card Form, which resulted in a poor user experience while using RTL formatted languages.`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.30.0`,description:`2025-02-05`,id:`v2-30-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🚀\\xA0New feature`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`With this version it is possible to opt-in to use API v2.4. For more information see our `,_jsx(_components.a,{href:`/sdk/react-native/v2.x.x/common-objects/PrimerSettings#apiVersion`,children:`SDK reference`}),`, `,_jsx(_components.a,{href:`/api-reference/get-started/overview`,children:`API Reference`}),` and `,_jsx(_components.a,{href:`/changelogs/migration-guides/API-2.3-to-2.4`,children:`Migration Guides`}),`. By default, SDK will remain backward compatible and use API `,_jsx(_components.code,{children:`v2.3`}),`.`]}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Expanded Language Support`}),`: The React Native SDK now supports additional languages in drop-in, including:`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Arabic`}),`\n`,_jsx(_components.li,{children:`Bulgarian`}),`\n`,_jsx(_components.li,{children:`Czech`}),`\n`,_jsx(_components.li,{children:`Spanish (Argentina \u0026 Mexico)`}),`\n`,_jsx(_components.li,{children:`Estonian`}),`\n`,_jsx(_components.li,{children:`Croatian`}),`\n`,_jsx(_components.li,{children:`Hungarian`}),`\n`,_jsx(_components.li,{children:`Japanese`}),`\n`,_jsx(_components.li,{children:`Latvian`}),`\n`,_jsx(_components.li,{children:`Portuguese (Brazil)`}),`\n`,_jsx(_components.li,{children:`Romanian`}),`\n`,_jsx(_components.li,{children:`Vietnamese`}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`3DS Sandbox Testing`}),`: Enhanced support for testing 3D Secure (3DS) flows in the sandbox environment.`]}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Android`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Improved Analytics \u0026 Reporting`}),`: Enhanced tracking and insights for better performance monitoring.`]}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Android`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Drop-in`}),`: fixed an issue causing crashes when calling `,_jsx(_components.code,{children:`Primer.dismiss()`}),` after the checkout sheet is already dismissed.`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.29.0`,description:`2025-01-27`,id:`v2-29-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`API Timeout values have been updated to improve behaviour in the loading phases of the checkout.`}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Android`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Enhanced Card Expiry Date Validation:`}),` We’ve improved the accuracy of expiry date validation for both headless and drop-in integrations.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Improved Stability:`}),` Resolved crashes caused by `,_jsx(_components.code,{children:`ConcurrentModificationException`}),` during SDK initialization.`]}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🚀\\xA0New feature`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`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.`}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Android`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`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 network detection in general. Visit our `,_jsx(_components.a,{href:`/payment-services/cobadged-cards/`,children:`documentation`}),` about co-badged cards in order to learn more.`]}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Android`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Analytics`}),`: fixed serialization and deserialization of analytics events.`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.28.0`,description:`2024-12-23`,id:`v2-28-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🚀\\xA0New feature`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`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 `,_jsx(_components.a,{href:`/sdk/react-native/v2.x.x/primer-headless-checkout/assets-manager/getPaymentMethodResources`,children:_jsx(_components.strong,{children:_jsx(_components.code,{children:`getPaymentMethodResource`})})}),` method to access these native resources seamlessly. If you are using Headless integration, make sure to check our updated `,_jsx(_components.a,{href:`/checkout/headless#step-2-render-available-payment-methods-ui`,children:`documentation`}),` about rendering of payment method buttons.`]}),`\n`,_jsxs(Note,{children:[_jsx(_components.p,{children:`ℹ️`}),_jsx(_components.p,{children:`Usage of Native Payment Method Button is a requirement for all new Android Google Pay API integrations that use a Google Pay payment button.`})]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`ACH Vaulting via Stripe`}),`: The ACH payment method through Stripe now supports a `,_jsx(_components.a,{href:`/connections/payment-methods/ach/stripe`,children:`vaulting flow`}),`, enabling you to save customer details on agreement for future transactions.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Google Pay Enhancements`}),`: You can now collect additional user data through Google Pay, including the user’s email and shipping address. Check out our `,_jsx(_components.a,{href:`/connections/payment-methods/google-pay`,children:`guide`}),` for details on enabling this feature.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Apple Pay Enhancements`}),`: You can now collect additional user data through Apple Pay, including the user’s email and shipping address. Check out our `,_jsx(_components.a,{href:`/sdk/react-native/v2.x.x/common-objects/PrimerSettings#paymentMethodOptions-properties.applePayOptions`,children:`docs`}),` for details on enabling this feature.`]}),`\n`]}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Android`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`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.`]}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Deprecations`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`In order to support `,_jsx(_components.code,{children:`Native Payment Method Button`}),` requirements, we have deprecated following methods:`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/sdk/react-native/v2.x.x/primer-headless-checkout/assets-manager/getPaymentMethodAsset`,children:`AssetsManager.getPaymentMethodAsset`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/sdk/react-native/v2.x.x/primer-headless-checkout/assets-manager/getPaymentMethodAssets`,children:`AssetsManager.getPaymentMethodAssets`})}),`\n`]}),`\n`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.27.2`,description:`2024-11-26`,id:`v2-27-2`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Android`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Prevent dismissal of Drop-in card form while a payment is active.`}),`\n`,_jsx(_components.li,{children:`Vipps via Adyen will now fall back to the Web flow in the event that the Vipps mobile app was not installed.`}),`\n`,_jsx(_components.li,{children:`We’ve fixed the crashes that occurred when using Blik through Adyen’s Drop-In in standalone mode.`}),`\n`,_jsx(_components.li,{children:`We’ve resolved occasional crashes related to the “fragment not attached” issue in Drop-In.`}),`\n`,_jsx(_components.li,{children:`We’ve resolved the issue causing crashes when users were deeplinked multiple times from PayPal.`}),`\n`,_jsx(_components.li,{children:`We’ve fixed the issue that caused crashes when retrying a 3DS challenge while another challenge was still in progress.`}),`\n`]}),_jsx(Warning,{children:_jsxs(_components.p,{children:[`⚠️ `,_jsxs(_components.strong,{children:[`Primer SDK now depends on `,_jsx(_components.code,{children:`io.primer:3ds-android:1.5.0`})]}),`\nIf 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.`]})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`iOS`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Fixes for range or index out of bounds crash in the Card Form UI.`}),`\n`,_jsx(_components.li,{children:`Fixes for a crash in InternalCardComponentsManager.`}),`\n`]}),_jsx(Note,{children:_jsxs(_components.p,{children:[`ℹ️ New 3DS SDK version is available\nIf you are using the 3DS dependency in your code, we suggest updating to version `,_jsx(_components.strong,{children:`2.4.1`}),`.`]})})]}),`\n`,_jsxs(Update,{label:`v2.27.1`,description:`2024-10-28`,id:`v2-27-1`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`iOS - Prevent dismissal of Drop-in card form while a payment is active.`}),`\n`,_jsx(_components.li,{children:`iOS - Discover card network image not showing.`}),`\n`,_jsx(_components.li,{children:`iOS - Move the cursor to the end of the text after pasting the card number.`}),`\n`,_jsx(_components.li,{children:`iOS - Errors in the card form are now correctly localized.`}),`\n`,_jsx(_components.li,{children:`iOS - Adyen Blik dismissal issue and small UI glitch.`}),`\n`,_jsx(_components.li,{children:`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.`}),`\n`,_jsx(_components.li,{children:`iOS - Fixed an issue where Adyen Blik was not present in PrimerHeadlessUniversalCheckout availablePaymentMethods.`}),`\n`,_jsx(_components.li,{children:`iOS - Various stability improvements.`}),`\n`,_jsx(_components.li,{children:`Android - Fixed serialization issue on RN 0.76+`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.27.0`,description:`2024-09-23`,id:`v2-27-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🚀\\xA0New feature`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`The SDK now supports the Stripe ACH Payment Method`}),`\n`,_jsxs(_components.li,{children:[`Read about how to integrate `,_jsx(_components.a,{href:`/connections/payment-methods/ach/stripe/`,children:`here`}),`.`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.26.3`,description:`2024-08-28`,id:`v2-26-3`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`iOS - Fixed an issue where the PayPal flow was unusable in the Drop-In Universal Checkout`}),`\n`,_jsxs(_components.li,{children:[`iOS - Fixed an issue where `,_jsx(_components.code,{children:`PrimerCheckoutData`}),` was nil when reporting an error in payment creation.`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.26.1`,description:`2024-08-10`,id:`v2-26-1`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Client Session caching`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`It is now possible to cache the ClientSession configuration client-side, which can speed up certain flows in the SDK.`}),`\n`,_jsxs(_components.li,{children:[`This can be enabled via the `,_jsx(_components.a,{href:`/sdk/react-native/v2.x.x/common-objects/PrimerSettings#clientSessionCachingEnabled`,children:`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.`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.24.0`,description:`2024-06-26`,id:`v2-24-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Both platforms`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`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.`}),`\n`,_jsxs(_components.li,{children:[`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 `,_jsx(_components.a,{href:`/sdk/react-native/v2.x.x/common-objects/PrimerError`,children:`Android`}),` and `,_jsx(_components.a,{href:`/sdk/ios/v2.x.x/common-objects/PrimerError`,children:`iOS`}),`.`]}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`iOS`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`We have fixed an issue where `,_jsx(_components.code,{children:`primerWillCreatePaymentWithData`}),` would be triggered twice when using the Klarna payment method.`]}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Android`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`We have resolved the issue with the 3DS service initialization that was incorrectly triggering errors during the initialization process.`}),`\n`,_jsxs(_components.li,{children:[`Please note, that with this update, compatibility requires the use of the `,_jsx(_components.code,{children:`1.4.3`}),` version of the 3DS SDK (`,_jsx(_components.code,{children:`io.primer:3ds-android:1.4.3`}),`).`]}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`iOS`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`We have improved validation of the custom URL scheme setting used for payment methods with native UI.`}),`\n`,_jsx(_components.li,{children:`Fixed a bug in the Klarna Headless implementation where the correct events were not fired during a manual payment flow.`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.23.1`,description:`2024-05-29`,id:`v2-23-1`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`We’ve added support for theming Drop-in Checkout - read more about configuring a theme in `,_jsx(_components.a,{href:`/checkout/drop-in/customization#theme`,children:`our documentation`})]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.23.0`,description:`2024-05-28`,id:`v2-23-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`iOS:`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Klarna Cocoapods dependency build issue is now fixed. If `,_jsx(_components.code,{children:`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.`]}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Both platforms:`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`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 (`,_jsx(_components.a,{href:`/sdk/android/v2.x.x/common-objects/PrimerPaymentMethodTokenData#properties.paymentInstrumentData-properties.externalPayerInfo`,children:`Android`}),`, `,_jsx(_components.a,{href:`/sdk/ios/v2.x.x/common-objects/PrimerPaymentMethodTokenData#parameters.paymentMethodTokenData-parameters.paymentInstrumentData-parameters.externalPayerInfo`,children:`iOS`}),`).`]}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`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.`}),`\n`]}),_jsx(_components.p,{children:`NOTE: This does not require any change on the merchant side.`})]}),`\n`,_jsxs(Update,{label:`v2.22.0`,description:`2024-04-30`,id:`v2-22-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:_jsx(_components.strong,{children:`💳 APMs support`})})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:_jsx(_components.strong,{children:`iDEAL via Adyen`})})}),_jsxs(_components.p,{children:[`Adds the `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`ComponentWithRedirectManager`})}),` that provides access to `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`BanksComponent`})}),`. Using the `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`BanksComponent`})}),` you can easily:`]}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`load list of all supported banks`}),`\n`,_jsx(_components.li,{children:`submit user’s selection`}),`\n`]}),_jsxs(_components.p,{children:[`For more information, see our `,_jsx(_components.a,{href:`/connections/payment-methods/ideal/adyen-headless`,children:`payment method guide`}),` for iDEAL via Adyen, and `,_jsx(_components.a,{href:`/sdk/react-native/v2.x.x/primer-headless-checkout/component-with-redirect-manager/constructor`,children:`sdk reference`}),` docs for ComponentWithRedirectManager.`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:_jsx(_components.strong,{children:`Klarna is now available on HeadlessUniversalCheckout`})})}),_jsx(_components.p,{children:`We have extended our support for Klarna to React Native HeadlessUniversalCheckout.`}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Klarna payment categories have been expanded to allow support for all the available categories, including:`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Pay now`}),`\n`,_jsx(_components.li,{children:`Pay later: Pay in 30 days`}),`\n`,_jsx(_components.li,{children:`Pay over time: Pay in 3-4 instalments. First payment right away, then the rest in instalments (no interest)`}),`\n`,_jsx(_components.li,{children:`Fair financing: Instalment plans of 6, 12, 24, and 36 months with flexible payments (with interest)`}),`\n`]}),_jsxs(_components.p,{children:[`For more information, see our `,_jsx(_components.a,{href:`/connections/payment-methods/klarna/headless`,children:`payment method guide`}),` for Klarna headless, and `,_jsx(_components.a,{href:`/sdk/react-native/v2.x.x/primer-headless-checkout/klarna-headless-manager/constructor`,children:`sdk reference`}),` docs for KlarnaHeadlessManager.`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🚀 New Feature`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Support for Klarna EMD`})}),_jsx(_components.p,{children:`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.`}),_jsxs(_components.p,{children:[`You can now dynamically pass any relevant `,_jsx(_components.a,{href:`https://docs.klarna.com/klarna-payments/in-depth-knowledge/extra-merchant-data/#how-to-send-emd`,children:`EMD package`}),` via the Client Session as described `,_jsx(_components.a,{href:`/connections/payment-methods/klarna/direct-integration/`,children:`here`}),`. Available schemas are documented `,_jsx(_components.a,{href:`https://docs.klarna.com/api-reference/attachment-schema/`,children:`here`}),`.`]})]}),`\n`,_jsxs(Update,{label:`v2.21.1`,description:`2024-04-19`,id:`v2-21-1`,children:[_jsx(_components.p,{children:`** 🔧 Fixes**`}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`iOS:`})}),_jsxs(_components.p,{children:[`Previously on iOS, the SDK was sending an unexpected type for the `,_jsx(_components.code,{children:`paymentMethodType`}),` in the `,_jsx(_components.code,{children:`IPrimerCheckoutPaymentMethodData`}),` interface. To rectify this, we have added a new `,_jsx(_components.code,{children:`paymentMethod`}),` field of type `,_jsx(_components.code,{children:`String`}),` which should be used going forward. The `,_jsx(_components.code,{children:`paymentMethodType`}),` field has been deprecated.`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Android:`})}),_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`paymentMethodType`}),` field of the `,_jsx(_components.code,{children:`IPrimerCheckoutPaymentMethodData`}),` interface has been deprecated in favour of `,_jsx(_components.code,{children:`paymentMethod`}),`.`]})]}),`\n`,_jsxs(Update,{label:`v2.21.0`,description:`2024-04-12`,id:`v2-21-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🚀 New Features`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`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.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`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 `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`existingPaymentMethodRequired`})}),` to `,_jsx(_components.strong,{children:`true`}),`. Check our `,_jsx(_components.a,{href:`/sdk/react-native/v2.x.x/common-objects/PrimerPaymentMethodTokenData#required-existing-payment-method`,children:`guide`}),` on how to enable this feature.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Android - PayPal`}),`: We have improved the PayPal `,_jsx(_components.a,{href:`/sdk/android/v2.x.x/common-objects/PrimerPaymentMethodTokenData#properties.paymentInstrumentData-properties.externalPayerInfo`,children:`payment method token`}),` by providing additional data, including the payer’s first name, last name, and external payer ID.`]}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Checkout Experience Enhancements`}),`:`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Enhanced immediacy of the loading spinner in the drop-in checkout process for a smoother user experience.`}),`\n`,_jsx(_components.li,{children:`Local card network identification has been made faster and more efficient.`}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Client Session API`}),`: The `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`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.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`iOS - 3DS SDK Upgrade`}),`: Compatibility has been extended to version 2.3.0 or higher of the Primer 3DS SDK.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`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.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`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.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`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.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Android -`}),` Please note, that with this update, compatibility requires the use of the `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`1.4.2`})}),` version of the 3DS SDK (`,_jsx(_components.strong,{children:_jsx(_components.code,{children:`io.primer:3ds-android:1.4.2`})}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Currency Handling`}),`: A new JSON data format for currencies has been introduced, centralizing currency information on our server to improve accuracy and efficiency.`]}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`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.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`UI Corrections`}),`: In the drop-in checkout, the card icon now accurately updates in response to changes in the entered card number.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`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 `,_jsx(_components.strong,{children:`consumer-rules.pro`}),` files. You `,_jsx(_components.strong,{children:`should not manually`}),` include any Proguard rules, as `,_jsx(_components.strong,{children:`consumer-rules.pro`}),` are seamlessly integrated with your existing Proguard rules.`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.20.0`,description:`2024-02-08`,id:`v2-20-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`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 (`,_jsx(_components.code,{children:`io.primer:3ds-android:1.4.0`}),`) and `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`pod 'Primer3DS', '2.2.0'`})}),` for iOS. We recommend upgrading to this version as it brings new LOA Reference Number for all protocol versions.`]}),`\n`,_jsx(_components.li,{children:`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.`}),`\n`]}),_jsx(_components.p,{children:`** 🔧 Fixes**`}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Android`}),`:`]}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`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.`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.19.2`,description:`2024-02-01`,id:`v2-19-2`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsx(_components.p,{children:`Android`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Fixed bug where `,_jsx(_components.a,{href:`https://apiref.primer.io/reference/create_client_side_token_client_session_post#request.body.order.fees`,children:`order.fees.type`}),` was not being correctly deserialized by the SDK.`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.19.1`,description:`2024-01-25`,id:`v2-19-1`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`iOS`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Fixed an issue where typescript definitions weren’t being included in the release.`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.19.0`,description:`2024-01-05`,id:`v2-19-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.p,{children:[`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 `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`io.primer:3ds-android:1.3.0`})}),` for Android and `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`pod 'Primer3DS', '2.1.0'`})}),` for iOS.`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Features`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Headless Vault Manager`})}),_jsxs(_components.p,{children:[`In this release, we have added `,_jsx(_components.code,{children:`VaultManager.configure()`}),` which configures an instance of `,_jsx(_components.code,{children:`VaultManager`}),`, which can then be used to:`]}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Fetch a list of vaulted payment methods`}),`\n`,_jsx(_components.li,{children:`Delete a vaulted payment method`}),`\n`,_jsx(_components.li,{children:`Perform a payment using a vaulted payment method and additional data (e.g. CVV)`}),`\n`]}),_jsxs(_components.p,{children:[`Explore our `,_jsx(_components.a,{href:`/sdk/react-native/v2.x.x/primer/methods/configure`,children:`documentation`}),` for detailed information.`]})]}),`\n`,_jsxs(Update,{label:`v2.18.0`,description:`2023-11-06`,id:`v2-18-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`iOS`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Fix the ApplePay bug where the flow was not shown if there were no cards added in the Wallet app.`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Added 2 flags:`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`showApplePayForUnsupportedDevice`}),`: Bool\nIf in some cases you don’t want to present the ApplePay option if the device is not supporting it set this to `,_jsx(_components.code,{children:`false`}),`. The default value is `,_jsx(_components.code,{children:`true`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`checkProvidedNetworks`}),`: Bool\nFlag 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 to `,_jsx(_components.code,{children:`false`}),` This flag is set to `,_jsx(_components.code,{children:`true`}),` by default due to enable backward compatibility with older versions.`]}),`\n`]}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`🍎 Upgraded Primer iOS SDK to 2.18.0 (`,_jsx(_components.a,{href:`https://github.com/primer-io/primer-sdk-ios/releases/tag/2.18.0`,children:`Git`}),` | `,_jsx(_components.a,{href:`https://www.notion.so/5a86e1d933fc4fae83b1497f80c7310a?pvs=21`,children:`Changelog`}),`)`]}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Android`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`🤖 Upgraded Primer Android SDK to 2.18.0 (`,_jsx(_components.a,{href:`https://github.com/primer-io/primer-sdk-android/releases/tag/2.18.0`,children:`Git`}),` | `,_jsx(_components.a,{href:`https://www.notion.so/8b4bd28444eb4af283678c9f2b5f46fe?pvs=21`,children:`Changelog`}),`)`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.17.3`,description:`2023-09-26`,id:`v2-17-3`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`RN`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`⚛ Upgraded react native to 0.72.6 (`,_jsx(_components.a,{href:`https://github.com/facebook/react-native/releases/tag/v0.72.0`,children:`Changelog`}),`)`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Still compatible with 0.70.x`}),`\n`]}),`\n`]}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Android`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`🤖 Upgraded Primer Android SDK to 2.17.3 (`,_jsx(_components.a,{href:`https://github.com/facebook/react-native/releases/tag/v0.72.0`,children:`Git`}),` | `,_jsx(_components.a,{href:`https://www.notion.so/8b4bd28444eb4af283678c9f2b5f46fe?pvs=21`,children:`Changelog`}),`)`]}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`iOS`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`🍎 Upgraded Primer iOS SDK to 2.17.4 (`,_jsx(_components.a,{href:`https://github.com/primer-io/primer-sdk-ios/releases/tag/2.17.4`,children:`Git`}),` | `,_jsx(_components.a,{href:`https://www.notion.so/5a86e1d933fc4fae83b1497f80c7310a?pvs=21`,children:`Changelog`}),`)`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.17.2`,description:`2023-08-17`,id:`v2-17-2`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsx(_components.p,{children:`Android:`}),_jsxs(_components.p,{children:[`In this version of the SDK we have introduced a new version of 3DS library. Primer SDK will depend on `,_jsx(_components.code,{children:`io.primer:3ds-android:1.2.0`}),` from now on.`]}),_jsx(Warning,{children:_jsxs(_components.p,{children:[`⚠️ `,_jsx(_components.strong,{children:`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.`})]})})]}),`\n`,_jsxs(Update,{label:`v2.17.1`,description:`2023-08-09`,id:`v2-17-1`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`iOS`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Fix Apple Pay crash`}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Android`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Removed requirements for `,_jsx(_components.code,{children:`amount`}),` in client session when vaulting PayPal`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.17.0`,description:`2023-07-28`,id:`v2-17-0`,children:[_jsx(Warning,{children:_jsx(_components.p,{children:`⚠️ This version introduces breaking changes for Headless Checkout`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsx(_components.p,{children:`It’s been more than 6 months that Headless Checkout has been released in Beta!`}),_jsx(_components.p,{children:`We gathered insightful feedback that pushed us to work on critical improvements to the developer experience of Headless Checkout.`}),_jsx(_components.p,{children:`This release candidate introduces a more robust, scalable, and stable flow for integrating Headless Checkout to implement a fully custom interface for your checkout.`}),_jsxs(_components.p,{children:[`Our `,_jsx(_components.a,{href:`/checkout/headless#react-native`,children:`documentation`}),` has been updated to reflect these changes. You can also find a `,_jsx(_components.a,{href:`/changelogs/migration-guides/`,children:`Migration Guide`}),` detailing the changes.`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`3DS Service`})}),_jsxs(_components.p,{children:[`Our 3DS service has been completely revamped. Primer SDK now supports 3DS protocol version `,_jsx(_components.code,{children:`2.2.0`})]}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Support 3DS weak validation`}),`\n`,_jsx(_components.li,{children:`Support 3DS OOB flow`}),`\n`,_jsx(_components.li,{children:`Improve 3DS reporting`}),`\n`]}),_jsxs(_components.p,{children:[`Check out our detailed documentation `,_jsx(_components.a,{href:`/checkout/headless#android`,children:`here`})]}),_jsx(Note,{children:_jsxs(_components.p,{children:[`ℹ️ iOS: If you are using `,_jsx(_components.code,{children:`Primer3DS`}),` in your integration, make sure to bump it to v.1.2.0`]})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`iOS`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Fix vaulted payment method on Drop In not getting tapped`}),`\n`,_jsx(_components.li,{children:`Enhance 3DS auth rates`}),`\n`,_jsx(_components.li,{children:`Fix checkout not rendering when there are vaulted payment methods`}),`\n`,_jsx(_components.li,{children:`Make performance improvements on raw data manager validation delegate`}),`\n`,_jsx(_components.li,{children:`Fix the scenario where the payment method’s image file is missing`}),`\n`,_jsxs(_components.li,{children:[`Print console warning when a `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`decisionHandler`})}),` is not implemented`]}),`\n`,_jsx(_components.li,{children:`Observability improvements`}),`\n`,_jsx(_components.li,{children:`Improves cancellation happening from 3rd party payment apps through deep links`}),`\n`,_jsx(_components.li,{children:`Fix Atome cancellation from within the web view`}),`\n`,_jsx(_components.li,{children:`Fix UI unresponsiveness happening on iOS 16.0.x in certain cases`}),`\n`]}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Android`}),`:`]}),_jsx(_components.p,{children:`✨ Improvements:`}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Improvements to deeplink handling for PayPal and Redirect based payment methods`}),`\n`,_jsx(_components.li,{children:`Reintroduce showing a payment method directly with the Drop In UI integration`}),`\n`,_jsxs(_components.li,{children:[`Koin dependency has been bumped to version `,_jsx(_components.code,{children:`3.3.3`})]}),`\n`,_jsxs(_components.li,{children:[`Better interoperability with `,_jsx(_components.code,{children:`Java`}),` when using Primer SDK`]}),`\n`,_jsx(_components.li,{children:`Internal SDK improvements`}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`PrimerPaymentMethodAsset`}),` now exposes the payment method’s friendly name`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.17.0-rc.13`,description:`2023-07-17`,id:`v2-17-0-rc-13`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements since 2.17.0-rc.12`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Android`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Improvements to deeplink handling for PayPal and Redirect based payment methods`}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`iOS`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Fix vaulted payment method on Drop In not getting tapped`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.17.0-rc.12`,description:`2023-07-12`,id:`v2-17-0-rc-12`,children:[_jsx(Warning,{children:_jsxs(_components.p,{children:[`⚠️ If you are using `,_jsx(_components.code,{children:`Primer3DS`}),` in your integration, make sure to bump it to v.1.2.0`]})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements since 2.17.0-rc.11`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Enhance 3DS auth rates`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.17.0-rc.11`,description:`2023-07-11`,id:`v2-17-0-rc-11`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements since 2.17.0-rc.10`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`iOS`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Fix issue with Vipps getting presented`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.17.0-rc.10`,description:`2023-06-09`,id:`v2-17-0-rc-10`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Reintroduce showing a payment method directly with the Drop In UI integration`}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements since 2.17.0-rc.9`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`iOS`})}),_jsx(Warning,{children:_jsxs(_components.p,{children:[`⚠️ If you are also integrating `,_jsx(_components.code,{children:`Primer3DS`}),`, make sure to install v.1.1.2 to avoid archiving issues with Xcode 14.3.1`]})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Fix checkout not rendering when there are vaulted payment methods`}),`\n`,_jsx(_components.li,{children:`Make performance improvements on raw data manager validation delegate`}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Android`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Apply fix on PayPal vaulting`}),`\n`,_jsx(_components.li,{children:`Resolved bug where Drop In UI could be launched multiple times at same time`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.17.0-rc.9`,description:`2023-05-31`,id:`v2-17-0-rc-9`,children:[_jsx(Note,{children:_jsx(_components.p,{children:`⚠️ 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`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements since 2.17.0-rc.8`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`iOS`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Apply fix on PayPal vaulting`}),`\n`,_jsx(_components.li,{children:`Fix Klarna archiving issue`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.17.0-rc.8`,description:`2023-05-30`,id:`v2-17-0-rc-8`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsx(Note,{children:_jsxs(_components.p,{children:[`⚠️ This version introduces breaking changes for Headless Checkout. You also have to update the iOS pod `,_jsx(_components.code,{children:`Primer3DS`}),` to version 1.1.1.`]})}),_jsx(Note,{children:_jsx(_components.p,{children:`⚠️ 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`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Our 3DS service has been completely revamped. Primer SDK now supports 3DS protocol version `,_jsx(_components.code,{children:`2.2.0`})]}),`\n`,_jsx(_components.li,{children:`Support 3DS weak validation`}),`\n`,_jsx(_components.li,{children:`Support 3DS OOB flow`}),`\n`,_jsx(_components.li,{children:`Improve 3DS reporting`}),`\n`,_jsxs(_components.li,{children:[`Add 3DS sanity check in `,_jsx(_components.code,{children:`PrimerSettings`})]}),`\n`]}),_jsxs(_components.p,{children:[`Check out our detailed documentation `,_jsx(_components.a,{href:`/checkout/headless#react-native`,children:`here`})]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements since 2.17.0-rc.11`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Minor fixes`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.16.7`,description:`2023-05-10`,id:`v2-16-7`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`iOS:`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Take into account tax and discount on Apple Pay items`}),`\n`,_jsx(_components.li,{children:`Prioritize merchant amount over total amount`}),`\n`,_jsx(_components.li,{children:`Only take into account surcharge when merchant amount is not set`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.16.6`,description:`2023-05-08`,id:`v2-16-6`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`iOS:`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Expose payment instrument data on tokenization callback`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.17.0-rc.6`,description:`2023-05-08`,id:`v2-17-0-rc-6`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`iOS:`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Expose payment instrument data on tokenization callback`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.17.0-rc.4`,description:`2023-04-04`,id:`v2-17-0-rc-4`,children:[_jsx(Note,{children:_jsx(_components.p,{children:`⚠️ This version introduces breaking changes for Headless Checkout`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`Asset`}),` now exposes the payment method’s friendly name as `,_jsx(_components.code,{children:`paymentMethodName`})]}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`iOS`}),`:`]}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Improved analytics`}),`\n`,_jsx(_components.li,{children:`Fix scenario where payment method’s image file is missing`}),`\n`,_jsxs(_components.li,{children:[`Print console warning when a `,_jsx(_components.code,{children:`decisionHandler`}),` is not implemented`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.17.0-rc.3`,description:`2023-03-21`,id:`v2-17-0-rc-3`,children:[_jsx(Note,{children:_jsx(_components.p,{children:`⚠️ This version introduces breaking changes for Headless Checkout`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`💳 APMs support`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Cards via iPay88`})}),_jsx(_components.p,{children:`In this version of the SDK we added the support for Cards via iPay88.`}),_jsx(_components.p,{children:`Cards via iPay88 Payment Method now is fully supported via Headless Universal Checkout and Drop-In.`}),_jsx(_components.p,{children:`You can now make one-off payments or vault a card with iPay88 in order to make recurring payments.`}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Android`}),`:`]}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`It is now possible to capture billing address using Google Pay by specifying `,_jsx(_components.code,{children:`googlePayOptions.isBillingAddressCaptureEnabled = true.`}),`\nPlease check official `,_jsx(_components.a,{href:`/connections/payment-methods/google-pay/drop-in#capture-billing-address`,children:`docs`}),` for more details.`]}),`\n`,_jsx(_components.li,{children:`Contains the features and improvements of 2.16.5`}),`\n`]}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`iOS`}),`:`]}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Contains the features and improvements of 2.16.5`}),`\n`,_jsx(_components.li,{children:`Observability improvements`}),`\n`,_jsx(_components.li,{children:`Improves cancellation happening from 3rd party payment apps through deep links`}),`\n`,_jsx(_components.li,{children:`Fix Atome cancellation from within the webview`}),`\n`,_jsx(_components.li,{children:`Fix UI unresponsiveness happening on iOS 16.0.x on certain cases`}),`\n`,_jsx(_components.li,{children:`Fix iOS console warnings`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.16.5`,description:`2023-03-14`,id:`v2-16-5`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🚀 Improvements`})}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Android`}),`:`]}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Improved handling of payment cancellations for `,_jsx(_components.code,{children:`Atome`})]}),`\n`,_jsx(_components.li,{children:`Improved internal analytics for 3DS events`}),`\n`,_jsx(_components.li,{children:`Improved internal analytics for headless integration`}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`iOS:`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Fix an issue that prevented 3DS from working with some card networks (AMEX, Maestro, Discover, and JCB)`}),`\n`,_jsx(_components.li,{children:`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`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.17.0-rc.2`,description:`2023-01-23`,id:`v2-17-0-rc-2`,children:[_jsx(Note,{children:_jsx(_components.p,{children:`⚠️ This version introduces breaking changes for Headless Checkout`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsx(_components.p,{children:`It’s been more than 6 months that Headless Checkout has been released in Beta!`}),_jsx(_components.p,{children:`We gathered insightful feedback that pushed us to work on critical improvements to the developer experience of Headless Checkout.`}),_jsx(_components.p,{children:`This release candidate introduces a more robust, scalable, and stable flow for integrating Headless Checkout to implement a fully custom interface for your checkout.`}),_jsxs(_components.p,{children:[`Our `,_jsx(_components.a,{href:`/checkout/headless#react-native`,children:`documentation`}),` has been updated to reflect these changes. You can also find a `,_jsx(_components.a,{href:`/changelogs/migration-guides/`,children:`Migration Guide`}),` detailing the changes.`]}),_jsx(_components.p,{children:`This release candidate will soon be merged into the main releases.`}),_jsx(_components.p,{children:_jsxs(_components.strong,{children:[`In addition to `,_jsx(_components.code,{children:`RC1`}),` release, we have improved couple of things based on your feedback:`]})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Fixed issue when calling `,_jsx(_components.code,{children:`AssetsManager`}),`’s `,_jsx(_components.code,{children:`getPaymentMethodAsset`}),` on Android that caused the result to be a string instead of an object`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Fixed an issue causing `,_jsx(_components.code,{children:`applePay.isBillingAddressCaptureEnabled`}),` to be ignored`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Reverted back old way of setting Drop-In callbacks: 2.17.0 does not introduce any breaking change for the drop-in checkout`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Fixed an issue that caused Google Pay to be proposed on iOS`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`We’ve also added the changes to 2.16.4`}),`\n`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.16.4`,description:`2023-02-09`,id:`v2-16-4`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`New languages`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Malay`}),`\n`,_jsx(_components.li,{children:`Thai`}),`\n`,_jsx(_components.li,{children:`Mandarin Chinese`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.17.0-rc.1`,description:`2023-01-23`,id:`v2-17-0-rc-1`,children:[_jsx(Note,{children:_jsx(_components.p,{children:`⚠️ This version introduces breaking changes for Headless Checkout`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsx(_components.p,{children:`It’s been more than 6 months that Headless Checkout has been released in Beta!`}),_jsx(_components.p,{children:`We gathered insightful feedback that pushed us to work on critical improvements to the developer experience of Headless Checkout.`}),_jsx(_components.p,{children:`This release candidate introduces a more robust, scalable, and stable flow for integrating Headless Checkout to implement a fully custom interface for your checkout.`}),_jsxs(_components.p,{children:[`Our `,_jsx(_components.a,{href:`/checkout/headless#react-native`,children:`documentation`}),` has been updated to reflect these changes. You can also find a `,_jsx(_components.a,{href:`/changelogs/migration-guides/`,children:`Migration Guide`}),` detailing the changes.`]}),_jsx(_components.p,{children:`This release candidate will soon be merged into the main releases.`})]}),`\n`,_jsxs(Update,{label:`v2.16.2`,description:`2022-01-23`,id:`v2-16-2`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Google Pay payments now support native 3DS`}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`[Android] Drop-In can now be initialized with a `,_jsx(_components.code,{children:`0`}),` amount in the client session`]}),`\n`,_jsxs(_components.li,{children:[`[Android] Card flows that use `,_jsx(_components.code,{children:`showPaymentMethod`}),` have been improvemend`]}),`\n`,_jsx(_components.li,{children:`[iOS] Fix an issue with OVO via Xendit redirect`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.16.0`,description:`2022-12-21`,id:`v2-16-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsx(_components.p,{children:`In this version we are adding support for iPay88 card payments.`}),_jsx(_components.p,{children:`We have also added events to monitor the Headless flow.`}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Android`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`In this version of the SDK we have introduced a new version of 3DS library. Primer SDK will depend on `,_jsx(_components.code,{children:`io.primer:3ds-android:1.1.2`}),` from now on.`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`⚠️ `,_jsx(_components.strong,{children:`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.`})]})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`We have added a way to capture billing address using Google Pay. You will need to pass `,_jsx(_components.code,{children:`captureBillingAddress = true`}),` to `,_jsx(_components.code,{children:`PrimerGooglePayOptions`})]}),`\n`]}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`[iOS] Remove Xcode configuration flags from podspec.`}),`\n`,_jsx(_components.li,{children:`[iOS] Apple Pay will return an error on simulator.`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.15.1`,description:`2022-11-29`,id:`v2-15-1`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Fixing the MBWay local asset loading on iOS`}),`\n`,_jsxs(_components.li,{children:[`Removed the `,_jsx(_components.code,{children:`GENERATE_INFOPLIST_FILE`}),` as part of the `,_jsx(_components.code,{children:`xcconfig`}),` of the `,_jsx(_components.code,{children:`PrimerSDK`}),` podspec dependency, as it was causing an issue upon archiving the hosting apps.`]}),`\n`,_jsxs(_components.li,{children:[`Added `,_jsx(_components.code,{children:`CODE_SIGNING_ALLOWED => NO`}),` to `,_jsx(_components.code,{children:`xcconfig`}),` in `,_jsx(_components.code,{children:`PrimerSDK`}),` `,_jsx(_components.code,{children:`podspec`}),` dependency to remove the Signing requirement introduced in Xcode 14+`]}),`\n`,_jsx(_components.li,{children:`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.`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.15.0`,description:`2022-11-18`,id:`v2-15-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsx(Note,{children:_jsx(_components.p,{children:`👌 Alongside the listed features below, we have performed improvements to our codebase.`})}),_jsxs(_components.p,{children:[`In this version of the SDK we have introduced a new version of 3DS library for Android. Primer Android SDK will depend on `,_jsx(_components.code,{children:`io.primer:3ds-android:1.1.1`}),` from now on.`]}),_jsx(Warning,{children:_jsxs(_components.p,{children:[`⚠️ `,_jsx(_components.strong,{children:`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.`})]})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`We have fixed certain redirection issues for payment methods using Buckaroo as PSP on Android`}),`\n`,_jsx(_components.li,{children:`We have improved the Cardholder name check on iOS`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.14.4`,description:`2022-11-14`,id:`v2-14-4`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Aligned the `,_jsx(_components.code,{children:`RN_ANDROID`}),` on Analytics `,_jsx(_components.code,{children:`sdkType`})]}),`\n`,_jsx(_components.li,{children:`Fixed an issue on iOS in regards to the availability of retrieving some assets`}),`\n`,_jsx(_components.li,{children:`Small improvements on iOS in the way the Country selector in billing address gets loaded`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.14.3`,description:`2022-11-08`,id:`v2-14-3`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Fixed version reference of the PrimerSDK for iOS`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.14.2`,description:`2022-11-08`,id:`v2-14-2`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Fixed 3DS on frictionless flows`}),`\n`,_jsxs(_components.li,{children:[`Sending analytics events with correct `,_jsx(_components.code,{children:`sdkVersion`}),` and `,_jsx(_components.code,{children:`sdkType`})]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.14.1`,description:`2022-11-04`,id:`v2-14-1`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Fixed the PayPal vaulting service`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.14.0`,description:`2022-10-28`,id:`v2-14-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsx(Note,{children:_jsx(_components.p,{children:`👌 Alongside the listed features below, we have performed improvements to our codebase.`})}),_jsxs(_components.p,{children:[`In this version of the SDK we have removed options to pass 3DS vaulting flag `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`is3DSOnVaultingEnabled`})})]}),_jsx(_components.p,{children:`Above flow is now obsoleted and 3DS will always follow workflows.`}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`We have fixed wrong cardholder name checkout modules evaluations which resulted in not requesting cardholder name on headless`}),`\n`,_jsx(_components.li,{children:`We have fixed raw data validation callbacks not being fired on headless`}),`\n`,_jsx(_components.li,{children:`We have also fixed retrieval of card network assets`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.13.2`,description:`2022-10-26`,id:`v2-13-2`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Fix initialization for Universal Checkout on Android.`}),`\n`]}),_jsx(Note,{children:_jsxs(_components.p,{children:[`ℹ️ This fix solves the issue affecting versions from `,_jsx(_components.code,{children:`2.13.0`}),` to `,_jsx(_components.code,{children:`2.13.1`}),`. We recommend updating to this `,_jsx(_components.code,{children:`2.13.2`}),` version.`]})})]}),`\n`,_jsxs(Update,{label:`v2.13.1`,description:`2022-10-24`,id:`v2-13-1`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsx(_components.p,{children:`Fixing the Blik flow on iOS.`}),_jsx(Note,{children:_jsxs(_components.p,{children:[`ℹ️ This fix solves the issue affecting versions from `,_jsx(_components.code,{children:`2.7.0`}),` to `,_jsx(_components.code,{children:`2.13.0`}),`. We recommend updating to this `,_jsx(_components.code,{children:`2.13.1`}),` version.`]})})]}),`\n`,_jsxs(Update,{label:`v2.13.0`,description:`2022-10-21`,id:`v2-13-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsx(Note,{children:_jsx(_components.p,{children:`👌 Alongside the listed features below, we have performed improvements to our codebase.`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`💳 APMs support`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Retail Outlets via Xendit`})}),_jsx(_components.p,{children:`In this version of the SDK we added the support for Retail Outlets via Xendit.`}),_jsx(_components.p,{children:`Retail Outlets via Xendit Payment Method now is fully supported via Headless Universal Checkout (Beta) via the Raw Data Manager.`}),_jsxs(_components.p,{children:[`Check this out in `,_jsx(_components.a,{href:`https://www.notion.so/52426f47b9b04f808a6b88ee51301196?pvs=21`,children:`our documentation`}),` 🙌`]})]}),`\n`,_jsxs(Update,{label:`v2.12.2`,description:`2022-10-19`,id:`v2-12-2`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`iOS`})}),_jsxs(_components.p,{children:[`Fixed on Headless Universal Checkout with `,_jsx(_components.code,{children:`ADYEN_BANCONTACT_CARD`}),` flow failing on some scenarios.`]})]}),`\n`,_jsxs(Update,{label:`v2.12.1`,description:`2022-10-11`,id:`v2-12-1`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🪲 Hotfix`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`iOS`})}),_jsx(_components.p,{children:`Fixes a bug in the Klarna vault flow.`}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Android`})}),_jsx(_components.p,{children:`Fixed raw card data formatting and mapping in some scenarios.`})]}),`\n`,_jsxs(Update,{label:`v2.12.0`,description:`2022-10-07`,id:`v2-12-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsx(Note,{children:_jsx(_components.p,{children:`👌 Alongside the listed features below, we have performed improvements to our codebase.`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`💳 APMs support`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Bancontact via Adyen`})}),_jsx(_components.p,{children:`In this version of the SDK we added the support for Bancontact Debit via Adyen for.`}),_jsx(_components.p,{children:`Bancontact Debit via Adyen Payment Method now is fully supported via Headless Universal Checkout (Beta) and the standard SDK implementation.`}),_jsx(_components.p,{children:`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.`}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Apple Pay billing address on iOS`})}),_jsx(_components.p,{children:`Last but not least, we are now capturing the billing address out of an Apple Pay payment.`}),_jsxs(_components.p,{children:[`To enable this feature, when configuring the Checkout with the `,_jsx(_components.code,{children:`PrimerSettings`}),` , developers can setup `,_jsx(_components.code,{children:`PrimerApplePayOptions`}),` with another parameter: `,_jsx(_components.code,{children:`isCaptureBillingAddressEnabled`}),` . The SDK will take care of showing the option of adding the billing address and capture it.`]})]}),`\n`,_jsxs(Update,{label:`v2.11.0`,description:`2022-10-03`,id:`v2-11-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsx(Note,{children:_jsx(_components.p,{children:`👌 Alongside the listed features below, we have performed improvements to our codebase.`})}),_jsx(_components.p,{children:`In this version of the SDK we improved the raw data validation in the Headless Universal Checkout flow.`})]}),`\n`,_jsxs(Update,{label:`v2.9.0`,description:`2022-09-19`,id:`v2-9-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsx(Note,{children:_jsx(_components.p,{children:`👌 Alongside the listed features below, we have performed improvements to our codebase.`})}),_jsx(_components.p,{children:`In this version of the SDK we added the support for Multibanco via Universal Checkout for iOS too 🙌.`}),_jsx(_components.p,{children:`Multibanco Payment Method now is fully supported on both platforms via Headless Universal Checkout (Beta) and the standard SDK implementation.`}),_jsx(_components.p,{children:`PromptPay is also now supported via Omise too 🙌.`}),_jsxs(_components.p,{children:[`In Headless Universal Checkout (Beta), developers will have access to a new event which will provide an object `,_jsx(_components.code,{children:`PrimerCheckoutQRCodeInfo`}),` containing the data needed to build their awesome UI / UX.`]}),_jsxs(_components.p,{children:[`For PromptPay specifically, the object will be `,_jsx(_components.code,{children:`PromptPayCheckoutAdditionalInfo`})]}),_jsx(_components.p,{children:_jsx(_components.code,{children:`onCheckoutReceivedAdditionalInfo(additionalInfo: PrimerCheckoutAdditionalInfo?)`})})]}),`\n`,_jsxs(Update,{label:`v2.8.1`,description:`2022-09-14`,id:`v2-8-1`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🚀 Improvements`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Android`})}),_jsx(_components.p,{children:`We have fixed a bug where cardholder name field was loosing focus when billing address checkout module was enabled.`})]}),`\n`,_jsxs(Update,{label:`v2.8.0`,description:`2022-09-08`,id:`v2-8-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsx(Note,{children:_jsx(_components.p,{children:`👌 Alongside the listed features below, we have performed improvements to our codebase.`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`iOS`})}),_jsx(_components.p,{children:`Applied a fix on the infinite loading with Xendit payment methods.`}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Android`})}),_jsx(_components.p,{children:`Applied a fix on the infinite loading with Xendit payment methods.`}),_jsx(_components.p,{children:`We have removed some transitive dependencies from our code. This will result in smaller size of you application when Primer SDK is imported.`}),_jsx(_components.p,{children:`Try it out and let us know what do you think 🙌!`})]}),`\n`,_jsxs(Update,{label:`v2.6.1`,description:`2022-08-29`,id:`v2-6-1`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🪲 Hotfix`})}),_jsx(_components.p,{children:`This release fixes a build warning on the duplication of the React Native SDK’s bridging header on iOS.`})]}),`\n`,_jsxs(Update,{label:`v2.5.1`,description:`2022-08-29`,id:`v2-5-1`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🪲 Hotfix`})}),_jsx(_components.p,{children:`This release fixes a build warning on the duplication of the React Native SDK’s bridging header on iOS.`})]}),`\n`,_jsxs(Update,{label:`v2.6.0`,description:`2022-08-24`,id:`v2-6-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsx(Note,{children:_jsx(_components.p,{children:`👌 Alongside the listed features below, we have performed improvements to our codebase.`})}),_jsx(_components.p,{children:`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.`}),_jsx(_components.p,{children:`We kept expanding the Headless Checkout feature, now providing to our developers the raw phone number data they can utilize to create payments.`}),_jsxs(_components.p,{children:[`The payment method supporting that is only `,_jsx(_components.strong,{children:`OVO via Xendit`}),` for now.`]}),_jsx(_components.p,{children:`Try it out and let us know what do you think 🙌!`}),_jsx(_components.hr,{}),_jsx(_components.p,{children:`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.`}),_jsx(_components.p,{children:`Here is a preview for iOS and Android 👇`}),_jsx(Frame,{caption:`Simulator`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/Simulator.gif?s=c81407004d873c493c87e591430544db`,\"data-og-width\":`296`,width:`296`,\"data-og-height\":`640`,height:`640`,\"data-path\":`images/changelogs/react-native/Simulator.gif`,\"data-optimize\":`true`,\"data-opv\":`3`})}),_jsx(_components.p,{children:_jsx(_components.img,{src:`https://s3-us-west-2.amazonaws.com/secure.notion-static.com/a2778e2f-01b4-476f-9337-f39b2aa3afc1/Simulator_Screen_Recording_-_iPhone_11_-_2022-08-23_at_18.48.28.gif`,alt:`Simulator Screen Recording - iPhone 11 - 2022-08-23 at 18.48.28.gif`})}),_jsx(_components.p,{children:_jsx(_components.img,{src:`https://s3-us-west-2.amazonaws.com/secure.notion-static.com/2585af85-a020-4c2e-a729-baaeac384a59/Screen_Recording_2022-08-23_at_18.56.53.gif`,alt:`Screen Recording 2022-08-23 at 18.56.53.gif`})})]}),`\n`,_jsxs(Update,{label:`v2.5.0`,description:`2022-08-17`,id:`v2-5-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsx(Note,{children:_jsx(_components.p,{children:`👌 Alongside the listed features below, we have performed improvements to our codebase.`})}),_jsx(_components.p,{children:`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.`}),_jsx(_components.p,{children:`Try it out and let us know what do you think 🙌!`})]}),`\n`,_jsxs(Update,{label:`v2.4.0`,description:`2022-08-10`,id:`v2-4-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsx(Note,{children:_jsx(_components.p,{children:`👌 Alongside the listed features below, we have performed improvements to our codebase.`})}),_jsx(_components.p,{children:`This release brings a totally new way of retrieving the APMs.`}),_jsx(_components.p,{children:`We have now the possibility of providing some APMs without even push a new release 🙌.`}),_jsx(_components.p,{children:`That’s a huge milestone for us and the developments of our product.`})]}),`\n`,_jsxs(Update,{label:`v2.3.0`,description:`2022-07-29`,id:`v2-3-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsx(Note,{children:_jsx(_components.p,{children:`👌 Alongside the listed features below, we have performed improvements to our codebase.`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`💳 APMs support`})}),_jsx(_components.p,{children:`Fast and PromptPay via Rapyd`}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`iOS representation`})}),_jsxs(Frame,{caption:`Completing Payment`,children:[_jsx(OptimizedImage,{src:`https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/B101.webp?fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=eca3d667d55e62b047f0a33461a9f086`,\"data-og-width\":`902`,width:`902`,\"data-og-height\":`1152`,height:`1152`,\"data-path\":`images/changelogs/react-native/B101.webp`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/B101.webp?w=280\u0026fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=02e86292b822bcad5185a14d67c0e880 280w, https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/B101.webp?w=560\u0026fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=33071f90cffb2a6827e72cd16e676a77 560w, https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/B101.webp?w=840\u0026fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=2fc1be2df7e0dbd20ba9fc289a7698fa 840w, https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/B101.webp?w=1100\u0026fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=380fbd205c5c1031a299cbae09aa17a7 1100w, https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/B101.webp?w=1650\u0026fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=6baf4736da7abb57ec9470b0f7d63823 1650w, https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/B101.webp?w=2500\u0026fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=a31fc2f84d025ecd1545eae49db4675e 2500w`}),_jsx(OptimizedImage,{src:`https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/complete_payment.webp?fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=14560f808d7d2cc3f738ff1773b26803`,\"data-og-width\":`605`,width:`605`,\"data-og-height\":`553`,height:`553`,\"data-path\":`images/changelogs/react-native/complete_payment.webp`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/complete_payment.webp?w=280\u0026fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=4cb5e1b078cdb1ac48db6725f734ddc6 280w, https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/complete_payment.webp?w=560\u0026fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=e553f046fdb043eab48400544bbdae84 560w, https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/complete_payment.webp?w=840\u0026fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=1a3ce5bdeeb15ec6068c240c006df108 840w, https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/complete_payment.webp?w=1100\u0026fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=68915427d067b4b82f457cda6850055c 1100w, https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/complete_payment.webp?w=1650\u0026fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=305698d9e3b05ccd40eb742b0a3f8c0c 1650w, https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/complete_payment.webp?w=2500\u0026fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=aa99b8234ec315ad5ea3be1bf8597f40 2500w`})]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Android representation`})}),_jsxs(Frame,{caption:`Scan Code`,children:[_jsx(OptimizedImage,{src:`https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/react-native/scan_code.webp?fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=038383a3672affa23d94897d6fcf0417`,\"data-og-width\":`902`,width:`902`,\"data-og-height\":`1152`,height:`1152`,\"data-path\":`images/changelogs/react-native/scan_code.webp`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/react-native/scan_code.webp?w=280\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=91f09ec4ebfd9a4c6ed664ff5edb8781 280w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/react-native/scan_code.webp?w=560\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=eb8333797ab3f5c77865dcc232ceb45c 560w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/react-native/scan_code.webp?w=840\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=473cd14fb7b1202e7629b74b8b0c0281 840w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/react-native/scan_code.webp?w=1100\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=938e77723db28afc74e9e51282eed2b2 1100w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/react-native/scan_code.webp?w=1650\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=3b31e2150a21bfe678808a0c67065545 1650w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/react-native/scan_code.webp?w=2500\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=c75f3a4f28e6903560655f1e28963171 2500w`}),_jsx(OptimizedImage,{src:`https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/complete_your_payment.webp?fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=3f315e444b34b64fdaf3d9424b9744f2`,\"data-og-width\":`896`,width:`896`,\"data-og-height\":`1040`,height:`1040`,\"data-path\":`images/changelogs/react-native/complete_your_payment.webp`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/complete_your_payment.webp?w=280\u0026fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=dacb106be4fb3eee019c834ae67c66e3 280w, https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/complete_your_payment.webp?w=560\u0026fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=f75808c8763284328a404b5f53ea9a04 560w, https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/complete_your_payment.webp?w=840\u0026fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=aeee6d9a74597e5ff9b81f39e5077e8b 840w, https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/complete_your_payment.webp?w=1100\u0026fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=c07d90d61d883c729bda43b3aa89dc6d 1100w, https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/complete_your_payment.webp?w=1650\u0026fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=ec0ab3d6cbf36789ba2f85b33ed6f19c 1650w, https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/complete_your_payment.webp?w=2500\u0026fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=d6d91f01562f71e6b6bde8d00e08f37f 2500w`})]})]}),`\n`,_jsx(Update,{label:`v2.2.1`,description:`2022-07-18`,id:`v2-2-1`,children:_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Android`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Fix exposing views`}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`iOS`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Internal codebase refactor`}),`\n`]}),`\n`]}),`\n`]})}),`\n`,_jsxs(Update,{label:`v2.2.0`,description:`2022-07-13`,id:`v2-2-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsx(Note,{children:_jsx(_components.p,{children:`👌 Alongside the listed features below, we have performed improvements to our codebase.`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`💳 APMs support`})}),_jsx(_components.p,{children:`Grab Pay, Poli and GCash via Rapyd`}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`iOS and Android representation`})}),_jsxs(Frame,{caption:`Grabpay Gcash Simulator`,children:[_jsx(OptimizedImage,{src:`https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/grabpay-gcash-simulator.webp?fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=8a7c01a8f4dee735783d92d31f384abb`,\"data-og-width\":`512`,width:`512`,\"data-og-height\":`658`,height:`658`,\"data-path\":`images/changelogs/react-native/grabpay-gcash-simulator.webp`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/grabpay-gcash-simulator.webp?w=280\u0026fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=681c827717e3ff309d49eda54e754930 280w, https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/grabpay-gcash-simulator.webp?w=560\u0026fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=67420bbe5ac14dbfdb9d2af04ddccc63 560w, https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/grabpay-gcash-simulator.webp?w=840\u0026fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=a668e77ad53236933787879fdee9e62d 840w, https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/grabpay-gcash-simulator.webp?w=1100\u0026fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=d3445fd231653a6c85667b94da324585 1100w, https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/grabpay-gcash-simulator.webp?w=1650\u0026fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=ff2dc5be33dcb21ec165faf0da18e41e 1650w, https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/grabpay-gcash-simulator.webp?w=2500\u0026fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=0735d1a05d80f5a8b6f3ac62796aa892 2500w`}),_jsx(OptimizedImage,{src:`https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/poli-simulator.webp?fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=6a21916c22bc8d0128228c33a4268891`,\"data-og-width\":`826`,width:`826`,\"data-og-height\":`954`,height:`954`,\"data-path\":`images/changelogs/react-native/poli-simulator.webp`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/poli-simulator.webp?w=280\u0026fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=b832cc733b76566fbcaf21708429c1b2 280w, https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/poli-simulator.webp?w=560\u0026fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=e5f4889964e3713a5eb1424c87532419 560w, https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/poli-simulator.webp?w=840\u0026fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=650024432fb69d9a344215e5e0d37fb0 840w, https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/poli-simulator.webp?w=1100\u0026fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=632447acad90b492efc15404657d16d9 1100w, https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/poli-simulator.webp?w=1650\u0026fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=9e38c81c0b05677f996998ba60654a3e 1650w, https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/poli-simulator.webp?w=2500\u0026fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=0fb70cccee1885a01eb9ca2233431e6e 2500w`})]}),_jsxs(Frame,{children:[_jsx(OptimizedImage,{src:`https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/pay_with_card.webp?fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=a674ae99442702d2b5c9d8a665eaf07c`,\"data-og-width\":`351`,width:`351`,\"data-og-height\":`408`,height:`408`,\"data-path\":`images/changelogs/react-native/pay_with_card.webp`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/pay_with_card.webp?w=280\u0026fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=39ce124296ab2842255dd39e7d0e9592 280w, https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/pay_with_card.webp?w=560\u0026fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=8d93a3a04fe7488779b1880b557accdc 560w, https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/pay_with_card.webp?w=840\u0026fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=eb358bcca6d824a84f1b9ab4eb4ef1a4 840w, https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/pay_with_card.webp?w=1100\u0026fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=aa89d4151b6ffe4797bf95f3c56aaf36 1100w, https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/pay_with_card.webp?w=1650\u0026fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=375778402cbef1c20014ddd619f2d86c 1650w, https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/pay_with_card.webp?w=2500\u0026fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=d522cb24b6cd21a28e5674a7fa47c43b 2500w`}),_jsx(OptimizedImage,{src:`https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/pay_with_card_2.webp?fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=f3c169f4be377e4a8e1f9ef58aa11061`,\"data-og-width\":`356`,width:`356`,\"data-og-height\":`348`,height:`348`,\"data-path\":`images/changelogs/react-native/pay_with_card_2.webp`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/pay_with_card_2.webp?w=280\u0026fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=4a9c862f02c402f0aa105e8275fe12f0 280w, https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/pay_with_card_2.webp?w=560\u0026fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=4faace40cfe7cc12b09669fc23f5a783 560w, https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/pay_with_card_2.webp?w=840\u0026fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=04cafe3194654ed62befe0f66a1e3e78 840w, https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/pay_with_card_2.webp?w=1100\u0026fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=ef9030a336a9fddd946802a02c6fa962 1100w, https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/pay_with_card_2.webp?w=1650\u0026fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=c2bb1d005e1a43c5c750b0a83830e5af 1650w, https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/pay_with_card_2.webp?w=2500\u0026fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=8e8f08c9b5773b1bcc596a2e954818cd 2500w`})]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Billing address support 🧾`})}),_jsx(_components.p,{children:`We can now capture the billing address before performing a payment.`}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`iOS and Android representation`})}),_jsxs(Frame,{caption:`Primer \u0026 Billing`,children:[_jsx(OptimizedImage,{src:`https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/react-native/primer.webp?fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=2bd8bfda8ad963863ce05483dedce966`,\"data-og-width\":`828`,width:`828`,\"data-og-height\":`1792`,height:`1792`,\"data-path\":`images/changelogs/react-native/primer.webp`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/react-native/primer.webp?w=280\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=5f4a320b9eeb6b952e2e3122f8c0ce37 280w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/react-native/primer.webp?w=560\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=52c60c15873528c34cf5ded3d701bb22 560w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/react-native/primer.webp?w=840\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=1d3a65d107e99de3583b9ee71f410fed 840w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/react-native/primer.webp?w=1100\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=52e0111835afd80cd3c1c01a750a4fd6 1100w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/react-native/primer.webp?w=1650\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=62fa0b961f9b1f220b996fbebd6ffc59 1650w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/react-native/primer.webp?w=2500\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=afee8eacc878f32e61d2f222a1798e60 2500w`}),_jsx(OptimizedImage,{src:`https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/billing.webp?fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=cd51292c786a65d76b824894d43605d2`,\"data-og-width\":`1024`,width:`1024`,\"data-og-height\":`2162`,height:`2162`,\"data-path\":`images/changelogs/react-native/billing.webp`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/billing.webp?w=280\u0026fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=79addc64bbf0485d33ac056bf14ccc41 280w, https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/billing.webp?w=560\u0026fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=83d9512e29651af3257a212bde839970 560w, https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/billing.webp?w=840\u0026fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=bae2938d126baa65ce002339355ca6fa 840w, https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/billing.webp?w=1100\u0026fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=79109131eb8ff44b236544c7a49b9093 1100w, https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/billing.webp?w=1650\u0026fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=7900cf0b96b44c6722324d629dcfafcb 1650w, https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/billing.webp?w=2500\u0026fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=d81a69b706dd292056f0cdbb10510e92 2500w`})]})]}),`\n`,_jsxs(Update,{label:`v2.1.0`,description:`2022-07-08`,id:`v2-1-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsx(_components.p,{children:_jsx(_components.em,{children:`The version 2 of the Headless Universal Checkout is out!`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Payments created automatically`})}),_jsx(_components.p,{children:`Primer Headless Universal Checkout | SDK`}),_jsxs(_components.p,{children:[`Starting from this version, automatic payment creation is included in the `,_jsx(_components.code,{children:`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 `,_jsx(_components.a,{href:`https://www.notion.so/React-Native-SDK-dbd34cc9b7ce455986abf5b18c96d212?pvs=21`,children:`explanation`}),` about the changes we made.`]})]}),`\n`,_jsx(Update,{label:`v2.0.1`,description:`2022-06-20`,id:`v2-0-1`,children:_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Fix Klarna checkout`}),`\n`,_jsx(_components.li,{children:`Dummy APMs`}),`\n`]})}),`\n`,_jsx(Update,{label:`v0.16.2`,description:`2022-07-06`,id:`v0-16-2`,children:_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Update Android dependency to 1.15.1`}),`\n`]})}),`\n`,_jsx(Update,{label:`v0.16.1`,description:`2022-06-16`,id:`v0-16-1`,children:_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Fix Klarna checkout`}),`\n`,_jsx(_components.li,{children:`Fix Klarna checkout with HUC`}),`\n`]})}),`\n`,_jsx(Update,{label:`v0.16.0`,description:`2022-06-13`,id:`v0-16-0`,children:_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Include Headless Universal Checkout Beta`}),`\n`]})}),`\n`,_jsxs(Update,{label:`v2.0.0`,description:`2022-06-08`,id:`v2-0-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.p,{children:[_jsx(_components.em,{children:`The version 2 of the SDK is out!`}),`\n`,_jsx(_components.em,{children:`This includes a simplified way to integrate Primer`})]}),_jsx(Tip,{children:_jsxs(_components.p,{children:[`📚 Take a look at the `,_jsx(_components.a,{href:`/changelogs/migration-guides/`,children:`migration guide`}),` for updating your integration to version 2.`]})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Payments created automatically`})}),_jsx(_components.p,{children:`Universal Checkout | SDK`}),_jsxs(_components.p,{children:[`Creating payments with Universal Checkout is now `,_jsx(_components.em,{children:`seamless.`}),` There’s no more need for `,_jsx(_components.strong,{children:`callbacks`}),`, `,_jsx(_components.strong,{children:`API calls`}),` and `,_jsx(_components.strong,{children:`headaches`}),` to create a payment. It’s all done under the hood 🧙`]}),_jsxs(_components.p,{children:[_jsx(_components.em,{children:_jsx(_components.strong,{children:`In the past, creating payments involved manual payment handling:`})}),`\nOn the `,_jsx(_components.strong,{children:`client side`}),`, you would have had to implement the dreaded `,_jsx(_components.code,{children:`clientTokenCallback`}),`, `,_jsx(_components.code,{children:`onTokenizeSuccess`}),` and `,_jsx(_components.code,{children:`onResumeSuccess`}),` delegate functions.`]}),_jsxs(_components.p,{children:[`On the `,_jsx(_components.strong,{children:`server side`}),`, you had to manually call our `,_jsx(_components.strong,{children:`Payments API`}),` in order to create a payment 🤷`]}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Rejoice!`}),` As from version `,_jsx(_components.code,{children:`2.0.0`}),` no manual payment handling is required! Payment creation is now, as mentioned above, :chef-kiss: - `,_jsx(_components.em,{children:`seamless.`})]}),_jsxs(_components.p,{children:[`Feel free to rip out the above mentioned callbacks when migrating to version `,_jsx(_components.code,{children:`2.0.0`}),` and enjoy the feeling of utter relaxation as all your payment handling is now done by Universal Checkout 💆`]}),_jsx(_components.hr,{})]}),`\n`,_jsx(Update,{label:`v0.15.8`,description:`2022-05-30`,id:`v0-15-8`,children:_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Fixed PayPal vaulting on iOS and Android`}),`\n`,_jsx(_components.li,{children:`Fixed Android mappings`}),`\n`]})}),`\n`,_jsx(Update,{label:`v0.15.5`,description:`2022-05-23`,id:`v0-15-5`,children:_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Added following APMs`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Coinbase`}),`\n`,_jsx(_components.li,{children:`OpenNode`}),`\n`,_jsx(_components.li,{children:`2c2p`}),`\n`,_jsx(_components.li,{children:`PayShop`}),`\n`]}),`\n`]}),`\n`]})}),`\n`,_jsx(Update,{label:`v0.13.0 [BETA 3]`,description:`2022-05-19`,id:`v0-13-0-%5Bbeta-3%5D`,children:_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Fix Apple Pay merchant name not showing`}),`\n`]})}),`\n`,_jsx(Update,{label:`v0.15.1`,description:`2021-04-19`,id:`v0-15-1`,children:_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Fixes cardholder name field not deleting characters`}),`\n`,_jsx(_components.li,{children:`Changes cardholder name field’s keyboard type`}),`\n`]})}),`\n`,_jsx(Update,{label:`v0.15.0`,description:`2021-04-12`,id:`v0-15-0`,children:_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Bug fixes \u0026 stability improvements`}),`\n`]})}),`\n`,_jsx(Update,{label:`0.12.5`,description:`2021-04-07`,id:`0-12-5`,children:_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Update native dependencies`}),`\n`,_jsx(_components.li,{children:`Fix callbacks naming and types`}),`\n`]})}),`\n`,_jsx(Update,{label:`v0.12.4`,description:`2021-03-29`,id:`v0-12-4`,children:_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Update native dependencies`}),`\n`]})}),`\n`,_jsx(Update,{label:`v0.13.0-beta.1`,description:`2021-03-17`,id:`v0-13-0-beta-1`,children:_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Beta-1 for the Headless Universal Checkout`}),`\n`]})}),`\n`,_jsx(Update,{label:`v0.12.3`,description:`2021-03-17`,id:`v0-12-3`,children:_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Fix `,_jsx(_components.code,{children:`is3DSDevelopmentMode`}),` flag`]}),`\n`]})}),`\n`,_jsx(Update,{label:`v0.12.2`,description:`2021-03-16`,id:`v0-12-2`,children:_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Bug fixes`}),`\n`]})}),`\n`,_jsx(Update,{label:`v0.12.1`,description:`2021-03-11`,id:`v0-12-1`,children:_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Update native dependencies`}),`\n`]})}),`\n`,_jsx(Update,{label:`v0.11.2`,description:`2021-02-16`,id:`v0-11-2`,children:_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Fix actions callback`}),`\n`]})}),`\n`,_jsx(Update,{label:`v0.11.1`,description:`2021-02-09`,id:`v0-11-1`,children:_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Update native dependencies`}),`\n`]})}),`\n`,_jsx(Update,{label:`v0.11.0`,description:`2021-02-11`,id:`v0-11-0`,children:_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Update native dependencies`}),`\n`]})}),`\n`,_jsx(Update,{label:`v0.10.0`,description:`2021-02-01`,id:`v0-10-0`,children:_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Improved deep linking for both native platforms`}),`\n`,_jsx(_components.li,{children:`Extended language support for Android`}),`\n`]})}),`\n`,_jsx(Update,{label:`v0.9.0`,description:`2021-01-28`,id:`v0-9-0`,children:_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Added support for more payment methods`}),`\n`,_jsx(_components.li,{children:`Fixed single payment method payment flow`}),`\n`,_jsx(_components.li,{children:`Performance improvements on both native platforms`}),`\n`,_jsx(_components.li,{children:`Autofocus feature for card forms added`}),`\n`]})}),`\n`,_jsx(Update,{label:`v0.8.0`,description:`2021-01-14`,id:`v0-8-0`,children:_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Add support for `,_jsx(_components.code,{children:`SET_BILLING_ADDRESS`}),` client session action`]}),`\n`,_jsx(_components.li,{children:`Enables postal code capture in card form on both platforms`}),`\n`,_jsx(_components.li,{children:`Improvements to surcharge feature`}),`\n`]})}),`\n`,_jsx(Update,{label:`v0.7.1`,description:`2021-12-23`,id:`v0-7-1`,children:_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Add beta support for payment method Atome`}),`\n`]})}),`\n`,_jsx(Update,{label:`v0.7.0`,description:`2021-12-08`,id:`v0-7-0`,children:_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Stable surcharge feature for both iOS \u0026 Android.`}),`\n`,_jsx(_components.li,{children:`Minor bug fixes.`}),`\n`,_jsx(_components.li,{children:`Improvements to example app.`}),`\n`]})}),`\n`,_jsx(Update,{label:`v0.7.0-beta`,description:`2021-12-03`,id:`v0-7-0-beta`,children:_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Adds `,_jsx(_components.code,{children:`onClientSessionActions`}),` callback`]}),`\n`,_jsx(_components.li,{children:`Early version of surcharge added for both platforms.`}),`\n`]})}),`\n`,_jsx(Update,{label:`v0.6.8`,description:`2021-12-03`,id:`v0-6-8`,children:_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Refactored error handling for `,_jsx(_components.code,{children:`onTokenizeSuccess`}),` and `,_jsx(_components.code,{children:`onResumeSuccess`})]}),`\n`,_jsx(_components.li,{children:`Improved flow for example app`}),`\n`]})}),`\n`,_jsx(Update,{label:`v0.6.7`,description:`2021-12-01`,id:`v0-6-7`,children:_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Adds Bancontact, EPS, Giropay, iDeal and Sofort via Buckaroo`}),`\n`,_jsx(_components.li,{children:`Minor updates to example app`}),`\n`,_jsx(_components.li,{children:`Minor fix on PayPal presentation for iOS`}),`\n`]})}),`\n`,_jsx(Frame,{caption:`Billing Address`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/billing_address.webp?fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=596e83a62239db02faba2da56a999e8d`,\"data-og-width\":`512`,width:`512`,\"data-og-height\":`1081`,height:`1081`,\"data-path\":`images/changelogs/react-native/billing_address.webp`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/billing_address.webp?w=280\u0026fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=5f2bfe9db886d4af423816e97233a23a 280w, https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/billing_address.webp?w=560\u0026fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=17cf6c22121485ab39643dad5a9f3f9c 560w, https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/billing_address.webp?w=840\u0026fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=399ecef1e0a8d614dc9f2ded6606ddd2 840w, https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/billing_address.webp?w=1100\u0026fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=97a4eb836cb20a4ddaee6e45459c07ef 1100w, https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/billing_address.webp?w=1650\u0026fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=ae9dbbc6e958f76493838a6a83f7cb32 1650w, https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/react-native/billing_address.webp?w=2500\u0026fit=max\u0026auto=format\u0026n=2gUFYKfNb_svpxsN\u0026q=85\u0026s=3eefb547100fbb81a59e1a0558c9dd7c 2500w`})})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"codeStyling":"dark","config":{},"pageMetadata":{"title":"React Native SDK","sidebarTitle":"React Native SDK","icon":"react","rss":true,"description":null,"href":"/changelogs/react-native-sdk"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"v2.47.1","slug":"v2-47-1","depth":1,"children":[]},{"title":"v2.47.0","slug":"v2-47-0","depth":1,"children":[]},{"title":"v2.46.1","slug":"v2-46-1","depth":1,"children":[]},{"title":"v2.46.0","slug":"v2-46-0","depth":1,"children":[]},{"title":"v2.45.0","slug":"v2-45-0","depth":1,"children":[]},{"title":"v2.44.0","slug":"v2-44-0","depth":1,"children":[]},{"title":"v2.43.1","slug":"v2-43-1","depth":1,"children":[]},{"title":"v2.43.0","slug":"v2-43-0","depth":1,"children":[]},{"title":"v2.42.2","slug":"v2-42-2","depth":1,"children":[]},{"title":"v2.42.1","slug":"v2-42-1","depth":1,"children":[]},{"title":"v2.42.0","slug":"v2-42-0","depth":1,"children":[]},{"title":"v2.41.0","slug":"v2-41-0","depth":1,"children":[]},{"title":"v2.40.0","slug":"v2-40-0","depth":1,"children":[]},{"title":"v2.39.2","slug":"v2-39-2","depth":1,"children":[]},{"title":"v2.39.1","slug":"v2-39-1","depth":1,"children":[]},{"title":"v2.38.0","slug":"v2-38-0","depth":1,"children":[]},{"title":"v2.37.1","slug":"v2-37-1","depth":1,"children":[]},{"title":"v2.37.0","slug":"v2-37-0","depth":1,"children":[]},{"title":"v2.36.0","slug":"v2-36-0","depth":1,"children":[]},{"title":"v2.35.0","slug":"v2-35-0","depth":1,"children":[]},{"title":"v2.34.1","slug":"v2-34-1","depth":1,"children":[]},{"title":"v2.34.0","slug":"v2-34-0","depth":1,"children":[]},{"title":"v2.33.0","slug":"v2-33-0","depth":1,"children":[]},{"title":"v2.32.2","slug":"v2-32-2","depth":1,"children":[]},{"title":"v2.32.1","slug":"v2-32-1","depth":1,"children":[]},{"title":"v2.32.0","slug":"v2-32-0","depth":1,"children":[]},{"title":"v2.31.0","slug":"v2-31-0","depth":1,"children":[]},{"title":"v2.30.2","slug":"v2-30-2","depth":1,"children":[]},{"title":"v2.30.1","slug":"v2-30-1","depth":1,"children":[]},{"title":"v2.30.0","slug":"v2-30-0","depth":1,"children":[]},{"title":"v2.29.0","slug":"v2-29-0","depth":1,"children":[]},{"title":"v2.28.0","slug":"v2-28-0","depth":1,"children":[]},{"title":"v2.27.2","slug":"v2-27-2","depth":1,"children":[]},{"title":"v2.27.1","slug":"v2-27-1","depth":1,"children":[]},{"title":"v2.27.0","slug":"v2-27-0","depth":1,"children":[]},{"title":"v2.26.3","slug":"v2-26-3","depth":1,"children":[]},{"title":"v2.26.1","slug":"v2-26-1","depth":1,"children":[]},{"title":"v2.24.0","slug":"v2-24-0","depth":1,"children":[]},{"title":"v2.23.1","slug":"v2-23-1","depth":1,"children":[]},{"title":"v2.23.0","slug":"v2-23-0","depth":1,"children":[]},{"title":"v2.22.0","slug":"v2-22-0","depth":1,"children":[]},{"title":"v2.21.1","slug":"v2-21-1","depth":1,"children":[]},{"title":"v2.21.0","slug":"v2-21-0","depth":1,"children":[]},{"title":"v2.20.0","slug":"v2-20-0","depth":1,"children":[]},{"title":"v2.19.2","slug":"v2-19-2","depth":1,"children":[]},{"title":"v2.19.1","slug":"v2-19-1","depth":1,"children":[]},{"title":"v2.19.0","slug":"v2-19-0","depth":1,"children":[]},{"title":"v2.18.0","slug":"v2-18-0","depth":1,"children":[]},{"title":"v2.17.3","slug":"v2-17-3","depth":1,"children":[]},{"title":"v2.17.2","slug":"v2-17-2","depth":1,"children":[]},{"title":"v2.17.1","slug":"v2-17-1","depth":1,"children":[]},{"title":"v2.17.0","slug":"v2-17-0","depth":1,"children":[]},{"title":"v2.17.0-rc.13","slug":"v2-17-0-rc-13","depth":1,"children":[]},{"title":"v2.17.0-rc.12","slug":"v2-17-0-rc-12","depth":1,"children":[]},{"title":"v2.17.0-rc.11","slug":"v2-17-0-rc-11","depth":1,"children":[]},{"title":"v2.17.0-rc.10","slug":"v2-17-0-rc-10","depth":1,"children":[]},{"title":"v2.17.0-rc.9","slug":"v2-17-0-rc-9","depth":1,"children":[]},{"title":"v2.17.0-rc.8","slug":"v2-17-0-rc-8","depth":1,"children":[]},{"title":"v2.16.7","slug":"v2-16-7","depth":1,"children":[]},{"title":"v2.16.6","slug":"v2-16-6","depth":1,"children":[]},{"title":"v2.17.0-rc.6","slug":"v2-17-0-rc-6","depth":1,"children":[]},{"title":"v2.17.0-rc.4","slug":"v2-17-0-rc-4","depth":1,"children":[]},{"title":"v2.17.0-rc.3","slug":"v2-17-0-rc-3","depth":1,"children":[]},{"title":"v2.16.5","slug":"v2-16-5","depth":1,"children":[]},{"title":"v2.17.0-rc.2","slug":"v2-17-0-rc-2","depth":1,"children":[]},{"title":"v2.16.4","slug":"v2-16-4","depth":1,"children":[]},{"title":"v2.17.0-rc.1","slug":"v2-17-0-rc-1","depth":1,"children":[]},{"title":"v2.16.2","slug":"v2-16-2","depth":1,"children":[]},{"title":"v2.16.0","slug":"v2-16-0","depth":1,"children":[]},{"title":"v2.15.1","slug":"v2-15-1","depth":1,"children":[]},{"title":"v2.15.0","slug":"v2-15-0","depth":1,"children":[]},{"title":"v2.14.4","slug":"v2-14-4","depth":1,"children":[]},{"title":"v2.14.3","slug":"v2-14-3","depth":1,"children":[]},{"title":"v2.14.2","slug":"v2-14-2","depth":1,"children":[]},{"title":"v2.14.1","slug":"v2-14-1","depth":1,"children":[]},{"title":"v2.14.0","slug":"v2-14-0","depth":1,"children":[]},{"title":"v2.13.2","slug":"v2-13-2","depth":1,"children":[]},{"title":"v2.13.1","slug":"v2-13-1","depth":1,"children":[]},{"title":"v2.13.0","slug":"v2-13-0","depth":1,"children":[]},{"title":"v2.12.2","slug":"v2-12-2","depth":1,"children":[]},{"title":"v2.12.1","slug":"v2-12-1","depth":1,"children":[]},{"title":"v2.12.0","slug":"v2-12-0","depth":1,"children":[]},{"title":"v2.11.0","slug":"v2-11-0","depth":1,"children":[]},{"title":"v2.9.0","slug":"v2-9-0","depth":1,"children":[]},{"title":"v2.8.1","slug":"v2-8-1","depth":1,"children":[]},{"title":"v2.8.0","slug":"v2-8-0","depth":1,"children":[]},{"title":"v2.6.1","slug":"v2-6-1","depth":1,"children":[]},{"title":"v2.5.1","slug":"v2-5-1","depth":1,"children":[]},{"title":"v2.6.0","slug":"v2-6-0","depth":1,"children":[]},{"title":"v2.5.0","slug":"v2-5-0","depth":1,"children":[]},{"title":"v2.4.0","slug":"v2-4-0","depth":1,"children":[]},{"title":"v2.3.0","slug":"v2-3-0","depth":1,"children":[]},{"title":"v2.2.1","slug":"v2-2-1","depth":1,"children":[]},{"title":"v2.2.0","slug":"v2-2-0","depth":1,"children":[]},{"title":"v2.1.0","slug":"v2-1-0","depth":1,"children":[]},{"title":"v2.0.1","slug":"v2-0-1","depth":1,"children":[]},{"title":"v0.16.2","slug":"v0-16-2","depth":1,"children":[]},{"title":"v0.16.1","slug":"v0-16-1","depth":1,"children":[]},{"title":"v0.16.0","slug":"v0-16-0","depth":1,"children":[]},{"title":"v2.0.0","slug":"v2-0-0","depth":1,"children":[]},{"title":"v0.15.8","slug":"v0-15-8","depth":1,"children":[]},{"title":"v0.15.5","slug":"v0-15-5","depth":1,"children":[]},{"title":"v0.13.0 [BETA 3]","slug":"v0-13-0-%5Bbeta-3%5D","depth":1,"children":[]},{"title":"v0.15.1","slug":"v0-15-1","depth":1,"children":[]},{"title":"v0.15.0","slug":"v0-15-0","depth":1,"children":[]},{"title":"0.12.5","slug":"0-12-5","depth":1,"children":[]},{"title":"v0.12.4","slug":"v0-12-4","depth":1,"children":[]},{"title":"v0.13.0-beta.1","slug":"v0-13-0-beta-1","depth":1,"children":[]},{"title":"v0.12.3","slug":"v0-12-3","depth":1,"children":[]},{"title":"v0.12.2","slug":"v0-12-2","depth":1,"children":[]},{"title":"v0.12.1","slug":"v0-12-1","depth":1,"children":[]},{"title":"v0.11.2","slug":"v0-11-2","depth":1,"children":[]},{"title":"v0.11.1","slug":"v0-11-1","depth":1,"children":[]},{"title":"v0.11.0","slug":"v0-11-0","depth":1,"children":[]},{"title":"v0.10.0","slug":"v0-10-0","depth":1,"children":[]},{"title":"v0.9.0","slug":"v0-9-0","depth":1,"children":[]},{"title":"v0.8.0","slug":"v0-8-0","depth":1,"children":[]},{"title":"v0.7.1","slug":"v0-7-1","depth":1,"children":[]},{"title":"v0.7.0","slug":"v0-7-0","depth":1,"children":[]},{"title":"v0.7.0-beta","slug":"v0-7-0-beta","depth":1,"children":[]},{"title":"v0.6.8","slug":"v0-6-8","depth":1,"children":[]},{"title":"v0.6.7","slug":"v0-6-7","depth":1,"children":[]}],"codeExamples":{}},"jsLinks":["/docs/_mintlify/custom/primer-cc826789/f9b3e76a02542eba/js/codeblocklayout.js"],"subdomain":"primer-cc826789","siteName":"Primer","title":"React Native SDK - Primer","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-06T15:07:00.673Z","originalFileLocation":"changelogs/react-native-sdk.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"light\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"application-name\" content=\"Primer\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/primer-cc826789/9meORDX7HOYVFtwE/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/docs/mintlify-assets/_mintlify/favicons/primer-cc826789/9meORDX7HOYVFtwE/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/primer-cc826789/9meORDX7HOYVFtwE/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/primer-cc826789/9meORDX7HOYVFtwE/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/primer-cc826789/9meORDX7HOYVFtwE/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/primer-cc826789/9meORDX7HOYVFtwE/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/primer-cc826789/9meORDX7HOYVFtwE/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/primer-cc826789/9meORDX7HOYVFtwE/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/primer-cc826789/9meORDX7HOYVFtwE/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"React Native SDK - Primer\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Primer\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://primer.io/docs/changelogs/react-native-sdk\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://primer-cc826789.mintlify.site/docs/_mintlify/api/og/v2?division=Mobile\u0026amp;title=React+Native+SDK\u0026amp;theme=115d40077fafa3c430405b4c\u0026amp;signature=581961d48de5df3c6c7c8861b84c90002763bf31c511c1f1a547302a7310536b\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"React Native SDK - Primer\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://primer-cc826789.mintlify.site/docs/_mintlify/api/og/v2?division=Mobile\u0026amp;title=React+Native+SDK\u0026amp;theme=115d40077fafa3c430405b4c\u0026amp;signature=581961d48de5df3c6c7c8861b84c90002763bf31c511c1f1a547302a7310536b\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/docs/mintlify-assets/_mintlify/favicons/primer-cc826789/9meORDX7HOYVFtwE/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Primer\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#FF7C4F\">\u003clink data-mint-head rel=\"canonical\" href=\"https://primer.io/docs/changelogs/react-native-sdk\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/docs/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/changelogs/react-native-sdk.md\">\u003clink data-mint-head rel=\"alternate\" type=\"application/rss+xml\" href=\"https://primer.io/docs/changelogs/react-native-sdk/rss.xml\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://primer.io/#organization\",\"name\":\"Primer\",\"url\":\"https://primer.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/primer-cc826789/fMxS38v0lFyMKyzD/logo/primer_logo.svg?fit=max\u0026auto=format\u0026n=fMxS38v0lFyMKyzD\u0026q=85\u0026s=0010b4ac2a8a90e656efd18fb57c9366\"}},{\"@type\":\"WebSite\",\"@id\":\"https://primer.io/docs#website\",\"name\":\"Primer\",\"url\":\"https://primer.io/docs\",\"publisher\":{\"@id\":\"https://primer.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://primer.io/docs/changelogs/react-native-sdk#webpage\",\"url\":\"https://primer.io/docs/changelogs/react-native-sdk\",\"name\":\"React Native SDK\",\"dateModified\":\"2026-11-06T15:07:00.673Z\",\"isPartOf\":{\"@id\":\"https://primer.io/docs#website\"},\"breadcrumb\":{\"@id\":\"https://primer.io/docs/changelogs/react-native-sdk#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://primer.io/docs/changelogs/react-native-sdk#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"SDK changelogs\",\"item\":\"https://primer.io/docs/changelogs/web\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mobile\",\"item\":\"https://primer.io/docs/changelogs/ios-sdk\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"React Native SDK\",\"item\":\"https://primer.io/docs/changelogs/react-native-sdk\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://primer.io/docs/changelogs/react-native-sdk#article\",\"headline\":\"React Native SDK\",\"name\":\"React Native SDK\",\"url\":\"https://primer.io/docs/changelogs/react-native-sdk\",\"mainEntityOfPage\":{\"@id\":\"https://primer.io/docs/changelogs/react-native-sdk#webpage\"},\"dateModified\":\"2026-11-06T15:07:00.673Z\",\"publisher\":{\"@id\":\"https://primer.io/#organization\"},\"isPartOf\":{\"@id\":\"https://primer.io/docs#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Primer\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Primer","nav":{"global":null,"tabs":[{"tab":"Home","pages":[{"title":"Home","href":"/home"}]},{"tab":"Documentation","pages":[{"title":"Documentation","href":"/get-started/overview"}]},{"tab":"API Reference","versions":[{"version":"v2.4","tag":"GA","anchors":[{"anchor":"Getting started","icon":"rocket","groups":[{"group":"Getting started","pages":[{"title":"Overview","href":"/api-reference/get-started/v2.4/overview"},{"title":"API lifecycle","sidebarTitle":"API lifecycle","href":"/api-reference/get-started/api-lifecycle"},{"title":"Authentication","sidebarTitle":"Authentication","href":"/api-reference/get-started/authentication"},{"title":"API Responses","sidebarTitle":"API responses","href":"/api-reference/get-started/api-responses"},{"title":"Idempotency Key","sidebarTitle":"Idempotency key","href":"/api-reference/get-started/idempotency-key"},{"title":"Request requirements","sidebarTitle":"Request requirements","href":"/api-reference/get-started/request-requirements"},{"title":"Configure Webhooks","sidebarTitle":"Configure webhooks","href":"/api-reference/get-started/configure-webhooks"}]}]},{"anchor":"API reference","icon":"book-open","groups":[{"group":"API reference","pages":[{"group":"Client Session API","pages":[{"title":"Retrieve a client session","deprecated":null,"version":null,"openapi":"https://api.schemas.primer.io/api-reference/v2.4/openapi.yaml get /client-session","href":"/api-reference/v2.4/api-reference/client-session-api/retrieve-a-client-session"},{"title":"Create a client session","deprecated":null,"version":null,"openapi":"https://api.schemas.primer.io/api-reference/v2.4/openapi.yaml post /client-session","href":"/api-reference/v2.4/api-reference/client-session-api/create-a-client-session"},{"title":"Update client session","deprecated":null,"version":null,"openapi":"https://api.schemas.primer.io/api-reference/v2.4/openapi.yaml patch /client-session","href":"/api-reference/v2.4/api-reference/client-session-api/update-client-session"}]},{"group":"Payments API","pages":[{"title":"Search \u0026 list payments","deprecated":null,"version":null,"openapi":"https://api.schemas.primer.io/api-reference/v2.4/openapi.yaml get /payments","href":"/api-reference/v2.4/api-reference/payments-api/search-\u0026-list-payments"},{"title":"Create a payment","deprecated":null,"version":null,"openapi":"https://api.schemas.primer.io/api-reference/v2.4/openapi.yaml post /payments","href":"/api-reference/v2.4/api-reference/payments-api/create-a-payment"},{"title":"Authorize a payment","deprecated":null,"version":null,"openapi":"https://api.schemas.primer.io/api-reference/v2.4/openapi.yaml post /payments/{id}/authorize","href":"/api-reference/v2.4/api-reference/payments-api/authorize-a-payment"},{"title":"Capture a payment","deprecated":null,"version":null,"openapi":"https://api.schemas.primer.io/api-reference/v2.4/openapi.yaml post /payments/{id}/capture","href":"/api-reference/v2.4/api-reference/payments-api/capture-a-payment"},{"title":"Cancel a payment","deprecated":null,"version":null,"openapi":"https://api.schemas.primer.io/api-reference/v2.4/openapi.yaml post /payments/{id}/cancel","href":"/api-reference/v2.4/api-reference/payments-api/cancel-a-payment"},{"title":"Refund a payment","deprecated":null,"version":null,"openapi":"https://api.schemas.primer.io/api-reference/v2.4/openapi.yaml post /payments/{id}/refund","href":"/api-reference/v2.4/api-reference/payments-api/refund-a-payment"},{"title":"Resume a payment","deprecated":null,"version":null,"openapi":"https://api.schemas.primer.io/api-reference/v2.4/openapi.yaml post /payments/{id}/resume","href":"/api-reference/v2.4/api-reference/payments-api/resume-a-payment"},{"title":"Adjust authorized amount","deprecated":null,"version":null,"openapi":"https://api.schemas.primer.io/api-reference/v2.4/openapi.yaml post /payments/{id}/adjust-authorization","href":"/api-reference/v2.4/api-reference/payments-api/adjust-authorized-amount"},{"title":"Get a payment","deprecated":null,"version":null,"openapi":"https://api.schemas.primer.io/api-reference/v2.4/openapi.yaml get /payments/{id}","href":"/api-reference/v2.4/api-reference/payments-api/get-a-payment"}]},{"group":"Payment Attempts API","pages":[{"title":"Approve a payment attempt","deprecated":null,"version":null,"openapi":"https://api.schemas.primer.io/api-reference/v2.4/openapi.yaml post /payment-attempts/{id}/approve","href":"/api-reference/v2.4/api-reference/payment-attempts-api/approve-a-payment-attempt"},{"title":"Abort a payment attempt","deprecated":null,"version":null,"openapi":"https://api.schemas.primer.io/api-reference/v2.4/openapi.yaml post /payment-attempts/{id}/abort","href":"/api-reference/v2.4/api-reference/payment-attempts-api/abort-a-payment-attempt"},{"title":"Resolve a payment attempt","deprecated":null,"version":null,"openapi":"https://api.schemas.primer.io/api-reference/v2.4/openapi.yaml post /payment-attempts/{id}/resolve","href":"/api-reference/v2.4/api-reference/payment-attempts-api/resolve-a-payment-attempt"}]},{"group":"Payment Methods API","pages":[{"title":"Save a payment method token","deprecated":null,"version":null,"openapi":"https://api.schemas.primer.io/api-reference/v2.4/openapi.yaml post /payment-instruments/{paymentMethodToken}/vault","href":"/api-reference/v2.4/api-reference/payment-methods-api/save-a-payment-method-token"},{"title":"List saved payment methods","deprecated":null,"version":null,"openapi":"https://api.schemas.primer.io/api-reference/v2.4/openapi.yaml get /payment-instruments","href":"/api-reference/v2.4/api-reference/payment-methods-api/list-saved-payment-methods"},{"title":"Delete a saved payment method","deprecated":null,"version":null,"openapi":"https://api.schemas.primer.io/api-reference/v2.4/openapi.yaml delete /payment-instruments/{paymentMethodToken}","href":"/api-reference/v2.4/api-reference/payment-methods-api/delete-a-saved-payment-method"},{"title":"Update the default saved payment method","deprecated":null,"version":null,"openapi":"https://api.schemas.primer.io/api-reference/v2.4/openapi.yaml post /payment-instruments/{paymentMethodToken}/default","href":"/api-reference/v2.4/api-reference/payment-methods-api/update-the-default-saved-payment-method"}]},{"group":"Primer Proxy API","pages":[{"title":"Forward a request to a PSP, substituting vaulted card data","deprecated":null,"version":null,"openapi":"https://api.schemas.primer.io/api-reference/v2.4/openapi.yaml get /{proxyPath}","href":"/api-reference/v2.4/api-reference/primer-proxy-api/forward-a-request-to-a-psp-substituting-vaulted-card-data"},{"title":"Forward a request to a PSP, substituting vaulted card data","deprecated":null,"version":null,"openapi":"https://api.schemas.primer.io/api-reference/v2.4/openapi.yaml put /{proxyPath}","href":"/api-reference/v2.4/api-reference/primer-proxy-api/forward-a-request-to-a-psp-substituting-vaulted-card-data-1"},{"title":"Forward a request to a PSP, substituting vaulted card data","deprecated":null,"version":null,"openapi":"https://api.schemas.primer.io/api-reference/v2.4/openapi.yaml post /{proxyPath}","href":"/api-reference/v2.4/api-reference/primer-proxy-api/forward-a-request-to-a-psp-substituting-vaulted-card-data-2"},{"title":"Forward a request to a PSP, substituting vaulted card data","deprecated":null,"version":null,"openapi":"https://api.schemas.primer.io/api-reference/v2.4/openapi.yaml delete /{proxyPath}","href":"/api-reference/v2.4/api-reference/primer-proxy-api/forward-a-request-to-a-psp-substituting-vaulted-card-data-3"},{"title":"Forward a request to a PSP, substituting vaulted card data","deprecated":null,"version":null,"openapi":"https://api.schemas.primer.io/api-reference/v2.4/openapi.yaml patch /{proxyPath}","href":"/api-reference/v2.4/api-reference/primer-proxy-api/forward-a-request-to-a-psp-substituting-vaulted-card-data-4"}]}]}]},{"anchor":"Webhooks","icon":"webhook","groups":[{"group":"Webhooks","pages":[{"group":"Payment Webhooks","pages":[{"openapi":"https://api.schemas.primer.io/api-reference/v2.4/webhooks.yaml post /payment-status","playground":"none","title":"Payment Status Update","href":"/api-reference/endpoints/v2.4/payment-webhooks/payment-status-update"},{"openapi":"https://api.schemas.primer.io/api-reference/v2.4/webhooks.yaml post /payment-refund","playground":"none","title":"Payment Refund","href":"/api-reference/endpoints/v2.4/payment-webhooks/payment-refund"},{"openapi":"https://api.schemas.primer.io/api-reference/v2.4/webhooks.yaml post /payment-operation-failure","playground":"none","title":"Payment Operation Failure","href":"/api-reference/endpoints/v2.4/payment-webhooks/payment-operation-failure"}]},{"group":"Workflow Webhooks","pages":[{"openapi":"https://api.schemas.primer.io/api-reference/v2.4/webhooks.yaml post /workflow-run-failed","playground":"none","title":"Workflow Run Failed","href":"/api-reference/endpoints/v2.4/workflow-webhooks/workflow-run-failed"}]},{"group":"Disputes \u0026 Chargebacks Webhooks","pages":[{"openapi":"https://api.schemas.primer.io/api-reference/v2.4/webhooks.yaml post /dispute-opened","playground":"none","title":"Dispute Open","href":"/api-reference/endpoints/v2.4/dispute-and-chargebacks-webhooks/dispute-open"},{"openapi":"https://api.schemas.primer.io/api-reference/v2.4/webhooks.yaml post /dispute-status","playground":"none","title":"Dispute Status","href":"/api-reference/endpoints/v2.4/dispute-and-chargebacks-webhooks/dispute-status"}]}]}]},{"anchor":"Changelogs","icon":"lines-leaning","pages":[{"title":"Changelog","url":"/changelogs/api-changelog","href":"/api-reference/changelog"}]}]},{"version":"v2.3","tag":"Supported","pages":[{"title":"v2.3","href":"/api-reference/get-started/v2.3/overview"}]},{"version":"v2.2","tag":"Supported","pages":[{"title":"v2.2","href":"/api-reference/get-started/v2.2/overview"}]},{"version":"v2.1","tag":"Supported","pages":[{"title":"v2.1","href":"/api-reference/get-started/v2.1/overview"}]},{"version":"v2","tag":"Supported","pages":[{"title":"v2","href":"/api-reference/get-started/v2/overview"}]}]},{"tab":"SDK Reference","anchors":[{"anchor":"Web","icon":"globe","groups":[{"group":"Web","pages":[{"title":"SDK reference overview","sidebarTitle":"Overview","href":"/sdk/primer-checkout-web/sdk-reference-overview"},{"title":"SDK options reference","sidebarTitle":"SDK options","href":"/sdk/primer-checkout-web/sdk-options-reference"},{"title":"Styling variables","href":"/sdk/primer-checkout-web/styling-variables"},{"title":"Events reference","sidebarTitle":"Events reference","href":"/sdk/primer-checkout-web/events-reference"},{"title":"Apple Pay options","sidebarTitle":"Apple Pay","href":"/sdk/primer-checkout-web/apple-pay"},{"title":"PayPal options","sidebarTitle":"PayPal","href":"/sdk/primer-checkout-web/paypal"},{"title":"Google Pay options","sidebarTitle":"Google Pay","href":"/sdk/primer-checkout-web/google-pay"},{"title":"Klarna options","sidebarTitle":"Klarna","href":"/sdk/primer-checkout-web/klarna"},{"title":"Klarna via Adyen options","sidebarTitle":"Klarna via Adyen","href":"/sdk/primer-checkout-web/adyen-klarna"},{"group":"Components","pages":[{"title":"Checkout component","sidebarTitle":"\u003cprimer-checkout>","href":"/sdk/primer-checkout-web/components/primer-checkout"},{"title":"Provider component","sidebarTitle":"\u003cprimer-provider>","href":"/sdk/primer-checkout-web/components/primer-provider"},{"title":"Main component","sidebarTitle":"\u003cprimer-main>","href":"/sdk/primer-checkout-web/components/primer-main"},{"title":"Payment Method Component","sidebarTitle":"\u003cprimer-payment-method>","href":"/sdk/primer-checkout-web/components/primer-payment-method"},{"title":"Payment Method Container","sidebarTitle":"\u003cprimer-payment-method-container>","href":"/sdk/primer-checkout-web/components/primer-payment-method-container"},{"group":"Card Form Components","pages":[{"title":"Card form","sidebarTitle":"\u003cprimer-card-form>","href":"/sdk/primer-checkout-web/components/primer-card-form/primer-card-form"},{"title":"Billing Address","sidebarTitle":"\u003cprimer-billing-address>","href":"/sdk/primer-checkout-web/components/primer-card-form/primer-billing-address"},{"title":"Card Number Input","sidebarTitle":"\u003cprimer-input-card-number>","href":"/sdk/primer-checkout-web/components/primer-card-form/primer-input-card-number"},{"title":"CVV Input","sidebarTitle":"\u003cprimer-input-cvv>","href":"/sdk/primer-checkout-web/components/primer-card-form/primer-input-cvv"},{"title":"Card Expiry Input","sidebarTitle":"\u003cprimer-input-card-expiry>","href":"/sdk/primer-checkout-web/components/primer-card-form/primer-input-card-expiry"},{"title":"Cardholder Name Input","sidebarTitle":"\u003cprimer-input-card-holder-name>","href":"/sdk/primer-checkout-web/components/primer-card-form/primer-input-card-holder-name"},{"title":"Card Form Submit Button","sidebarTitle":"\u003cprimer-card-form-submit>","href":"/sdk/primer-checkout-web/components/primer-card-form/primer-card-form-submit"},{"title":"Input Label","sidebarTitle":"\u003cprimer-input-label>","href":"/sdk/primer-checkout-web/components/primer-card-form/primer-input-label"},{"title":"Input Wrapper","sidebarTitle":"\u003cprimer-input-wrapper>","href":"/sdk/primer-checkout-web/components/primer-card-form/primer-input-wrapper"}]},{"title":"Vault Manager Component","sidebarTitle":"\u003cprimer-vault-manager>","href":"/sdk/primer-checkout-web/components/primer-vault-manager"},{"title":"Show Other Payments Component","sidebarTitle":"\u003cprimer-show-other-payments>","href":"/sdk/primer-checkout-web/components/primer-show-other-payments"},{"title":"Error Message Container","sidebarTitle":"\u003cprimer-error-message-container>","href":"/sdk/primer-checkout-web/components/primer-error-message-container"}]}]}]},{"anchor":"iOS","icon":"apple","versions":[{"version":"3.0.0-beta","groups":[{"group":"iOS","pages":[{"title":"Installation","sidebarTitle":"Installation","href":"/sdk/ios-checkout/v3.0.0-beta/installation"},{"title":"Troubleshooting","sidebarTitle":"Troubleshooting","href":"/sdk/ios-checkout/v3.0.0-beta/troubleshooting"},{"group":"Guides","pages":[{"title":"Handle the payment result","sidebarTitle":"Handle payment result","href":"/sdk/ios-checkout/v3.0.0-beta/guides/handle-payment-result"},{"title":"Apple Pay integration","sidebarTitle":"Apple Pay","href":"/sdk/ios-checkout/v3.0.0-beta/guides/apple-pay-integration"},{"title":"UIKit integration","sidebarTitle":"UIKit integration","href":"/sdk/ios-checkout/v3.0.0-beta/guides/uikit-integration"},{"title":"SwiftUI navigation","sidebarTitle":"SwiftUI navigation","href":"/sdk/ios-checkout/v3.0.0-beta/guides/swiftui-navigation"}]},{"group":"API Reference","pages":[{"title":"API Reference","sidebarTitle":"API Reference","href":"/sdk/ios-checkout/v3.0.0-beta/api/overview"},{"group":"Core API","pages":[{"title":"PrimerCheckout","sidebarTitle":"PrimerCheckout","href":"/sdk/ios-checkout/v3.0.0-beta/api/primer-checkout"},{"title":"PrimerCheckoutSession","sidebarTitle":"PrimerCheckoutSession","href":"/sdk/ios-checkout/v3.0.0-beta/api/primer-checkout-session"},{"title":"PrimerCheckoutPresenter","sidebarTitle":"PrimerCheckoutPresenter","href":"/sdk/ios-checkout/v3.0.0-beta/api/primer-checkout-presenter"},{"title":"PrimerCheckoutState","sidebarTitle":"PrimerCheckoutState","href":"/sdk/ios-checkout/v3.0.0-beta/api/primer-checkout-state"}]},{"group":"Card Form","pages":[{"title":"PrimerCardForm","sidebarTitle":"PrimerCardForm","href":"/sdk/ios-checkout/v3.0.0-beta/api/card-form/primer-card-form"},{"title":"PrimerCardFormSession","sidebarTitle":"PrimerCardFormSession","href":"/sdk/ios-checkout/v3.0.0-beta/api/card-form/card-form-session"},{"title":"CardFormDefaults","sidebarTitle":"CardFormDefaults","href":"/sdk/ios-checkout/v3.0.0-beta/api/card-form/card-form-defaults"},{"title":"Card Field Components","sidebarTitle":"Card Field Components","href":"/sdk/ios-checkout/v3.0.0-beta/api/card-form/card-field-components"}]},{"group":"Payment Methods","pages":[{"title":"PrimerPaymentMethods","sidebarTitle":"PrimerPaymentMethods","href":"/sdk/ios-checkout/v3.0.0-beta/api/payment-methods/primer-payment-methods"},{"title":"PrimerSelectionSession","sidebarTitle":"PrimerSelectionSession","href":"/sdk/ios-checkout/v3.0.0-beta/api/payment-methods/payment-methods-session"},{"title":"PaymentMethodsDefaults","sidebarTitle":"PaymentMethodsDefaults","href":"/sdk/ios-checkout/v3.0.0-beta/api/payment-methods/payment-methods-defaults"},{"title":"PrimerVaultedPaymentMethods","sidebarTitle":"PrimerVaultedPaymentMethods","href":"/sdk/ios-checkout/v3.0.0-beta/api/payment-methods/vaulted-payment-methods"}]},{"group":"Theming","pages":[{"title":"PrimerCheckoutTheme","sidebarTitle":"PrimerCheckoutTheme","href":"/sdk/ios-checkout/v3.0.0-beta/api/theming/primer-theme"},{"title":"Color Tokens","sidebarTitle":"Color Tokens","href":"/sdk/ios-checkout/v3.0.0-beta/api/theming/color-tokens"},{"title":"Spacing Tokens","sidebarTitle":"Spacing Tokens","href":"/sdk/ios-checkout/v3.0.0-beta/api/theming/spacing-tokens"},{"title":"Typography Tokens","sidebarTitle":"Typography Tokens","href":"/sdk/ios-checkout/v3.0.0-beta/api/theming/typography-tokens"},{"title":"Shape Tokens","sidebarTitle":"Shape Tokens","href":"/sdk/ios-checkout/v3.0.0-beta/api/theming/shape-tokens"}]},{"group":"Common Objects","pages":[{"title":"PrimerSettings","sidebarTitle":"PrimerSettings","href":"/sdk/ios-checkout/v3.0.0-beta/api/common/primer-settings"},{"title":"PrimerError","sidebarTitle":"PrimerError","href":"/sdk/ios-checkout/v3.0.0-beta/api/common/primer-error"},{"title":"Validation","sidebarTitle":"Validation","href":"/sdk/ios-checkout/v3.0.0-beta/api/common/validation-result"},{"title":"PrimerCardNetwork","sidebarTitle":"PrimerCardNetwork","href":"/sdk/ios-checkout/v3.0.0-beta/api/common/primer-card-network"},{"title":"PrimerCountry","sidebarTitle":"PrimerCountry","href":"/sdk/ios-checkout/v3.0.0-beta/api/common/primer-country"}]}]}]}]}]},{"anchor":"Android","icon":"android","versions":[{"version":"3.0.0-beta","groups":[{"group":"Android","pages":[{"title":"Installation","sidebarTitle":"Installation","href":"/sdk/android-checkout/v3.0.0-beta/installation"},{"title":"Troubleshooting","sidebarTitle":"Troubleshooting","href":"/sdk/android-checkout/v3.0.0-beta/troubleshooting"},{"group":"API Reference","pages":[{"title":"API Reference","sidebarTitle":"API Reference","href":"/sdk/android-checkout/v3.0.0-beta/api/overview"},{"group":"Core API","pages":[{"title":"PrimerCheckoutController","sidebarTitle":"PrimerCheckoutController","href":"/sdk/android-checkout/v3.0.0-beta/api/primer-checkout-controller"},{"title":"PrimerCheckoutState","sidebarTitle":"PrimerCheckoutState","href":"/sdk/android-checkout/v3.0.0-beta/api/primer-checkout-state"},{"title":"Payment outcomes","sidebarTitle":"Payment outcomes","href":"/sdk/android-checkout/v3.0.0-beta/api/primer-checkout-event"},{"title":"PrimerCheckoutSheet","sidebarTitle":"PrimerCheckoutSheet","href":"/sdk/android-checkout/v3.0.0-beta/api/primer-checkout-sheet"},{"title":"PrimerCheckoutHost","sidebarTitle":"PrimerCheckoutHost","href":"/sdk/android-checkout/v3.0.0-beta/api/primer-checkout-host"}]},{"group":"Card Form","pages":[{"title":"PrimerCardForm","sidebarTitle":"PrimerCardForm","href":"/sdk/android-checkout/v3.0.0-beta/api/card-form/primer-card-form"},{"title":"PrimerCardFormController","sidebarTitle":"PrimerCardFormController","href":"/sdk/android-checkout/v3.0.0-beta/api/card-form/card-form-controller"},{"title":"CardFormDefaults","sidebarTitle":"CardFormDefaults","href":"/sdk/android-checkout/v3.0.0-beta/api/card-form/card-form-defaults"},{"title":"Card Field Components","sidebarTitle":"Card Field Components","href":"/sdk/android-checkout/v3.0.0-beta/api/card-form/card-field-components"}]},{"group":"Payment Methods","pages":[{"title":"PrimerPaymentMethods","sidebarTitle":"PrimerPaymentMethods","href":"/sdk/android-checkout/v3.0.0-beta/api/payment-methods/primer-payment-methods"},{"title":"PrimerPaymentMethodsController","sidebarTitle":"PrimerPaymentMethodsController","href":"/sdk/android-checkout/v3.0.0-beta/api/payment-methods/payment-methods-controller"},{"title":"PaymentMethodsDefaults","sidebarTitle":"PaymentMethodsDefaults","href":"/sdk/android-checkout/v3.0.0-beta/api/payment-methods/payment-methods-defaults"},{"title":"PrimerVaultedPaymentMethodsController","sidebarTitle":"VaultedPaymentMethodsController","href":"/sdk/android-checkout/v3.0.0-beta/api/payment-methods/vaulted-payment-methods-controller"}]},{"group":"Theming","pages":[{"title":"PrimerTheme","sidebarTitle":"PrimerTheme","href":"/sdk/android-checkout/v3.0.0-beta/api/theming/primer-theme"},{"title":"Color Tokens","sidebarTitle":"Color Tokens","href":"/sdk/android-checkout/v3.0.0-beta/api/theming/color-tokens"},{"title":"SpacingTokens","sidebarTitle":"SpacingTokens","href":"/sdk/android-checkout/v3.0.0-beta/api/theming/spacing-tokens"},{"title":"TypographyTokens","sidebarTitle":"TypographyTokens","href":"/sdk/android-checkout/v3.0.0-beta/api/theming/typography-tokens"},{"title":"Shape Tokens","sidebarTitle":"Shape Tokens","href":"/sdk/android-checkout/v3.0.0-beta/api/theming/shape-tokens"}]},{"group":"Common Objects","pages":[{"title":"PrimerSettings","sidebarTitle":"PrimerSettings","href":"/sdk/android-checkout/v3.0.0-beta/api/common/primer-settings"},{"title":"PrimerError","sidebarTitle":"PrimerError","href":"/sdk/android-checkout/v3.0.0-beta/api/common/primer-error"},{"title":"Validation","sidebarTitle":"Validation","href":"/sdk/android-checkout/v3.0.0-beta/api/common/validation-result"},{"title":"PrimerCardNetwork","sidebarTitle":"PrimerCardNetwork","href":"/sdk/android-checkout/v3.0.0-beta/api/common/primer-card-network"},{"title":"PrimerCountry","sidebarTitle":"PrimerCountry","href":"/sdk/android-checkout/v3.0.0-beta/api/common/primer-country"}]}]}]}]}]},{"anchor":"React Native","icon":"react","versions":[{"version":"v2.x.x","groups":[{"group":"React Native SDK","pages":[{"title":"React Native installation","sidebarTitle":"Installation","href":"/sdk/react-native/v2.x.x/installation"},{"group":"Primer","pages":[{"group":"Methods","pages":[{"title":"configure","href":"/sdk/react-native/v2.x.x/primer/methods/configure"},{"title":"showUniversalCheckout","href":"/sdk/react-native/v2.x.x/primer/methods/showUniversalCheckout"},{"title":"showVaultManager","href":"/sdk/react-native/v2.x.x/primer/methods/showVaultManager"},{"title":"showPaymentMethod","href":"/sdk/react-native/v2.x.x/primer/methods/showPaymentMethod"},{"title":"dismiss","href":"/sdk/react-native/v2.x.x/primer/methods/dismiss"}]}]},{"group":"PrimerHeadlessCheckout","pages":[{"group":"Assets manager","pages":[{"title":"getPaymentMethodResource","href":"/sdk/react-native/v2.x.x/primer-headless-checkout/assets-manager/getPaymentMethodResource"},{"title":"getPaymentMethodResources","href":"/sdk/react-native/v2.x.x/primer-headless-checkout/assets-manager/getPaymentMethodResources"},{"title":"getPaymentMethodAssets","href":"/sdk/react-native/v2.x.x/primer-headless-checkout/assets-manager/getPaymentMethodAssets"},{"title":"getPaymentMethodAsset","href":"/sdk/react-native/v2.x.x/primer-headless-checkout/assets-manager/getPaymentMethodAsset"},{"title":"getCardNetworkImage","href":"/sdk/react-native/v2.x.x/primer-headless-checkout/assets-manager/getCardNetworkImage"}]},{"group":"Native UI manager","pages":[{"title":"constructor","href":"/sdk/react-native/v2.x.x/primer-headless-checkout/native-ui-manager/constructor"},{"title":"configure","href":"/sdk/react-native/v2.x.x/primer-headless-checkout/native-ui-manager/configure"},{"title":"showPaymentMethod","href":"/sdk/react-native/v2.x.x/primer-headless-checkout/native-ui-manager/showPaymentMethod"}]},{"group":"Raw data manager","pages":[{"title":"constructor","href":"/sdk/react-native/v2.x.x/primer-headless-checkout/raw-data-manager/constructor"},{"title":"configure","href":"/sdk/react-native/v2.x.x/primer-headless-checkout/raw-data-manager/configure"},{"title":"getRequiredInputElementTypes","href":"/sdk/react-native/v2.x.x/primer-headless-checkout/raw-data-manager/getRequiredInputElementTypes"},{"title":"setRawData","href":"/sdk/react-native/v2.x.x/primer-headless-checkout/raw-data-manager/setRawData"},{"title":"submit","href":"/sdk/react-native/v2.x.x/primer-headless-checkout/raw-data-manager/submit"},{"title":"cleanUp","href":"/sdk/react-native/v2.x.x/primer-headless-checkout/raw-data-manager/cleanup"}]},{"group":"Component with redirect manager","pages":[{"title":"constructor","href":"/sdk/react-native/v2.x.x/primer-headless-checkout/component-with-redirect-manager/constructor"},{"title":"provide","href":"/sdk/react-native/v2.x.x/primer-headless-checkout/component-with-redirect-manager/provide"}]},{"group":"Klarna headless manager","pages":[{"title":"constructor","href":"/sdk/react-native/v2.x.x/primer-headless-checkout/klarna-headless-manager/constructor"},{"title":"provide","href":"/sdk/react-native/v2.x.x/primer-headless-checkout/klarna-headless-manager/provide"}]},{"group":"ACH headless manager","pages":[{"title":"constructor","href":"/sdk/react-native/v2.x.x/primer-headless-checkout/ach-headless-manager/constructor"},{"title":"provide","href":"/sdk/react-native/v2.x.x/primer-headless-checkout/ach-headless-manager/provide"}]},{"group":"Vault manager","pages":[{"title":"configure","href":"/sdk/react-native/v2.x.x/primer-headless-checkout/vault-manager/configure"},{"title":"fetchVaultedPaymentMethods","href":"/sdk/react-native/v2.x.x/primer-headless-checkout/vault-manager/fetchVaultedPaymentMethods"},{"title":"deleteVaultedPaymentMethod","href":"/sdk/react-native/v2.x.x/primer-headless-checkout/vault-manager/deleteVaultedPaymentMethod"},{"title":"validate","href":"/sdk/react-native/v2.x.x/primer-headless-checkout/vault-manager/validate"},{"title":"startPaymentFlow","href":"/sdk/react-native/v2.x.x/primer-headless-checkout/vault-manager/startPaymentFlow"}]}]},{"group":"Common objects","pages":[{"title":"PrimerSettings","href":"/sdk/react-native/v2.x.x/common-objects/PrimerSettings"},{"title":"PrimerCheckoutData","href":"/sdk/react-native/v2.x.x/common-objects/PrimerCheckoutData"},{"title":"PrimerPaymentMethodTokenData","href":"/sdk/react-native/v2.x.x/common-objects/PrimerPaymentMethodTokenData"},{"title":"PrimerError","href":"/sdk/react-native/v2.x.x/common-objects/PrimerError"}]}]}]}]},{"anchor":"Legacy SDKs","icon":"clock-rotate-left","groups":[{"group":"Web SDK (v2.x.x)","pages":[{"group":"Getting started","pages":[{"title":"Web installation","sidebarTitle":"Installation","href":"/sdk/web/v2.x.x/installation"},{"title":"Handle redirects \u0026 deep links","sidebarTitle":"Handle redirects \u0026 deep links","href":"/sdk/web/v2.x.x/handle-redirects-and-deeplinks"}]},{"group":"Primer","pages":[{"group":"Methods","pages":[{"title":"showUniversalCheckout","href":"/sdk/web/v2.x.x/primer/methods/showUniversalCheckout"},{"title":"createHeadless","href":"/sdk/web/v2.x.x/primer/methods/createHeadless"},{"title":"showVaultManager","href":"/sdk/web/v2.x.x/primer/methods/showVaultManager"}]}]},{"group":"PrimerCheckout","pages":[{"title":"Overview","sidebarTitle":"Overview","href":"/sdk/web/v2.x.x/primer-checkout/overview"},{"group":"Methods","pages":[{"title":"refreshClientSession","href":"/sdk/web/v2.x.x/primer-checkout/methods/refreshClientSession"},{"title":"setPaymentCreationEnabled","href":"/sdk/web/v2.x.x/primer-checkout/methods/setPaymentCreationEnabled"},{"title":"setTokenizationEnabled","href":"/sdk/web/v2.x.x/primer-checkout/methods/setTokenizationEnabled"},{"title":"submit","href":"/sdk/web/v2.x.x/primer-checkout/methods/submit"},{"title":"teardown","href":"/sdk/web/v2.x.x/primer-checkout/methods/teardown"}]}]},{"group":"PrimerHeadlessCheckout","pages":[{"group":"Methods","pages":[{"title":"start","href":"/sdk/web/v2.x.x/primer-headless-checkout/methods/start"},{"title":"refreshClientSession","href":"/sdk/web/v2.x.x/primer-headless-checkout/methods/refreshClientSession"},{"title":"createPaymentMethodManager","href":"/sdk/web/v2.x.x/primer-headless-checkout/methods/createPaymentMethodManager"},{"title":"getAssetsManager","href":"/sdk/web/v2.x.x/primer-headless-checkout/methods/getAssetsManager"},{"title":"createVaultManager","href":"/sdk/web/v2.x.x/primer-headless-checkout/methods/createVaultManager"},{"title":"configure","href":"/sdk/web/v2.x.x/primer-headless-checkout/methods/configure"}]},{"group":"Types","pages":[{"title":"HeadlessHostedInput","href":"/sdk/web/v2.x.x/primer-headless-checkout/types/HeadlessHostedInput"},{"title":"HeadlessPaymentMethodButton","href":"/sdk/web/v2.x.x/primer-headless-checkout/types/HeadlessPaymentMethodButton"}]}]},{"group":"CheckoutStyle","pages":[{"title":"Overview","sidebarTitle":"Overview","href":"/sdk/web/v2.x.x/checkout-style/Overview"},{"title":"InputStyle","href":"/sdk/web/v2.x.x/checkout-style/InputStyle"},{"title":"BaseInputStyle","href":"/sdk/web/v2.x.x/checkout-style/BaseInputStyle"},{"title":"TextStyle","href":"/sdk/web/v2.x.x/checkout-style/TextStyle"},{"title":"SavedPaymentMethodButtonStyle","href":"/sdk/web/v2.x.x/checkout-style/SavedPaymentMethodButtonStyle"},{"title":"BaseSavedPaymentMethodButtonStyle","href":"/sdk/web/v2.x.x/checkout-style/BaseSavedPaymentMethodButtonStyle"},{"title":"SubmitButtonStyle","href":"/sdk/web/v2.x.x/checkout-style/SubmitButtonStyle"},{"title":"BaseSubmitButtonStyle","href":"/sdk/web/v2.x.x/checkout-style/BaseSubmitButtonStyle"}]},{"group":"Common objects","pages":[{"title":"PrimerClientError","href":"/sdk/web/v2.x.x/common-objects/PrimerClientError"}]},{"group":"Constants","pages":[{"title":"Card networks","sidebarTitle":"Card networks","href":"/sdk/web/v2.x.x/constants/card-networks"},{"title":"Payment method types","sidebarTitle":"Payment method types","href":"/sdk/web/v2.x.x/constants/payment-method-types"},{"title":"Payment instrument types","sidebarTitle":"Payment instrument types","href":"/sdk/web/v2.x.x/constants/payment-instrument-types"}]}]},{"group":"iOS SDK (v2.x.x)","pages":[{"group":"Getting started","pages":[{"title":"iOS installation","sidebarTitle":"Installation","href":"/sdk/ios/v2.x.x/installation"},{"title":"Handle redirects \u0026 deep links","sidebarTitle":"Handle redirects \u0026 deep links","href":"/sdk/ios/v2.x.x/handle-redirects-and-deeplinks"}]},{"group":"Primer","pages":[{"group":"Methods","pages":[{"title":"configure","href":"/sdk/ios/v2.x.x/primer/methods/configure"},{"title":"showUniversalCheckout","href":"/sdk/ios/v2.x.x/primer/methods/showUniversalCheckout"},{"title":"showVaultManager","href":"/sdk/ios/v2.x.x/primer/methods/showVaultManager"},{"title":"dismiss","href":"/sdk/ios/v2.x.x/primer/methods/dismiss"}]},{"group":"Delegates","pages":[{"title":"PrimerDelegate","href":"/sdk/ios/v2.x.x/primer/delegates/PrimerDelegate"}]},{"group":"Properties","pages":[{"title":"logger","href":"/sdk/ios/v2.x.x/primer/properties/logger"}]}]},{"group":"PrimerHeadlessUniversalCheckout","pages":[{"group":"Properties","pages":[{"title":"delegate","href":"/sdk/ios/v2.x.x/primer-headless-checkout/properties/delegate"}]},{"group":"Methods","pages":[{"title":"start","href":"/sdk/ios/v2.x.x/primer-headless-checkout/methods/start"},{"title":"cleanUp","href":"/sdk/ios/v2.x.x/primer-headless-checkout/methods/cleanUp"}]},{"group":"Delegates","pages":[{"title":"PrimerHeadlessUniversalCheckoutDelegate","href":"/sdk/ios/v2.x.x/primer-headless-checkout/delegates/PrimerHeadlessUniversalCheckoutDelegate"},{"title":"PrimerHeadlessUniversalCheckoutUIDelegate","href":"/sdk/ios/v2.x.x/primer-headless-checkout/delegates/PrimerHeadlessUniversalCheckoutUIDelegate"}]},{"group":"Assets manager","pages":[{"title":"getPaymentMethodAssets","href":"/sdk/ios/v2.x.x/primer-headless-checkout/assets-manager/getPaymentMethodAssets"},{"title":"getPaymentMethodAsset","href":"/sdk/ios/v2.x.x/primer-headless-checkout/assets-manager/getPaymentMethodAsset"},{"title":"getCardNetworkAsset","href":"/sdk/ios/v2.x.x/primer-headless-checkout/assets-manager/getCardNetworkAsset"},{"title":"getCardNetworkImage","href":"/sdk/ios/v2.x.x/primer-headless-checkout/assets-manager/getCardNetworkImage"}]},{"group":"Native UI manager","pages":[{"title":"init","href":"/sdk/ios/v2.x.x/primer-headless-checkout/native-ui-manager/init"},{"title":"showPaymentMethod","href":"/sdk/ios/v2.x.x/primer-headless-checkout/native-ui-manager/showPaymentMethod"}]},{"group":"Raw data manager","pages":[{"title":"delegate","href":"/sdk/ios/v2.x.x/primer-headless-checkout/raw-data-manager/delegate"},{"title":"init","href":"/sdk/ios/v2.x.x/primer-headless-checkout/raw-data-manager/init"},{"title":"configure","href":"/sdk/ios/v2.x.x/primer-headless-checkout/raw-data-manager/configure"},{"title":"listRequiredInputElementTypes","href":"/sdk/ios/v2.x.x/primer-headless-checkout/raw-data-manager/listRequiredInputElementTypes"},{"title":"submit","href":"/sdk/ios/v2.x.x/primer-headless-checkout/raw-data-manager/submit"}]},{"group":"Raw data manager delegate","pages":[{"title":"PrimerHeadlessUniversalCheckoutRawDataManagerDelegate","href":"/sdk/ios/v2.x.x/primer-headless-checkout/raw-data-manager-delegate/PrimerHeadlessUniversalCheckoutRawDataManagerDelegate"}]},{"group":"NOL pay manager","pages":[{"title":"init","href":"/sdk/ios/v2.x.x/primer-headless-checkout/nol-pay-manager/init"},{"title":"provideNolPayLinkedCardsComponent","href":"/sdk/ios/v2.x.x/primer-headless-checkout/nol-pay-manager/provideNolPayLinkedCardsComponent"},{"title":"provideNolPayLinkCardComponent","href":"/sdk/ios/v2.x.x/primer-headless-checkout/nol-pay-manager/provideNolPayLinkCardComponent"},{"title":"provideNolPayUnlinkCardComponent","href":"/sdk/ios/v2.x.x/primer-headless-checkout/nol-pay-manager/provideNolPayUnlinkCardComponent"},{"title":"provideNolPayPaymentComponent","href":"/sdk/ios/v2.x.x/primer-headless-checkout/nol-pay-manager/provideNolPayPaymentComponent"},{"title":"PrimerNolPaymentCard","href":"/sdk/ios/v2.x.x/primer-headless-checkout/nol-pay-manager/PrimerNolPaymentCard"}]},{"group":"Component with redirect manager","pages":[{"title":"init","href":"/sdk/ios/v2.x.x/primer-headless-checkout/component-with-redirect-manager/init"},{"title":"provide","href":"/sdk/ios/v2.x.x/primer-headless-checkout/component-with-redirect-manager/provide"},{"title":"provideBanksComponent","href":"/sdk/ios/v2.x.x/primer-headless-checkout/component-with-redirect-manager/provideBanksComponent"},{"title":"provideComponent","href":"/sdk/ios/v2.x.x/primer-headless-checkout/component-with-redirect-manager/provideComponent"},{"title":"PrimerHeadlessMainComponent","href":"/sdk/ios/v2.x.x/primer-headless-checkout/component-with-redirect-manager/PrimerHeadlessMainComponent"}]},{"group":"Klarna headless manager","pages":[{"title":"init","href":"/sdk/ios/v2.x.x/primer-headless-checkout/klarna-headless-manager/init"},{"title":"provideKlarnaComponent","href":"/sdk/ios/v2.x.x/primer-headless-checkout/klarna-headless-manager/provideKlarnaComponent"}]},{"group":"ACH headless manager","pages":[{"title":"init","href":"/sdk/ios/v2.x.x/primer-headless-checkout/ach-headless-manager/init"},{"title":"provide","href":"/sdk/ios/v2.x.x/primer-headless-checkout/ach-headless-manager/provide"}]},{"group":"Vault manager","pages":[{"title":"init","href":"/sdk/ios/v2.x.x/primer-headless-checkout/vault-manager/init"},{"title":"configure","href":"/sdk/ios/v2.x.x/primer-headless-checkout/vault-manager/configure"},{"title":"fetchVaultedPaymentMethods","href":"/sdk/ios/v2.x.x/primer-headless-checkout/vault-manager/fetchVaultedPaymentMethods"},{"title":"deleteVaultedPaymentMethod","href":"/sdk/ios/v2.x.x/primer-headless-checkout/vault-manager/deleteVaultedPaymentMethod"},{"title":"validate","href":"/sdk/ios/v2.x.x/primer-headless-checkout/vault-manager/validate"},{"title":"startPaymentFlow","href":"/sdk/ios/v2.x.x/primer-headless-checkout/vault-manager/startPaymentFlow"}]}]},{"group":"Common objects","pages":[{"title":"PrimerSessionIntent","href":"/sdk/ios/v2.x.x/common-objects/PrimerSessionIntent"},{"title":"PrimerSettings","href":"/sdk/ios/v2.x.x/common-objects/PrimerSettings"},{"title":"PrimerPaymentMethodTokenData","href":"/sdk/ios/v2.x.x/common-objects/PrimerPaymentMethodTokenData"},{"title":"PaymentMethod","href":"/sdk/ios/v2.x.x/common-objects/PaymentMethod"},{"title":"PrimerError","href":"/sdk/ios/v2.x.x/common-objects/PrimerError"},{"title":"PrimerValidationError","href":"/sdk/ios/v2.x.x/common-objects/PrimerValidationError"}]}]},{"group":"Android SDK (v2.x.x)","pages":[{"title":"Android installation","sidebarTitle":"Installation","href":"/sdk/android/v2.x.x/installation"},{"group":"Primer","pages":[{"group":"Methods","pages":[{"title":"configure","href":"/sdk/android/v2.x.x/primer/methods/configure"},{"title":"showUniversalCheckout","href":"/sdk/android/v2.x.x/primer/methods/showUniversalCheckout"},{"title":"showVaultManager","href":"/sdk/android/v2.x.x/primer/methods/showVaultManager"},{"title":"showPaymentMethod","href":"/sdk/android/v2.x.x/primer/methods/showPaymentMethod"},{"title":"dismiss","href":"/sdk/android/v2.x.x/primer/methods/dismiss"},{"title":"cleanup","href":"/sdk/android/v2.x.x/primer/methods/cleanup"}]},{"group":"Listeners","pages":[{"title":"PrimerCheckoutListener","href":"/sdk/android/v2.x.x/primer/listeners/PrimerCheckoutListener"}]}]},{"group":"PrimerHeadlessUniversalCheckout","pages":[{"group":"Methods","pages":[{"title":"start","href":"/sdk/android/v2.x.x/primer-headless-checkout/methods/start"},{"title":"setCheckoutListener","href":"/sdk/android/v2.x.x/primer-headless-checkout/methods/setCheckoutListener"},{"title":"setCheckoutUiListener","href":"/sdk/android/v2.x.x/primer-headless-checkout/methods/setCheckoutUiListener"},{"title":"cleanup","href":"/sdk/android/v2.x.x/primer-headless-checkout/methods/cleanup"}]},{"group":"Listeners","pages":[{"title":"PrimerHeadlessUniversalCheckoutListener","href":"/sdk/android/v2.x.x/primer-headless-checkout/listeners/PrimerHeadlessUniversalCheckoutListener"},{"title":"PrimerHeadlessUniversalCheckoutUiListener","href":"/sdk/android/v2.x.x/primer-headless-checkout/listeners/PrimerHeadlessUniversalCheckoutUiListener"}]},{"group":"Assets Managers","pages":[{"title":"getPaymentMethodResources","href":"/sdk/android/v2.x.x/primer-headless-checkout/assets-managers/getPaymentMethodResources"},{"title":"getPaymentMethodResource","href":"/sdk/android/v2.x.x/primer-headless-checkout/assets-managers/getPaymentMethodResource"},{"title":"getPaymentMethodAssets","href":"/sdk/android/v2.x.x/primer-headless-checkout/assets-managers/getPaymentMethodAssets"},{"title":"getPaymentMethodAsset","href":"/sdk/android/v2.x.x/primer-headless-checkout/assets-managers/getPaymentMethodAsset"},{"title":"getCardNetworkAsset","href":"/sdk/android/v2.x.x/primer-headless-checkout/assets-managers/getCardNetworkAsset"},{"title":"getCardNetworkImage","href":"/sdk/android/v2.x.x/primer-headless-checkout/assets-managers/getCardNetworkImage"}]},{"group":"Native UI manager","pages":[{"title":"newInstance","href":"/sdk/android/v2.x.x/primer-headless-checkout/native-ui-manager/newInstance"},{"title":"showPaymentMethod","href":"/sdk/android/v2.x.x/primer-headless-checkout/native-ui-manager/showPaymentMethod"}]},{"group":"Raw Data manager","pages":[{"title":"newInstance","href":"/sdk/android/v2.x.x/primer-headless-checkout/raw-data-manager/newInstance"},{"title":"configure","href":"/sdk/android/v2.x.x/primer-headless-checkout/raw-data-manager/configure"},{"title":"getRequiredInputElementTypes","href":"/sdk/android/v2.x.x/primer-headless-checkout/raw-data-manager/getRequiredInputElementTypes"},{"title":"setListener","href":"/sdk/android/v2.x.x/primer-headless-checkout/raw-data-manager/setListener"},{"title":"setRawData","href":"/sdk/android/v2.x.x/primer-headless-checkout/raw-data-manager/setRawData"},{"title":"submit","href":"/sdk/android/v2.x.x/primer-headless-checkout/raw-data-manager/submit"},{"title":"cleanup","href":"/sdk/android/v2.x.x/primer-headless-checkout/raw-data-manager/cleanup"}]},{"group":"Raw Data Manager Listener","pages":[{"title":"PrimerHeadlessUniversalCheckoutRawDataManagerListener","href":"/sdk/android/v2.x.x/primer-headless-checkout/raw-data-manager-listener/PrimerHeadlessUniversalCheckoutRawDataManagerListener"}]},{"group":"NOL Pay manager","pages":[{"title":"init","href":"/sdk/android/v2.x.x/primer-headless-checkout/nol-pay-manager/init"},{"title":"provideNolPayLinkedCardsComponent","href":"/sdk/android/v2.x.x/primer-headless-checkout/nol-pay-manager/provideNolPayLinkedCardsComponent"},{"title":"provideNolPayNfcComponent","href":"/sdk/android/v2.x.x/primer-headless-checkout/nol-pay-manager/provideNolPayNfcComponent"},{"title":"provideNolPayLinkCardComponent","href":"/sdk/android/v2.x.x/primer-headless-checkout/nol-pay-manager/provideNolPayLinkCardComponent"},{"title":"provideNolPayUnlinkCardComponent","href":"/sdk/android/v2.x.x/primer-headless-checkout/nol-pay-manager/provideNolPayUnlinkCardComponent"},{"title":"provideNolPayPaymentComponent","sidebarTitle":"Provide nol Pay Payment Component","href":"/sdk/android/v2.x.x/primer-headless-checkout/nol-pay-manager/provideNolPayPaymentComponent"}]},{"group":"Component With Redirect manager","pages":[{"title":"init","href":"/sdk/android/v2.x.x/primer-headless-checkout/component-with-redirect-manager/init"},{"title":"provide","href":"/sdk/android/v2.x.x/primer-headless-checkout/component-with-redirect-manager/provide"}]},{"group":"Klarna Headless manager","pages":[{"title":"init","href":"/sdk/android/v2.x.x/primer-headless-checkout/klarna-headless-manager/init"},{"title":"provideKlarnaComponent","href":"/sdk/android/v2.x.x/primer-headless-checkout/klarna-headless-manager/provideKlarnaComponent"}]},{"group":"ACH Headless manager","pages":[{"title":"init","href":"/sdk/android/v2.x.x/primer-headless-checkout/ach-headless-manager/init"},{"title":"provide","href":"/sdk/android/v2.x.x/primer-headless-checkout/ach-headless-manager/provide"}]},{"group":"Vault manager","pages":[{"title":"newInstance","href":"/sdk/android/v2.x.x/primer-headless-checkout/vault-manager/newInstance"},{"title":"fetchVaultedPaymentMethods","href":"/sdk/android/v2.x.x/primer-headless-checkout/vault-manager/fetchVaultedPaymentMethods"},{"title":"deleteVaultedPaymentMethod","href":"/sdk/android/v2.x.x/primer-headless-checkout/vault-manager/deleteVaultedPaymentMethod"},{"title":"validate","href":"/sdk/android/v2.x.x/primer-headless-checkout/vault-manager/validate"},{"title":"startPaymentFlow","href":"/sdk/android/v2.x.x/primer-headless-checkout/vault-manager/startPaymentFlow"}]}]},{"group":"Logging","pages":[{"title":"PrimerLogger","href":"/sdk/android/v2.x.x/logging/PrimerLogger"}]},{"group":"Common objects","pages":[{"title":"PrimerSessionIntent","href":"/sdk/android/v2.x.x/common-objects/PrimerSessionIntent"},{"title":"PrimerSettings","href":"/sdk/android/v2.x.x/common-objects/PrimerSettings"},{"title":"PrimerCheckoutData","href":"/sdk/android/v2.x.x/common-objects/PrimerCheckoutData"},{"title":"PrimerPaymentMethodData","href":"/sdk/android/v2.x.x/common-objects/PrimerPaymentMethodData"},{"title":"PrimerPaymentMethodTokenData","href":"/sdk/android/v2.x.x/common-objects/PrimerPaymentMethodTokenData"},{"title":"PrimerError","href":"/sdk/android/v2.x.x/common-objects/PrimerError"},{"title":"PrimerValidationError","href":"/sdk/android/v2.x.x/common-objects/PrimerValidationError"},{"title":"PrimerInputValidationError","href":"/sdk/android/v2.x.x/common-objects/PrimerInputValidationError"}]}]}]},{"anchor":"Lifecycle","icon":"clock","groups":[{"group":"Lifecycle","pages":[{"title":"SDK lifecycle","sidebarTitle":"Overview","href":"/sdk/lifecycle"}]}]}]},{"tab":"Connections","pages":[{"title":"Connections","href":"/connections/processors/overview"}]},{"tab":"Changelogs","groups":[{"group":"API changelogs","pages":[{"title":"API Changelog","sidebarTitle":"API Changelog","href":"/changelogs/api-changelog"}]},{"group":"SDK changelogs","pages":[{"group":"Web","icon":"globe","pages":[{"title":"Web SDK changelogs","sidebarTitle":"Overview","icon":"list","href":"/changelogs/web"},{"title":"Primer checkout SDK","sidebarTitle":"Primer checkout SDK","icon":"sparkles","href":"/changelogs/primer-checkout-sdk"},{"title":"Web SDK","sidebarTitle":"Web SDK","icon":"code","href":"/changelogs/web-sdk"}]},{"group":"Mobile","icon":"mobile","pages":[{"title":"iOS SDK","sidebarTitle":"iOS SDK","icon":"apple","href":"/changelogs/ios-sdk"},{"title":"Android SDK","sidebarTitle":"Android SDK","icon":"android","description":null,"href":"/changelogs/android-sdk"},{"title":"React Native SDK","sidebarTitle":"React Native SDK","icon":"react","href":"/changelogs/react-native-sdk"}]}]},{"group":"Migration guides","pages":[{"title":"Token migration","description":null,"href":"/changelogs/migration-guides/token-migration"},{"title":"Token export","href":"/changelogs/migration-guides/token-export"},{"title":"API v2.3 to v2.4","sidebarTitle":"API v2.3 to v2.4","href":"/changelogs/migration-guides/API-2.3-to-2.4"},{"title":"Payment Status Webhooks","sidebarTitle":"Payment status webhooks","href":"/changelogs/migration-guides/payment-status-webhooks"},{"title":"Headless mobile v2.16 to v2.17","href":"/changelogs/migration-guides/headless-mobile-out-of-beta"},{"title":"Migrating from v0 to v1","sidebarTitle":"Primer Checkout - migrating from v0 to v1","href":"/changelogs/migration-guides/primer-js-v0-to-v1"},{"title":"Migrate to Primer Checkout","sidebarTitle":"Migrate to Primer Checkout","href":"/changelogs/migration-guides/migrate-to-primer-checkout"},{"title":"Migrate the manual flow to Primer Checkout","sidebarTitle":"Legacy manual flow → Primer Checkout manual flow","href":"/changelogs/migration-guides/manual-flow"}]}]}]},"basePath":"","title":"React Native SDK - Primer","buildId":"dpl_ATnXPMW25DMPUr9VBw6kL6MfBt6T","deploymentId":"dpl_ATnXPMW25DMPUr9VBw6kL6MfBt6T","dynamics":["07c022d89b","a74be98ba7","a9bb46feb3"],"chunks":["Frame-BDAj7nBh.js","DynamicMarkdown-Bq09mRwR.js","zoom-image-lightbox-CypZe82l.js","lightbox-handle-r17bVUz3.js","Markdown-BTUds0aX.js","clsx-6wHzaN2_.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-BPypQKlo.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-o6bee4ro.js"]}