Some payment methods are now hidden when this SDK version, your SDK options or the shopper’s device can’t support them. If a payment method you enabled doesn’t show up, check the browser console for a warning.
Some payment methods now load faster.
🔧 Fixes
Universal Checkout no longer creates a payment on a client session created with approvalMode: "MANUAL". Submitting a payment method on such a session now calls onCheckoutFail with PAYMENT_CREATION_ABORTED, and the SDK logs the reason to the console. Universal Checkout has no approval step. Use Primer Checkout for manual payment approval, or create the client session without approvalMode: "MANUAL". The paymentHandling: "MANUAL" option is not affected.
Co-badged cards now list the networks that the client session allows before the excluded networks. onBinDataAvailable no longer reports an excluded network as preferred, and detectedCardNetworks.items starts with an allowed network.
3DS challenge iframes now allow passkeys. Universal Checkout, Headless, and processor-initiated 3DS challenges set allow="payment *; publickey-credentials-get *; publickey-credentials-create *" on the challenge iframe, so an issuer’s ACS page that offers a passkey no longer fails with a NotAllowedError. If you render your own 3DS challenge dialog, set the same allow value on your iframe.
Fixed the Apple Pay payment sheet showing “0 months” for a trial period. The SDK now sends recurringStartDate, recurringIntervalUnit and recurringIntervalCount from recurringPaymentRequest.trialBilling to Apple Pay, so a 3-day trial reads “3 days”. See the Apple Pay API reference.
Fixed a RangeError: Invalid Date that prevented the Apple Pay sheet from opening when recurringPaymentRequest.regularBilling.recurringStartDate was omitted. The field is optional, and the sheet now shows “Starting Now”.
Fixed an Apple Pay billing amount of 0 falling back to the order amount on the payment sheet. The fallback now applies only when amount is omitted, across the regular, trial, deferred and automatic reload billing options.
Improved browser detection so that redirect payment methods correctly fall back to a full-page redirect instead of opening a popup in environments where popups are unreliable, such as in-app browsers.
✨ Improvements
Internal security, performance, and stability improvements.
Fixed an issue where the vaulted payment methods list was not filtering out cards that are not included in the orderedAllowedCardNetworks configuration.
Headless Checkout: Added onBinDataAvailable callback to the card payment method manager. This new callback provides card network detection along with rich BIN data including issuer information, account funding type, and card attributes. Replaces the deprecated onCardNetworksChange callback.
Headless Checkout: Added onBinDataLoadingChange callback to indicate when BIN data is being fetched. Replaces the deprecated onCardNetworksLoading callback.
Google Pay: Added existingPaymentMethodRequired property. If true, the SDK will check if IsReadyToPayResponse.paymentMethodPresent is also true before rendering the Google Pay Button.
Fix Google Pay OR_BIBED_06 Error for Currencies that has 3 minor units: Resolved an issue where Google Pay transactions were failing with error code OR_BIBED_06 for currencies that have 3 minor units (e.g., KWD, BHD, JOD). The issue occurred because amounts were being sent to Google Pay with three minor units instead of two, which is the maximum precision Google Pay supports.
Fixed intermittent race condition on 3DS: Fixed a rare race condition on 3DS methods that could cause communication between ACS provider to be cancelled prematurely, resulting in failed 3DS authentications. This fix ensures that the SDK waits for the ACS provider to respond before moving ahead with UI cleanup.
Fixed currency display formatting for IDR and RSD: Fixed an issue where Indonesian Rupiah (IDR) and Serbian Dinar (RSD) amounts were displayed incorrectly in payment forms and checkout screens. The displayed amounts showed incorrect decimal values, though the actual payment processing and charged amounts were always correct. Users will now see properly formatted amounts for these currencies throughout the checkout experience.
Headless SDK locale support for translations: Enhanced locale support with comprehensive translation capabilities when setting locale in headless SDK options. The SDK now provides localized text for redirect payment method popups and error messages, allowing merchants to rely on built-in translations instead of providing their own localized error messages.
Headless SDK locale parameter support: Fixed locale parameter support for redirect payment methods URLs. When locale is set in headless SDK options, it will now be properly included in redirect payment method URLs, resolving localization issues with payment methods like Alma and others that use locale-based URL routing. The SDK also automatically determines the appropriate locale from user system settings when no explicit locale is configured.
Breaking Change: This version removes support for legacy API versions. The SDK now requires API version 2.4 or later.
⚠️ Legacy API Option RemovedThe legacy option for options.apiVersion has been removed. The SDK now exclusively uses API version 2.4.Since version 2.52.0 (released 2025-03-25), the SDK has defaulted to API version 2.4 with an option to use legacy for backward compatibility. This fallback option is now removed.If you were using the legacy setting:
Ensure your backend integration supports API version 2.4
Remove any apiVersion: "legacy" configuration from your SDK initialization
Review the Migration Guide for detailed upgrade instructions
Card form submit button: Fixed an issue where the submit button remained disabled after failed or declined transactions when using card.preferredFlow: "DEDICATED_SCENE" mode. The button now correctly re-enables to allow payment retry attempts.
Stripe ACH payment information: Resolved an issue where Stripe ACH transactions were not returning payment information in the onCheckoutComplete callback. Payment details are now properly included in the callback response.
Apple Pay deferred payment request: freeCancellationDate and freeCancellationTimeZone are optional, but they must either both be provided or both be omitted.
Apple Pay iframe support: Added merchantDomain option for Apple Pay when rendered within an iframe. This optional string parameter allows setting the top window domain for proper Apple Pay functionality in iframe contexts. See our documentation for more info.
🔧 Fixes
Fixed Google Pay line item amount formatting
Fixed cardholder name required and visible toggle functionality
🚀 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.
🚀 New feature• Improved TypeScript typings for vaulted payment methodsThis release enhances the type safety of vaulted payment methods by refining our TypeScript definitions. These changes enforce stricter typing, which may surface TypeScript errors in projects that previously relied on loosely typed vaulted items.
⚠️ Note: There are no changes to the runtime or processing logic—only TypeScript type definitions have been updated.
⚠️ Note: This version has been removed due to a minor display bug affecting the rendering of vaulted Stripe ACH items. If you’ve installed this version, we recommend upgrading to 2.53.1.
🔧 FixesWe’ve released a fix for Klarna payment method and added a missing onPaymentMethodAction callback. Now PAYMENT_METHOD_SELECTED and PAYMENT_METHOD_UNSELECTED events are triggered.
The SDK will now default to using Api version 2.4 when initialised. It is possible to use the previous defaults by setting legacy via options.apiVersion. For more information see our SDK reference, Api Reference and Migration Guides.
🔧 Fixes
Surcharge information will not be displayed next to the card form when no surcharge is applied; the card form will not be automatically hidden when the surcharge is applied - use SDK Options to hide the card form if needed.
Fixed a bug in the Klarna session update flow, which may cause validation failures when the Klarna session is triggered and potentially prevent the session from updating correctly.
This version contains a bug in the Klarna session update flow, which may cause validation failures when the Klarna session is triggered and potentially prevent the session from updating correctly. Please use at least version 2.51.0
This version contains a bug in ApplePay integration, which may cause session failures when a billing address is required. Please use at least version 2.51.0
🔧 Fixes
Fixed Google Pay OR_BIBED_15 error where the payment popup failed to open due to a network request. The popup is now triggered immediately upon clicking the Google Pay button, ensuring compliance with browser restrictions on user-initiated popups. As a result, any updates to the client session must now be refreshed manually in the SDK by calling refreshClientSession.
This version contains a bug in the Klarna session update flow, which may cause validation failures when the Klarna session is triggered and potentially prevent the session from updating correctly. Please use at least version 2.51.0
This version contains a bug in ApplePay integration, which may cause session failures when a billing address is required. Please use at least version 2.51.0
Deprecations
Removed support for iDeal-V1 and the associated bank selector UI from the SDK. With iDeal-V2, users are now redirected to their own bank selector interface, making this functionality redundant. All existing integrations have been automatically migrated to iDeal-V2, requiring no further action from merchants.
This version contains a bug in the Klarna session update flow, which may cause validation failures when the Klarna session is triggered and potentially prevent the session from updating correctly. Please use at least version 2.51.0
This version contains a bug in ApplePay integration, which may cause session failures when a billing address is required. Please use at least version 2.51.0
🔧 Fixes
Addressed an error (undefined is not an object) occurring with Apple Pay transactions.
This version contains a bug in the Klarna session update flow, which may cause validation failures when the Klarna session is triggered and potentially prevent the session from updating correctly. Please use at least version 2.51.0
This version contains a bug in ApplePay integration, which may cause session failures when a billing address is required. Please use at least version 2.51.0
🔧 Fixes
Resolved an issue with the Klarna vaulting payment flow. Previously, the Klarna vaulting process was not operational due to missing properties. This fix ensures proper communication between the SDK, Primer and Klarna, enabling successful vaulting across all Klarna-supported payments.
This version contains a bug in ApplePay integration, which may cause session failures when a billing address is required. Please use at least version 2.51.0
🔧 Fixes
Fixed missing TypeScript types for StripeACH options on showUniversalCheckout options. This resolves issues where TypeScript users encountered type errors when configuring StripeACH payments.
This version contains a bug in ApplePay integration, which may cause session failures when a billing address is required. Please use at least version 2.51.0
🔧 Fixes
Fix double surcharge and top-level amount calculation for Google Pay
This version contains a bug in ApplePay integration, which may cause session failures when a billing address is required. Please use at least version 2.51.0
✨ Improvements
With this release, we introduce a new property, apiVersion:
This property allows you to modify which API the SDK will use internally. By default, the previous API state is selected, ensuring backward compatibility. The new APIs are used by opt-in.
To use our new API 2.4 functionalities, set the apiVersion to “2.4”.
This update enables you to migrate to API 2.4 gradually without disrupting your existing integrations.
This version contains a bug in ApplePay integration, which may cause session failures when a billing address is required. Please use at least version 2.51.0
Fixed an issue where onPaymentMethodAction wasn’t being triggered when closing a payment popup. In some specific instances, when a popup delegated payment method was closed before it fully completed its loading sequence, the SDK would fail to dispatch the relevant callbacks. This prevented merchants from constructing reliable logic for handling payment method actions.
This version contains a bug in ApplePay integration, which may cause session failures when a billing address is required. Please use at least version 2.51.0
🔧 Fixes
Cardholder Name now supports non-Latin characters correctly.
This version contains a bug in ApplePay integration, which may cause session failures when a billing address is required. Please use at least version 2.51.0
✨ Improvements
Removed two legacy SDK flows:
Single Payment Flow: A simplified one-payment view that hasn’t been used in production for over a year. Its removal simplifies the codebase, improves maintainability, and strengthens the overall logic.
Express Checkout: A legacy, unstable flow introduced in 2022, never officially released but present in TypeScript declarations and some code files. As we are not pursuing this approach further, all related code has been removed, simplifying the PayPal integration and client session logic.
Amount checks on Apple Pay and Google Pay—We removed a client-side check for these payment methods, as it was no longer needed. Passing value 0 enables some specific vaulting flows.
📢Experimentalas of 2.48.0 version, it is possible to opt-in to test Api v2.4(Beta). For more information, see our Api Reference and Migration Guides
This version contains a bug in ApplePay integration, which may cause session failures when a billing address is required. Please use at least version 2.51.0
✨ Improvements
This release introduced several updates to the dependencies used by the web SDK, primarily related to TypeScript type generation, linting, and build pipelines.
card-validator and credit-card-type, which are responsible for validating and recognizing cards client-side. Keeping these up to date ensures your clients won’t encounter issues with the card form.
@stripe/stripe-js, used to render the Stripe ACH payment form and its components.
We have also improved the overall code quality and ensured more reliable execution.
📢ExperimentalWith this version, it is possible to opt-in to test Api v2.4(Beta). For more information, see our Api Reference and Migration Guides
This version contains a bug in ApplePay integration, which may cause session failures when a billing address is required. Please use at least version 2.51.0
🚀 New featureStripe ACH Vaulting is now available ✨
We have added support for Vaulting for ACH via Stripe. ACH lets you accept payments from customers with a US bank account.
This version contains a bug in ApplePay integration, which may cause session failures when a billing address is required. Please use at least version 2.51.0
🔧 FixesWe’ve released a fix to prevent the Google Pay OR_BIBED_15 error from happening on the Firefox browser.
This version contains a bug in ApplePay integration, which may cause session failures when a billing address is required. Please use at least version 2.51.0
🔧 Fixes
Fixed the bug introduced in 2.46.0, which broke the localized error messages and displayed the error code in square brackets instead.
This version contains a bug in ApplePay integration, which may cause session failures when a billing address is required. Please use at least version 2.51.0
🔧 FixesThis release addresses a Google Pay display item label bug introduced in 2.46.1. We’ve implemented a fix to ensure that a default label is set if neither the fee type nor line item description is provided, preventing missing labels that cause Google Pay errors.For merchants using Google Pay, it is advisable to set both the line items description and fee type properties. For more details, please refer to the documentation:
This version contains a bug in ApplePay integration, which may cause session failures when a billing address is required. Please use at least version 2.51.0
This version has been deprecated due to the implementation of Google Pay. Please upgrade to 2.46.6
This version has been deprecated due to the implementation of Google Pay. Please upgrade to 2.46.6
✨ ImprovementsWe’ve updated Klarna’s branding to reflect the latest guidelines.You can now tailor the “Pay with” label on Klarna’s payment button using the buttonOptions property, enabling a more localized and relevant checkout experience based on your customers’ region and Klarna’s available payment methods. This feature is available for both direct Klarna integrations and through Adyen.🔧 Fixes
Klarna locale now defaults to en_US if the provided locale is not supported.
This version has been deprecated due to the implementation of Google Pay. Please upgrade to 2.46.6
🔧 FixesWe’ve ensured compatibility of the SDK with older versions of Safari. Our logs indicated crashes related to the unsupported BroadcastChannel API in Safari versions earlier than 15.4, and this patch addresses those issues.
✨ ImprovementsWe’ve rebuilt our internal error and log reporting system to enhance debugging and issue resolution for your customers. This update improves stability and performance by removing external dependencies and ensuring that all unexpected errors are captured and reported.Why Upgrade?
We’re able to address issues affecting your clients proactively.
Faster resolution of support escalation tickets, thanks to more detailed session analysis.
Continued improvements to the stability and performance of our SDK.
Fix for PayPal - remove the condition check in SDK that would break PayPal for merchants that are passing top level amount property in the create client session request
We have added support for ACH via Stripe. ACH lets you accept payments from customers with a US bank account.
ACH Direct Debit is a reusable, delayed notification payment method. It can take up to 4 business days to receive acknowledgment of success or failure.
This release includes one-off payments and cancellation and refund actions. We aim to add support for recurring payments in the future.
With just a few clicks through Primer, you can easily integrate ACH via Stripe into your payment stack. Visit the integrations section of the dashboard to learn more, or consult the direct integration guide.
✨ ImprovementsWe simplified the Headless Checkout public interface. The options can now be set directly in the second parameter of the createHeadless method. Please update your implementation by moving the options from the previous headless.configure method, which is now deprecated. Check the updated documentation for more details.Note: This is a necessary update if you want to set the clientSessionCachingEnabled flag to true.Client Session caching
It is now possible to cache the ClientSession configuration client-side, which can speed up certain flows in the SDK. This can be enabled via the clientSessionCachingEnabled flag, both Headless and Drop-in. 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 fixed an issue in AssetsManager.getPaymentMethod. Previously, the paymentMethodName parameter would return the recommended button text for a payment method, which could be null for many payment methods.
We have deprecated this parameter and added two new ones:
buttonText: This is the recommended button text, e.g., “Pay with Google Pay.” However, it may be null for certain Payment Methods.displayName: This is the payment method name. E.g., “Google Pay”. This should be available for all payment methods.From now on, please use these new parameters based on your use case. For more information, see our docs.
Suppress noisy logs for sessionStorage.setItem and navigator.sendBeacon when the browser does not support them, or they are disallowed by the user, or when they fail for any other reason
Prevents iframes from going opaque when the browser is set with a different color-scheme
Upgraded PayPal order creation to the latest server-driven PayPal SDK
We were using an old way of creating a PayPal order (via actions.order.create from PayPal’s JS SDK) that PayPal is deprecating in June 2024.
This version upgrades a PayPal payment method order creation using Orders v2 APIs and PayPal JavaScript SDK
We introduced a change in the metadata field that is passed when creating a client session. Previously orderId in the client session would be passed to PayPal as the custom\_id. Now you have to pass paypal_custom_id in the metadata.
Resolved an issue that caused low authorization rate with Apple Pay for certain processors such as Cybersource when the user’s billing address was missing either the first name or last name on their Apple Pay wallet.
If Apple Pay is configured to capture the billing address, users will now be prompted with an error message within Apple Pay’s sheet indicating that they need to fill out the missing first name or last name in their Apple Pay wallet in order to proceed with the payment.
Various internal improvements to enhance overall system stability and performance.
Fixed a regression bug introduced in v2.37.0 that showed an error “This merchant is having trouble accepting your payment right now. Try using a different payment method. [OR_BIBED_06] OR_BIBED_06” when the user selected Google Pay, preventing them from paying.
You should now be able to propose Google Pay seamlessly as before.
Our Klarna integration is now available on Headless Checkout on Web. Flows supported:
Pay now
Pay later: Pay in 30 days
Pay over time: Pay in 3-4 installments. First payment right away then the rest in installments (no interest)
Fair financing: Installment plans of 6, 12, 24, and 36 months with flexible payments (with interest)
The docs are available here and the Klarna Payment Manager reference is here.
Support for Klarna EMD
Klarna may request extra merchant data (EMD) based on the merchant segment or consumer services. This additional information helps Klarna enhance risk assessment and improve conversion rates.
You can now dynamically pass any relevant EMD package via the Client Session as described here. Available schemas are documented here
Fixed an issue with Klarna that caused the Klarna view to expand and then collapse when switching between payment categories.
Fixed an inconsistency in the input’s metadata for Headless Vault Manager CVV recapture. Developers can now rely on the “input.metadata.valid” property to be their source of truth when checking if the validations have passed.
Activate 3DS when cards are not configured in checkout builder.
This ensures that 3DS can be triggered even if only Google Pay or Apple Pay are presented.
🚀 New FeatureHeadless Vault ManagerAdd PrimerHeadlessCheckout.createVaultManager() which returns an instance of HeadlessVaultManager. It provides the following features:
🚀 New FeatureValidate cardholder nameAdd validation for cardholder name so that only Unicode Latin alphabet no.1 characters are allowed, which should improve 3DS pass rates.✨ Improvements
Change the “CVV” label to “Security code” in Japanese.
🔧 Fixes
Fix an issue that caused a crash when closing Adyen Klarna’s redirect popup window. The issue was introduced in 2.30.0.
Fix onPaymentMethodAction on Web not being triggered with Klarna.
🚀 New FeaturePopup windows fallback to redirectWhen popup windows are not supported - either because they were blocked by the browser, or one of its extensions/plugins, or any other reason - payment methods that would open them will instead redirect the current page.Read the guide on how to handle redirects in order to ensure maximum compatibility.
This is a fallback mechanism, when popup windows are supported they will continue to open as expected.
Fix a bug where the submit button was disabled when moving to another screen and coming back to the checkout home, while any vaulted payment method was present.
Enable the Apple pay button to work within a form tag
Fix an issue that caused onCheckoutFail to not be called when the payment ends up with a status and no required action. This could happen in the case of Atome when the user clicks “Back to merchant”
Fix a bug that caused the flag form.inputLabelsVisible to also hide surcharge labels
Improve surcharging support for PayPal when paypal.paymentFlow is set to PREFER_VAULT
✨ ImprovementsGoogle Pay now capture billing address information! 🥳Universal Checkout | Payment MethodsWhen initializing the checkout, you can now pass an additional setting to enforce billing address capture when your customers checkout with Google Pay.
Typescript
Primer.showUniversalCheckout(clientToken, { googlePay: { captureBillingAddress: true // defaults to false - not required } })
We recommend capturing the billing address via Google Pay if you’re processing Google Pay payment via Adyen. Alternatively, you can pass the billing address in the client session if you already posses it.
🔧 Fixes
Improve error handling when initializing the SDK
Fix a regression from 2.25.1 issue that raised a malformed client token bug when the user selects a redirect-based payment method
✨ ImprovementsThe SDK now speaks Chinese, Thai and Malay 🌐Universal Checkout | LocalesYour checkout can now display in any of the following new languages:
Mainland Chinese (simplified characters) zh-CN
Thai th
Malay ms
It also has partial support for:
Chinese from Hong-Kong zh-HK
Chinese from Taiwan zh-TW
Chinese card details
✨ ImprovementsUniversal Checkout | Payment methodsThis new version now forwards to Klarna all updates of the client session’s order.This enables you to display a checkout with Klarna right next to a cart view or a voucher field that can modify the amount.To implement this, make sure to call checkout.refreshClientSession()
Javascript
const checkout = await Primer.showUniversalCheckout(clientToken, options);// After you patched the client sessionawait checkout.refreshClientSession();
🔧 Fixes
Headless Checkout’s onAvailablePaymentMethodsLoad is now working properly
Improved the support for specific versions of Webpack (window is undefined error)
✨ ImprovementsLoad time improved by ~20% 🏃♂️Universal Checkout | PerformanceWe are on a journey to create the most performant checkout available out there 🚀Of course, this means reducing the time to load the SDK and present payment methods to your user 💪This new version brings a few internal changes to how the SDK is loaded that decreases the load time by about 20%!Known issuesHeadless Checkout’s onAvailablePaymentMethodsLoad is not working properly on this release. This has been addressed on v2.26.1.The validation of arguments passed to the main Primer functions is not working. This will be addressed in a new release. This has been addressed on v2.26.1
✨ ImprovementsAdd Processor 3DS to Headless CheckoutHeadless Checkout | Processor 3DSWhen a processor does not enable Primer to use their agnostic 3DS, Primer automatically falls back to using their proprietary 3DS when possible.This was already possible with the Drop-in Checkout - it is now supported by Headless Checkout! 🎉When Processor 3DS is requested, Headless Checkout automatically displays an in-context modal view with the 3DS challenge!
✨ Improvements#✨ Improvements to Google Pay!Universal Checkout | Payment methodGoogle Pay SDK has recently received a face lift that enables merchants to further customize the Google Pay button!Pass buttonSizeMode to the Google Pay options to define if the button should take the full size of the container, or if it should be static.
Supported values are fill and static
⚠️ This mechanism replaces the buttonType values short and long.
Pass buttonType to set what should be displayed on the Google Pay button.
buy (default)
book
checkout
donate
order
pay
plain
subscribe
Google Pay Buttons
JavaScript
Primer.showUniversalCheckout(clientToken, {/\* Other options \*/googlePay: {buttonSizeMode: 'fill',buttonType: 'subscribe'}});
🔧 Fixes
Fixed an issue with the sub-units of the currencies CRC, COP and HUF
✨ ImprovementsiDeal via Worldpay! 🥳Universal Checkout | Payment MethodsThis version introduces another iDeal integration method: this time with Worldpay 🎉
✨ ImprovementsBetter support for manager typesUniversal Checkout | Integration
This version introduces a breaking change for Headless Checkout beta
In the previous version, the callback onAvailablePaymentMethodTypes only returned a list of payment method strings. This made it difficult for developers to know how to implement each payment method.The new callback introduces the concept of managerType : each payment method has a managerType that describes which payment method manager to instantiate.This enables you to implement a whole payment method category in one go!
TypeScript
// Beforeheadless.configure({// Other optionsonAvailablePaymentMethodsLoad(paymentMethods) {// paymentMethods is a list of strings representing the unique id of the payment method}})// Nowheadless.configure({// Other optionsonAvailablePaymentMethodsLoad(paymentMethods) {// paymentMethods is a list of objects containing// - `type`: the unique id of the payment method// - `managerType`: the type of payment method manager. Can be `CARD`, `NATIVE`, or `REDIRECT`}})
Get access to the icons and names of payment methods on headlessUniversal Checkout | IntegrationFor most payment methods, you have full control over how the payment method should be presented. To assist you, Primer exposes the AssetsManager
that enables you to retrieve the logo and main colors attached to each payment method.
TypeScript
const assetsManager = headless.getAssetsManager()const { iconUrl, paymentMethodName, backgroundColor } = await assetsManager.getPaymentMethodAsset('ADYEN\_IDEAL') // ADYEN\_IDEAL comes from `paymentMethod.type`
Redirect payment methods are on Headless Checkout 🚀Universal Checkout | IntegrationSome payment methods require the user to be redirected to another web page to capture its payment details. Headless Checkout on Web now supports these types of payment methods👩💻Head over to the documentation to implement these payment methods!When the user selects the payment method, call the start function. This function automatically:
opens a popup to present a loading indicator, then the payment method web page
shows an overlay on top of your page that prompts the user to focus on the popup
You will now be able to rely on the onPaymentCreationStart callback to get notified before the checkout attempts to perform the following actions:
Tokenize the selected payment method
Create a payment
TypeScript
const checkout = await Primer.showUniversalCheckout(clientToken, {container: '#container',onPaymentCreationStart() {// will be called before tokenization and payment creation// will be followed by calls of either onCheckoutComplete// or onCheckoutFail},onCheckoutComplete({ payment }) {console.log('onCheckoutComplete', payment);},onCheckoutFail(error, { payment }, handler) {console.error('onCheckoutFail', error, payment);handler?.showErrorMessage(');},});
🔨 Fixed
Addressed bug which caused iframe events to not be fired with headless checkout implementation.
✨ ImprovementsApple Pay, Google Pay and PayPal are landing on Headless Checkout 🚀Universal Checkout | IntegrationHeadless Checkout on Web now supports Apple Pay, Google Pay and PayPal 👩💻With this new release, you can now ask Primer to display a button anywhere on the screen - and the SDK takes it from there!
✨ ImprovementsKlarna via Adyen! 🥳Universal Checkout | Payment MethodsYou will now be able to avail Klarna via Adyen for your customers. Klarna allows multiple payment options depending on the country in which the order is created.
Klarna
If Klarna via Adyen only provides a single payment type, no list will be displayed, but the Klarna button will display the available payment type.
🔨 Fixed
Fix bug where the card number input could not detect the AMEX card network type.
Addressed edge case where a payment is created with an empty card form, resulting in an error. In this case, onCheckoutFail will now be called.
✨ Improvements[BETA] Introducing Headless Checkout for complete customization! 🚀Universal Checkout | IntegrationUniversal Checkout on Web currently features an amazing drop-in UI that you can integrate with just a couple of lines of code 👩💻A few months ago, we introduced Headless Universal Checkout for mobile platforms, providing more flexibility and control over the checkout experience. Headless checkout has received positive adoption, so it’s time to bring this integration type to our Web SDK! 🎉From this version onward, in addition to the drop-in integration, Web SDK enables you to start a headless checkout integration 🚀
💳
The first supported payment method is debit / credit card.
Additional payment methods - including Google Pay, Apple Pay and PayPal - are coming throughout November ✌️
Why beta?
Headless Universal Checkout is based on the battle-tested Web SDK, so it’s ready for production!
We want to provide the simplest and smoothest developer experience, so the API may change in the near future!
What’s truly amazing is that headless checkout brings all the core Primer concepts that simplify your life as a developer 💪So the creation of client sessions, the handling of payments in a PCI-compliant way, and the configuration of checkout via the Dashboard without a line a code work exactly the same way as with the drop-in integration 🎉With Headless Universal Checkout: you just have to focus on the UI while we take care of the rest 👌
🧠We’re looking for feedback to improve Headless Universal Checkout!
Any thoughts to improve this feature?
Join our Discord server, interact with our engineers and receive amazing swag!
✨ ImprovementsBancontact Debit via Adyen 🏦Universal Checkout | Payment MethodsYour customers can now checkout with Bancontact Debit via Adyen using their bank card.
When your customer selects ‘Bancontact Pay with card’, they are then taken to a card form to enter their card details, where the CVV is not required.
✨ ImprovementsGift Card via PayNL KaartDirect! 🎁Universal Checkout | Payment MethodsYou will now be able to offer a tailored gift card payment method button to your customers via PayNL KaartDirect.
✨ ImprovementsDisable checkout autofocus! 👀Universal Checkout | CustomizationWhen initializing the checkout, you can now pass an additional setting within the style object which disables the checkout from autofocusing the first available payment method or card input field.EPS via Adyen 🏦Universal Checkout | Payment MethodsYour customers can now checkout with EPS via Adyen. This payment method exposes a list of banks which your customer can select to complete a payment with.
🔨 FixedAdd back support for onErrorMessageShow and onErrorMessageHide callbacks which notifies you of when to display your custom error message when using the manual payment flow.
Take a look at our checkout customization guide for more information on these callbacks.
The start of Server Driven Payment Methods! 👏To speed up the implementation of payment methods, we have begun building out a frontend framework so we don’t need to build the frontend of every new payment method we integrate with! Instead, we can leverage the framework and render the frontend using a preset configuration. This also means that merchants will no longer need to keep upgrading SDK versions to get access to new APMs.We have started this big project by rolling out this framework for Redirect APMs. So, going forward from this version onwards, all Redirect APMs will be server-driven and don’t require an SDK upgrade to get access to any new ones we integrate with! 🥳🔧 Fixes
Update Clearpay naming to be Afterpay in the overlay dialog and loading page
Enable our instance of PayPal to work if another instance of PayPal is running within the same window. The PayPal button now renders even if the merchant application is running a separate instance.
✨ ImprovementsApple Pay now capture billing address information! 🥳Universal Checkout | Payment MethodsWhen initializing the checkout, you can now pass an additional setting to enforce billing address capture when your customers checkout with Apple Pay.
TypeScript
Primer.showUniversalCheckout(clientToken, {applePay: {captureBillingAddress?: true // defaults to false - not required}})
We recommend capturing the billing address via ApplePay if you’re processing Apple Pay payment via Adyen. Alternatively, you can pass the billing address in the client session if you already posses it. Read more about Apple Pay in our documentation.
setClientToken → refreshClientToken 😎We’ve improved the experience when patching a client sessionWhen you patch a client session by calling the PATCH /client session endpoint, you now no longer have to notify the checkout by calling setClientoken(clientToken) , there’s now a simpler alternative:
TypeScript
const checkout = await Primer.showUniversalCheckout(clientToken, {// provide your settings})// This will result in the checkout// being updated after patching a client sessioncheckout.refreshClientToken();
🔨 Fixed
The checkout now no longer fails to apply surcharging to American Express cards
🚨Recommend update! This release addresses a bug which causes the SDK to crash in Safari. If you are using the SDK version 2.5.0 or up - we highly recommend you update your integration to this version or higher.
Better Klarna support! 🤯Universal Checkout | Payment MethodsWe’ve introduced a bunch of changes to ensure that Klarna is now much more stable across many more scenarios:
We’ve expanded the locale, country code and currency support for Klarna. You’ll now be able to serve your customers better with Klarna across multiple territories.
Klarna now works when passing tax in the client session. Feel free to add your tax amounts to each line items and Klarna will be able to interpret it as such.
Klarna now also supports passing a discount amount. Passing a discount amount in the client session will be interpreted correctly by Klarna.
We recommend updating your SDK version to 2.10.1 if you’re availing Primer to your customers.
🔨 Fixed
Fixed bug which caused SDK to crash in Safari browsers. This bug has been persisting since v2.5.0 of the Web SDK
✨ ImprovementsKlarna now accepts the state property passed in the customer.billingAddress and customer.shippingAddress fields.
We recommend updating your SDK version to 2.9.0 if you’re servicing customers with Klarna in the United States, Australia or Canada to avoid any validation errors from Klarna
✨ ImprovementsMore payment methods incoming!Bancontact - Payconiq via Adyen! 🤯Universal Checkout | Payment MethodsWhen checkout out using Bancontact - Payconiq your customer is redirected to the app either directly on their mobile device, or by scanning a QR code on Desktop.
Take a look at our Adyen Connection and the payment methods it supports on the Dashboard.
Omise from the far east 🌅Universal Checkout | Payment MethodsWe’ve added support for PromptPay and TrueMoney via Omise. These payment methods can be used to serve your customers in Thailand.
PromptPayYour customers will be able to pay using PromptPay by following a redirect after scanning the provided QR code using their mobile phones.
TrueMoneyA popular e-wallet in Thailand, your customers can now select it as an option in the checkout and be redirected to complete their payment.
Take a look at our Omise Connection and the payment methods it supports on the Dashboard.
✨ ImprovementsThe release train has arrived! 🚂Multibanco via Adyen has arrived! 🎉Universal Checkout | Payment MethodsYou can avail Multibanco via Adyen to your customers! Multibanco is a Portuguese Payment Method which allows customers to complete payments outside of the checkout’s context.
Take a look at our PacyPay Connection and the payment methods it supports on the Dashboard.
PacyPay payment methods incoming! 🎉Universal Checkout | Payment MethodsWe’ve added support for both Alipay+ and WeChat pay via Onerway
AliPay+ & WeChat Pay
Take a look at our PacyPay Connection and the payment methods it supports on the Dashboard.
We’ve added support for Afterpay! 🎉Universal Checkout | Payment MethodsAfterpay (Clearpay) is a Buy Now Pay Later payment method in the UK, France, Spain and Italy which offers customers the option to pay in 4 interest free instalments! 😎
Take a look at our Afterpay Connection and the payment methods it supports on the Dashboard.
Increased control over payment method actions 🔍Universal Checkout | Payment Method CallbackThere are times when you would want to know (in real time), which payment method was selected by the customer. This added transparency allows you to perform actions, like updating your UI when a payment method is selected/unselected.To receive updates on which payment method was selected by a customer, you can now make use of the onPaymentMethodAction callback.
JavaScript
const options = {/\* Other checkout options ... \*/onPaymentMethodAction(action, { paymentMethodType }) {// Notifies you when a specific payment method has been selected or unselected// action will either be 'PAYMENT\_METHOD\_SELECTED' or 'PAYMENT\_METHOD\_UNSELECTED'},};
As an example, selecting a payment method could result in displaying product recommendations that are commonly associated with customers who use that payment method. Additional context on when a customer unselects a payment method is also provided, which again gives you an opportunity to customize the customer experience.More visibility. More control. More happy customers.
✨ ImprovementsA small release, but we all know about dynamite and small packagesMB all the WAY 💸Universal Checkout | Payment MethodsWe’ve added support for MBWAY via Adyen 🎉
MBWAY is a leading payments app in Portugal. Our integration will allow your customers to pay using their phone numbers and complete their payments from their MBWAY apps.
MBWAY via Adyen is only available in Portugal. Take a look at our Adyen Connection and the payment methods it supports on the Dashboard.
✨ ImprovementsNew payment methods and a couple of UI improvements!Paytrail and Payshop via Adyen is now supported 💰You can now use Paytrail and Payshop via Adyen.
Paytrail & Payshop
Take a look at our Adyen Connection and the payment methods it supports on the Dashboard
Improved error handling 🔴Universal Checkout | Payment MethodsIf no payment methods are returned, you will now be notified in onCheckoutFailBefore, an error would be logged in the console if no payment methods were loaded, but now you can adapt your UI in the case that no payment methods could be retrieved for the given checkout session.
Take a look at the onCheckoutFail callback in the web SDKs readme for more information on how you can best handle checkout failure.
Bug fixes 🐛
Autofocus will now be applied to the first field in the card form and won’t automatically jump to the cardholder name input.
✨ ImprovementsThis release contains a host of exciting new features!Amount on submit button 💰You can now display the amount charged to the customer on the submit button 😎
Submit Button
To avail the amount on the submit button, you can pass submitButton.amountVisible: true as a checkout option:
Trigger card form submission on enter press ↩️Universal CheckoutYou no longer need a mouse to make card payments 🙃
Submit on Enter
iDEAL via PayNL now uses a dedicated bank list 🏦Universal Checkout | Payment Methods
Select a bank
In order to create a more native experience when using iDEAL via PayNL - customers are now able to select the bank of their choosing via the checkout’s UI.Before, iDEAL via PayNL would redirect customers away to a page where they could select a bank of their choosing.In the future, we will be able to support this feature for all processors supporting iDEAL which returns a bank list.Klarna now supports passing a product type 🤝Universal Checkout | Payment MethodsKlarna is now able to receive information regarding the product type of a specific line item.When creating a client session, a productType can now be specified for each lineItem:
✨ ImprovementsThis release adds support for several new payment methods and languages, meaning your checkout is accessible to even more people around the world 🌍Added support for four new payment methods 🎉Universal Checkout | Payment MethodsThanks to our work with Rapyd, your checkout can now support the following payment methods:
GrabPay
Poli
Gcash
PromptPay
Fast
New locales 💬Universal Checkout | LocalesYour checkout can now display in any of the following new languages:
Czech cs
Estonian et
Croatian hr
Japanese ja
Lithuanian lt
Portuguese - Brazil pt-BR
Vietnamese vi
You can choose the locale for your checkout experience by passing the locale option during initialization. Take a look at the web SDKs README for more details.
🔨 Fixed
Fix position of saved payment method dropdown on mobile
Klarna now allows updating the amount while the SDK is rendered
✨ ImprovementsThis release is all about better localization 🗣️ageRight to left language support ↪️ ↩️Right to left languages will now read the way they should 😎
Submit
Arabic reading right-to-leftALTNo additional setup is required to enable right-to-left ✨New locales 💬Universal Checkout | LocalesThe SDK now supports an additional Spanish dialect - Argentinian:Argentinian Spanish es-AR
The locale can easily be set by passing the locale checkout option when initialising the checkout. Take a look at the web SDKs README for more details.
🔨 Fixed
Fixed a TypeScript bug that cause showUniversalCheckout to return an instance of VaultManager. showUniversalCheckout now returns type UniversalCheckout.
✨ ImprovementsAdded support for processing payments using processor’s 3DS flow for Stripe and Rapyd.[BETA] Pay in installments with 2c2p ! 🎉Universal Checkout | Payment MethodsUniversal Checkout now enables customers to pay in installments with their cards or bank accounts using 2c2p! This processor will display a “Pay in installments” button that redirects the user to 2c2p’s hosted payment page.This processor is currently in beta while we finalise the implementation of additional actions
👉
Take a look at our 2C2P connection in your dashboard
Updated buttons for Coinbase and OpenNode! 💅Universal Checkout | Payment MethodsWe’ve applied a few tweaks to the buttons of the payment methods Coinbase and OpenNode!CoinbaseThis button now features a nice wallet icon!
Improved support for PayPal! 🎉Universal Checkout | Payment MethodsUniversal Checkout now sends additional information to PayPal:
If lineItems is provided in the client session, the item breakdown will be passed to the PayPal
If orderId is provided in the client session, PayPal’s custom\_id will be passed to PayPal
🔨 Fixed
Fixed a bug that prevented formSpacings from being applied to the friendly card name
Fixed an error raised in the console in the Vault Manager when the user clicks on a saved payment method
✨ 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.
🚀 Get started in one line of code!Universal Checkout | SDKNow you can harness the power of Primer even faster! We’ve followed our mantra of; “The best DX is no DX”, and slimmed down the Web SDK integration to just a single line of code 🤯Before 🥱
TypeScript
const Primer = await loadPrimer(); // If the package is loaded from npmconst primer = new Primer({ credentials: { clientToken }});const checkout = await primer.checkout(options);
Now 🚀
TypeScript
// To initialize Universal Checkoutconst universalCheckout = await Primer.showUniversalCheckout(clientToken, options);// To initialize Vault Managerconst vaultManager = await Primer.showVaultManager(clientToken, options);
By calling Primer.showUniversalCheckout , you’re configuring, initializing and availing the checkout to your customers in just one step.The boilerplate might have been reduced, but all the great functionality of the checkout has been maintained 💪
Take a look at our new quick start guide for web to see just how easy it is to have a full implementation of Universal Checkout up and running in no time
✨ 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 onTokenizeSuccess and onResumeSuccess callbacks:
TypeScript
primer.checkout({onTokenizeSuccess(paymentMethodTokenData) {// Implement some verbose logic 🤢},onResumeSuccess(resumeTokenData) {// Do it all again 😵}})
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 💆
For the nerds ❤️
Payment lifecycle callbacksIf you would still like to have some insights into how Universal Checkout is handling payment creation, we’ve introduced some new optional callbacks which will notify you during certain events in the payment lifecycle.
For more information on these callbacks, take a look at the Payment Lifecycle Callbacks section in our new and improved README
Manual payment handlingFor the brave and bold among us who would still like to manually handle payments in the checkout and perform the necessary API calls for payment creation - take a look at our manual payment creation guide 📚
💳 Dummy Payment MethodsUniversal Checkout | Payment MethodsWe want you to start creating payments with Universal Checkout as quickly as possible, so we’ve added some dummy payment methods - no credentials required 😎The following payment methods have been added:
PayPal via Primer
iDeal via Primer
Klarna via Primer
Cards via Primer
These payment methods are purely for demonstrative purposes and aren’t tied to any payment method specific environment.You can now create payments in different states (authorized, declined, failed) and see them in the dashboard’s Payments page.No need to create sandbox accounts with different processors/payment methods, the dashboard and all its great features can now be used without any setup.
Primer’s Dummy Payment Methods will come preconfigured with all new sandbox accounts.
🔨 DeprecationThe Web SDK’s move to version 2 has brought a lot of exciting changes and along with these changes, some deprecations.
📚
Please take a look at our Web SDK version 2 migration guide for a full list of the deprecations made.
{"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/web-sdk","slug":"/changelogs/web-sdk","pageMetadata":{"title":"Web SDK","sidebarTitle":"Web SDK","icon":"code","rss":true,"description":null,"href":"/changelogs/web-sdk"},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];const TxnTag=({status})=>{const getStyles=status=>{const baseStyle={display:`inline-block`,padding:`4px 8px`,borderRadius:`4px`,fontSize:`13px`,fontWeight:`400`};switch(status){case`PENDING`:return{...baseStyle,backgroundColor:`#ececec`,color:`#9f9f9f`};case`AUTHORIZED`:return{...baseStyle,backgroundColor:`#ecfdf5`,color:`#047857`};case`SETTLED`:case`PARTIALLY_SETTLED`:return{...baseStyle,backgroundColor:`#ecfdf5`,color:`#047857`};case`DECLINED`:case`FAILED`:return{...baseStyle,backgroundColor:`#fef2f2`,color:`#dc2626`};case`CANCELLED`:return{...baseStyle,backgroundColor:`#fefce8`,color:`#d78203`};case`SETTLING`:return{...baseStyle,backgroundColor:`#e0f2fe`,color:`#0c4a6e`};default:return{...baseStyle,backgroundColor:`#f3f4f6`,color:`#374151`}}};return _jsx(`span`,{style:getStyles(status),children:status})};function _createMdxContent(props){const _components={a:`a`,code:`code`,em:`em`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{Accordion,CodeBlock,Frame,Note,OptimizedImage,Tip,Update,Warning,_MdxComponentBoundary}=_components;if(!Accordion)_missingMdxReference(`Accordion`,true);if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Frame)_missingMdxReference(`Frame`,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);if(!_MdxComponentBoundary)_missingMdxReference(`_MdxComponentBoundary`,true);return _jsxs(_Fragment,{children:[_jsxs(Update,{label:`v2.66.1`,description:`2026-11-05`,id:`v2-66-1`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Internal improvements.`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.66.0`,description:`2026-10-29`,id:`v2-66-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Some payment methods are now hidden when this SDK version, your SDK options or the shopper’s device can’t support them. If a payment method you enabled doesn’t show up, check the browser console for a warning.`}),`\n`,_jsx(_components.li,{children:`Some payment methods now load faster.`}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Universal Checkout no longer creates a payment on a client session created with `,_jsx(_components.code,{children:`approvalMode: \"MANUAL\"`}),`. Submitting a payment method on such a session now calls `,_jsx(_components.code,{children:`onCheckoutFail`}),` with `,_jsx(_components.code,{children:`PAYMENT_CREATION_ABORTED`}),`, and the SDK logs the reason to the console. Universal Checkout has no approval step. Use `,_jsx(_components.a,{href:`/checkout/primer-checkout/guides-and-recipes/manual-payment-approval`,children:`Primer Checkout`}),` for manual payment approval, or create the client session without `,_jsx(_components.code,{children:`approvalMode: \"MANUAL\"`}),`. The `,_jsx(_components.code,{children:`paymentHandling: \"MANUAL\"`}),` option is not affected.`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.65.3`,description:`2026-10-27`,id:`v2-65-3`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Co-badged cards now list the networks that the client session allows before the excluded networks. `,_jsx(_components.code,{children:`onBinDataAvailable`}),` no longer reports an excluded network as `,_jsx(_components.code,{children:`preferred`}),`, and `,_jsx(_components.code,{children:`detectedCardNetworks.items`}),` starts with an allowed network.`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.65.2`,description:`2026-10-26`,id:`v2-65-2`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`3DS challenge iframes now allow passkeys. Universal Checkout, Headless, and processor-initiated 3DS challenges set `,_jsx(_components.code,{children:`allow=\"payment *; publickey-credentials-get *; publickey-credentials-create *\"`}),` on the challenge iframe, so an issuer’s ACS page that offers a passkey no longer fails with a `,_jsx(_components.code,{children:`NotAllowedError`}),`. If you render your own 3DS challenge dialog, set the same `,_jsx(_components.code,{children:`allow`}),` value on your iframe.`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.65.1`,description:`2026-09-29`,id:`v2-65-1`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Fixed the Apple Pay payment sheet showing “0 months” for a trial period. The SDK now sends `,_jsx(_components.code,{children:`recurringStartDate`}),`, `,_jsx(_components.code,{children:`recurringIntervalUnit`}),` and `,_jsx(_components.code,{children:`recurringIntervalCount`}),` from `,_jsx(_components.code,{children:`recurringPaymentRequest.trialBilling`}),` to Apple Pay, so a 3-day trial reads “3 days”. See the `,_jsx(_components.a,{href:`/api-reference/v2.4/api-reference/client-session-api/create-a-client-session#response-payment-method-options-apple-pay-recurring-payment-request`,children:`Apple Pay API reference`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Fixed a `,_jsx(_components.code,{children:`RangeError: Invalid Date`}),` that prevented the Apple Pay sheet from opening when `,_jsx(_components.code,{children:`recurringPaymentRequest.regularBilling.recurringStartDate`}),` was omitted. The field is optional, and the sheet now shows “Starting Now”.`]}),`\n`,_jsxs(_components.li,{children:[`Fixed an Apple Pay billing `,_jsx(_components.code,{children:`amount`}),` of 0 falling back to the order amount on the payment sheet. The fallback now applies only when `,_jsx(_components.code,{children:`amount`}),` is omitted, across the regular, trial, deferred and automatic reload billing options.`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.65.0`,description:`2026-09-16`,id:`v2-65-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Internal improvements.`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.64.13`,description:`2026-09-07`,id:`v2-64-13`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Fixed an issue where a previously saved billing address could be unexpectedly cleared before a shopper finished checking out.`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.64.12`,description:`2026-08-24`,id:`v2-64-12`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Internal improvements.`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.64.11`,description:`2026-08-13`,id:`v2-64-11`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Fixed an issue where Klarna could start multiple concurrent sessions, and blocked further submissions after a payment completed.`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.64.10`,description:`2026-08-12`,id:`v2-64-10`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Internal improvements.`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.64.9`,description:`2026-07-15`,id:`v2-64-9`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Internal improvements.`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.64.8`,description:`2026-07-13`,id:`v2-64-8`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Fixed amount formatting for some currencies.`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.64.7`,description:`2026-07-08`,id:`v2-64-7`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Added localized translations for the ‘SEPA instant credit transfer’ payment method button.`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.64.6`,description:`2026-06-24`,id:`v2-64-6`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Improved browser detection so that redirect payment methods correctly fall back to a full-page redirect instead of opening a popup in environments where popups are unreliable, such as in-app browsers.`}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Internal security, performance, and stability improvements.`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.64.5`,description:`2026-06-17`,id:`v2-64-5`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Internal analytics improvements.`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.64.4`,description:`2026-06-11`,id:`v2-64-4`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Internal analytics improvements.`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.64.3`,description:`2026-06-02`,id:`v2-64-3`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Redirect APMs flow improvements.`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.64.2`,description:`2026-05-26`,id:`v2-64-2`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Fixed a issue where success and error screens were not displayed in some scenarios.`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.64.1`,description:`2026-05-21`,id:`v2-64-1`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Fixed a issue where aborting a payment in some scenarios wasn’t working correctly.`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.64.0`,description:`2026-05-19`,id:`v2-64-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Redirect payment methods are no longer available when `,_jsx(_components.code,{children:`returnUrl`}),` is not set. See `,_jsx(_components.a,{href:`/sdk/web/v2.x.x/handle-redirects-and-deeplinks`,children:`Handle redirects \u0026 deep links`}),` for more info.`]}),`\n`,_jsx(_components.li,{children:`Fixed a CSP issue that was blocking the SDK from rendering.`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.63.0`,description:`2026-04-24`,id:`v2-63-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Fixed an issue where the vaulted payment methods list was not filtering out cards that are not included in the `,_jsx(_components.code,{children:`orderedAllowedCardNetworks`}),` configuration.`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.62.1`,description:`2026-04-20`,id:`v2-62-1`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Add more logging for Stripe ACH payment method`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.62.0`,description:`2026-04-16`,id:`v2-62-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Introduced teardown method on headless`}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Fixed Klarna bug with a silent loading failure`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.61.2`,description:`2026-03-30`,id:`v2-61-2`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Internal payment method processing improvements`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.61.1`,description:`2026-03-16`,id:`v2-61-1`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🚀 New features`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/sdk/web/v2.x.x/primer/methods/showUniversalCheckout#param-on-payment-method-action`,children:_jsx(_components.code,{children:`onPaymentMethodAction`})}),` now provides data when a payment is already created before the payment method is unselected`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.61.0`,description:`2026-02-16`,id:`v2-61-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:`Headless Checkout`}),`: Added `,_jsx(_components.a,{href:`/sdk/web/v2.x.x/primer-headless-checkout/methods/createPaymentMethodManager#card.parameters.options-properties.onBinDataAvailable`,children:_jsx(_components.code,{children:`onBinDataAvailable`})}),` callback to the card payment method manager. This new callback provides card network detection along with rich BIN data including issuer information, account funding type, and card attributes. Replaces the deprecated `,_jsx(_components.code,{children:`onCardNetworksChange`}),` callback.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Headless Checkout`}),`: Added `,_jsx(_components.a,{href:`/sdk/web/v2.x.x/primer-headless-checkout/methods/createPaymentMethodManager#card.parameters.options-properties.onBinDataLoadingChange`,children:_jsx(_components.code,{children:`onBinDataLoadingChange`})}),` callback to indicate when BIN data is being fetched. Replaces the deprecated `,_jsx(_components.code,{children:`onCardNetworksLoading`}),` callback.`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.60.1`,description:`2026-02-11`,id:`v2-60-1`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Fixed a failed payment flow issue.`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.60.0`,description:`2026-02-06`,id:`v2-60-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Adyen MB Way`}),`: Fixed MB Way payment method translations.`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.59.12`,description:`2026-01-15`,id:`v2-59-12`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Adyen Bancontact Payconiq`}),`: Fixed an issue where the loading spinner would not disappear after completing the payment.`]}),`\n`]})]}),`\n`,_jsx(Update,{label:`v2.57.11`,description:`2026-01-15`,id:`v2-57-11`,children:_jsx(_components.p,{children:`Skipped due to a pipeline issue`})}),`\n`,_jsxs(Update,{label:`v2.59.10`,description:`2025-12-16`,id:`v2-59-10`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Silence `,_jsx(_components.code,{children:`navigator.sendBeacon`}),` errors in browsers that do not support it.`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.59.9`,description:`2025-12-09`,id:`v2-59-9`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Google Pay`}),`: Added `,_jsx(_components.code,{children:`existingPaymentMethodRequired`}),` property. If `,_jsx(_components.code,{children:`true`}),`, the SDK will check if `,_jsx(_components.a,{href:`https://developers.google.com/pay/api/web/reference/response-objects#IsReadyToPayResponse`,children:_jsx(_components.code,{children:`IsReadyToPayResponse.paymentMethodPresent`})}),` is also `,_jsx(_components.code,{children:`true`}),` before rendering the Google Pay Button.`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.59.8`,description:`2025-11-25`,id:`v2-59-8`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Adyen Affirm`}),`: Added billing address form for Adyen Affirm payment method.`]}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Billing address form`}),`: Fixed an issue where the state field was not being saved correctly.`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.59.7`,description:`2025-11-18`,id:`v2-59-7`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Adyen Cash App and Adyen Affirm`}),`: Minor internal improvements.`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.59.6`,description:`2025-11-17`,id:`v2-59-6`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`New payment methods`}),`: Added support for Adyen Cash App and Adyen Affirm.`]}),`\n`]})]}),`\n`,_jsx(Update,{label:`v2.59.5`,description:`2025-11-05`,id:`v2-59-5`,children:_jsx(_components.p,{children:`Bug fixes and improvements`})}),`\n`,_jsx(Update,{label:`v2.59.4`,description:`2025-10-29`,id:`v2-59-4`,children:_jsx(_components.p,{children:`Bug fixes and improvements`})}),`\n`,_jsxs(Update,{label:`v2.59.3`,description:`2025-10-17`,id:`v2-59-3`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`BLIK payment method`}),`: Reverted the BLIK “colored” logo variant change done in v2.59.2.`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.59.2`,description:`2025-10-16`,id:`v2-59-2`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`BLIK payment method`}),`: Fix BLIK logo sources for “light” and “colored” variants.`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.59.1`,description:`2025-10-14`,id:`v2-59-1`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Overlay dialog`}),`: Fixed misalignment of the X icon of the Close button.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Overlay dialog`}),`: Close button now appears after 30 seconds instead of immediately.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Overlay dialog`}),`: Disabled ‘Escape’ key to prevent accidental dialog closures.`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.59.0`,description:`2025-10-13`,id:`v2-59-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Fix Google Pay OR_BIBED_06 Error for Currencies that has 3 minor units`}),`: Resolved an issue where Google Pay transactions were failing with error code OR_BIBED_06 for currencies that have 3 minor units (e.g., KWD, BHD, JOD). The issue occurred because amounts were being sent to Google Pay with three minor units instead of two, which is the maximum precision Google Pay supports.`]}),`\n`]})]}),`\n`,_jsx(Update,{label:`v2.58.0`,id:`v2-58-0`,children:_jsx(Warning,{children:_jsxs(_components.p,{children:[`This version has been deprecated. Please upgrade to `,_jsx(_components.a,{href:`#v2-59-0`,children:`version 2.59.0`}),` onwards.`]})})}),`\n`,_jsxs(Update,{label:`v2.57.7`,description:`2025-10-13`,id:`v2-57-7`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Fixed intermittent race condition on 3DS`}),`: Fixed a rare race condition on 3DS methods that could cause communication between ACS provider to be cancelled prematurely, resulting in failed 3DS authentications. This fix ensures that the SDK waits for the ACS provider to respond before moving ahead with UI cleanup.`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.57.5`,description:`2025-09-30`,id:`v2-57-5`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Fixed currency display formatting for IDR and RSD`}),`: Fixed an issue where Indonesian Rupiah (IDR) and Serbian Dinar (RSD) amounts were displayed incorrectly in payment forms and checkout screens. The displayed amounts showed incorrect decimal values, though the actual payment processing and charged amounts were always correct. Users will now see properly formatted amounts for these currencies throughout the checkout experience.`]}),`\n`]})]}),`\n`,_jsx(Update,{label:`v2.57.4`,id:`v2-57-4`,children:_jsx(_components.p,{children:`Skipped due to a pipeline error`})}),`\n`,_jsxs(Update,{label:`v2.57.3`,description:`2025-09-29`,id:`v2-57-3`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🚀 New features`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Card`}),`: Add EFTPOS network support`]}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`PayPal (Orders)`}),`: Shipping address, item name, and item description from the client session are now passed to PayPal Orders.`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.57.2`,description:`2025-09-18`,id:`v2-57-2`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Headless SDK locale support for translations`}),`: Enhanced locale support with comprehensive translation capabilities when setting locale in headless SDK options. The SDK now provides localized text for redirect payment method popups and error messages, allowing merchants to rely on built-in translations instead of providing their own localized error messages.`]}),`\n`]}),_jsxs(_components.p,{children:[`For more information, see our `,_jsx(_components.a,{href:`/sdk/web/v2.x.x/primer-headless-checkout/methods/createPaymentMethodManager`,children:`headless SDK documentation`}),`.`]})]}),`\n`,_jsxs(Update,{label:`v2.57.1`,description:`2025-09-17`,id:`v2-57-1`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Headless SDK locale parameter support`}),`: Fixed locale parameter support for redirect payment methods URLs. When locale is set in headless SDK options, it will now be properly included in redirect payment method URLs, resolving localization issues with payment methods like Alma and others that use locale-based URL routing. The SDK also automatically determines the appropriate locale from user system settings when no explicit locale is configured.`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.57.0`,description:`2025-09-04`,id:`v2-57-0`,children:[_jsx(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.`]})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`⚠️ Legacy API Option Removed`})}),_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`legacy`}),` option for `,_jsx(_components.code,{children:`options.apiVersion`}),` has been removed. The SDK now exclusively uses API version 2.4.`]}),_jsxs(_components.p,{children:[`Since `,_jsx(_components.a,{href:`#v2-52-0`,children:`version 2.52.0`}),` (released 2025-03-25), the SDK has defaulted to API version 2.4 with an option to use `,_jsx(_components.code,{children:`legacy`}),` for backward compatibility. This fallback option is now removed.`]}),_jsx(_components.p,{children:_jsxs(_components.strong,{children:[`If you were using the `,_jsx(_components.code,{children:`legacy`}),` setting:`]})}),_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Ensure your backend integration supports API version 2.4`}),`\n`,_jsxs(_components.li,{children:[`Remove any `,_jsx(_components.code,{children:`apiVersion: \"legacy\"`}),` configuration from your SDK initialization`]}),`\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/web/v2.x.x/primer/methods/showUniversalCheckout#parameters.universalCheckoutOptions.apiVersion`,children:`SDK reference`}),` and `,_jsx(_components.a,{href:`/api-reference/get-started/overview`,children:`API Reference`}),`.`]})]}),`\n`,_jsxs(Update,{label:`v2.56.3`,description:`2025-09-04`,id:`v2-56-3`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Card form submit button`}),`: Fixed an issue where the submit button remained disabled after failed or declined transactions when using `,_jsx(_components.code,{children:`card.preferredFlow: \"DEDICATED_SCENE\"`}),` mode. The button now correctly re-enables to allow payment retry attempts.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Stripe ACH payment information`}),`: Resolved an issue where Stripe ACH transactions were not returning payment information in the `,_jsx(_components.code,{children:`onCheckoutComplete`}),` callback. Payment details are now properly included in the callback response.`]}),`\n`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.56.2`,description:`2025-08-19`,id:`v2-56-2`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Apple Pay deferred payment request`}),`: `,_jsx(_components.code,{children:`freeCancellationDate`}),` and `,_jsx(_components.code,{children:`freeCancellationTimeZone`}),` are optional, but they must either both be provided or both be omitted.`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.56.1`,description:`2025-08-19`,id:`v2-56-1`,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 iframe support`}),`: Added `,_jsx(_components.code,{children:`merchantDomain`}),` option for Apple Pay when rendered within an iframe. This optional string parameter allows setting the top window domain for proper Apple Pay functionality in iframe contexts. See our `,_jsx(_components.a,{href:`/sdk/web/v2.x.x/primer/methods/showUniversalCheckout#param-merchant-domain`,children:`documentation`}),` for more info.`]}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Fixed Google Pay line item amount formatting`}),`\n`,_jsx(_components.li,{children:`Fixed cardholder name required and visible toggle functionality`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.55.1`,description:`2025-07-30`,id:`v2-55-1`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Fix minor compatibility issue in certain legacy browsers.`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.55.0`,description:`2025-07-15`,id:`v2-55-0`,children:[_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.`]})]}),`\n`,_jsxs(Update,{label:`v2.54.6`,description:`2025-07-07`,id:`v2-54-6`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Fix issue where vaulted Stripe ACH tokens could not be selected to make payments due to an error.`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.54.5`,description:`2025-06-20`,id:`v2-54-5`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Updated Payment types to include missing payment methods:`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.code,{children:`DLOCAL_PIX`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.code,{children:`ALMA`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.code,{children:`PAY_NL_RIVERTY`})}),`\n`]}),`\n`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.54.4`,description:`2025-06-18`,id:`v2-54-4`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧\\xA0Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Google Pay - Minor bug fix in some edge cases where it was impossible to disable button through headless SDK.`}),`\n`]})]}),`\n`,_jsx(Update,{label:`v2.54.3`,id:`v2-54-3`,children:_jsx(Warning,{children:_jsxs(_components.p,{children:[`This version has been deprecated. Please upgrade to `,_jsx(_components.a,{href:`#v2-54-4`,children:`version 2.54.4`}),` onwards.`]})})}),`\n`,_jsx(Update,{label:`v2.54.2`,id:`v2-54-2`,children:_jsx(Warning,{children:_jsxs(_components.p,{children:[`This version has been deprecated. Please upgrade to `,_jsx(_components.a,{href:`#v2-54-4`,children:`version 2.54.4`}),` onwards.`]})})}),`\n`,_jsx(Update,{label:`v2.54.1`,id:`v2-54-1`,children:_jsx(Warning,{children:_jsxs(_components.p,{children:[`This version has been deprecated. Please upgrade to `,_jsx(_components.a,{href:`#v2-54-4`,children:`version 2.54.4`}),` onwards.`]})})}),`\n`,_jsxs(Update,{label:`v2.54.0`,description:`2025-05-12`,id:`v2-54-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧\\xA0Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Apple Pay - fixed a bug on headless that resulted in Checkout staying in loading state after cancelling Apple Pay payment sheet too quickly.`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Improves accessibility of hidden inputs`}),`\n`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.53.7`,description:`2025-05-07`,id:`v2-53-7`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Improved support for legacy mobile Safari versions by adjusting bundler settings.`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Resolved compatibility issues affecting early iOS 15 and iOS 16 releases.`}),`\n`]}),`\n`]}),_jsx(_components.p,{children:`Our testing confirms the SDK now works as expected on these older browsers.`})]}),`\n`,_jsxs(Update,{label:`v2.53.6`,description:`2025-05-01`,id:`v2-53-6`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsx(_components.p,{children:`Minor enhancements to the TypeScript types exposed by the package.`})]}),`\n`,_jsx(Update,{label:`v2.53.5`,description:`2025-04-24`,id:`v2-53-5`,children:_jsx(_components.p,{children:`Fixed a bug that prevented the 3DS Flow from continuing in some timeout scenarios.`})}),`\n`,_jsx(Update,{label:`v2.53.4`,description:`2025-04-16`,id:`v2-53-4`,children:_jsx(_components.p,{children:`Bug fixes and improvements`})}),`\n`,_jsx(Update,{label:`v2.53.3`,description:`2025-04-15`,id:`v2-53-3`,children:_jsx(_components.p,{children:`Bug fixes and improvements`})}),`\n`,_jsxs(Update,{label:`v2.53.2`,description:`2025-04-10`,id:`v2-53-2`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🚀\\xA0New feature`})}),_jsxs(_components.p,{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`,_jsxs(Update,{label:`v2.53.1`,description:`2025-04-10`,id:`v2-53-1`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🚀\\xA0New feature`})}),_jsx(_components.p,{children:`• Improved TypeScript typings for vaulted payment methods`}),_jsx(_components.p,{children:`This release enhances the type safety of vaulted payment methods by refining our TypeScript definitions. These changes enforce stricter typing, which may surface TypeScript errors in projects that previously relied on loosely typed vaulted items.`}),_jsx(Note,{children:` ⚠️\\xA0Note: There are no changes to the runtime or processing logic—only TypeScript type definitions have been updated. `})]}),`\n`,_jsx(Update,{label:`v2.53.0`,description:`2025-04-10`,id:`v2-53-0`,children:_jsx(Note,{children:_jsx(_components.p,{children:`⚠️ Note: This version has been removed due to a minor display bug affecting the rendering of vaulted Stripe ACH items. If you’ve installed this version, we recommend upgrading to 2.53.1.`})})}),`\n`,_jsxs(Update,{label:`v2.52.2`,description:`2025-04-09`,id:`v2-52-2`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.p,{children:[`We’ve released a fix for Klarna payment method and added a missing `,_jsx(_components.code,{children:`onPaymentMethodAction`}),` callback. Now `,_jsx(_components.code,{children:`PAYMENT_METHOD_SELECTED`}),` and `,_jsx(_components.code,{children:`PAYMENT_METHOD_UNSELECTED`}),` events are triggered.`]})]}),`\n`,_jsxs(Update,{label:`v2.52.1`,description:`2025-04-03`,id:`v2-52-1`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Fixed an issue where the payment method logo position, relative to the text, was sometimes ignored`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.52.0`,description:`2025-03-25`,id:`v2-52-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_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 the previous defaults by setting `,_jsx(_components.code,{children:`legacy`}),` via `,_jsx(_components.code,{children:`options.apiVersion`}),`. For more information see our `,_jsx(_components.a,{href:`/sdk/ios/v2.x.x/common-objects/PrimerSettings#properties.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`}),`.`]}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Surcharge information will not be displayed next to the card form when no surcharge is applied; the card form will not be automatically hidden when the surcharge is applied - use `,_jsx(_components.a,{href:`/sdk/web/v2.x.x/primer/methods/showUniversalCheckout`,children:`SDK Options`}),` to hide the card form if needed.`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.51.0`,description:`2025-03-18`,id:`v2-51-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Fixed a bug in the Klarna session update flow, which may cause validation failures when the Klarna session is triggered and potentially prevent the session from updating correctly.`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.50.6`,description:`2025-03-18`,id:`v2-50-6`,children:[_jsx(Warning,{children:_jsx(_components.p,{children:`This version contains a bug in the Klarna session update flow, which may cause validation failures when the Klarna session is triggered and potentially prevent the session from updating correctly. Please use at least version 2.51.0`})}),_jsx(Warning,{children:_jsx(_components.p,{children:`This version contains a bug in ApplePay integration, which may cause session failures when a billing address is required. Please use at least version 2.51.0`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Fixed Google Pay `,_jsx(_components.code,{children:`OR_BIBED_15`}),` error where the payment popup failed to open due to a network request. The popup is now triggered immediately upon clicking the Google Pay button, ensuring compliance with browser restrictions on user-initiated popups. As a result, any updates to the client session must now be refreshed manually in the SDK by calling `,_jsx(_components.a,{href:`/sdk/web/v2.x.x/primer-headless-checkout/methods/refreshClientSession`,children:_jsx(_components.code,{children:`refreshClientSession`})}),`.`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.50.5`,description:`2025-03-12`,id:`v2-50-5`,children:[_jsx(Warning,{children:_jsx(_components.p,{children:`This version contains a bug in the Klarna session update flow, which may cause validation failures when the Klarna session is triggered and potentially prevent the session from updating correctly. Please use at least version 2.51.0`})}),_jsx(Warning,{children:_jsx(_components.p,{children:`This version contains a bug in ApplePay integration, which may cause session failures when a billing address is required. Please use at least version 2.51.0`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Deprecations`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Removed support for iDeal-V1 and the associated bank selector UI from the SDK. With iDeal-V2, users are now redirected to their own bank selector interface, making this functionality redundant. All existing integrations have been automatically migrated to iDeal-V2, requiring no further action from merchants.`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.50.4`,description:`2025-03-11`,id:`v2-50-4`,children:[_jsx(Warning,{children:_jsx(_components.p,{children:`This version contains a bug in the Klarna session update flow, which may cause validation failures when the Klarna session is triggered and potentially prevent the session from updating correctly. Please use at least version 2.51.0`})}),_jsx(Warning,{children:_jsx(_components.p,{children:`This version contains a bug in ApplePay integration, which may cause session failures when a billing address is required. Please use at least version 2.51.0`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Addressed an error (`,_jsx(_components.code,{children:`undefined is not an object`}),`) occurring with Apple Pay transactions.`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.50.3`,description:`2025-03-03`,id:`v2-50-3`,children:[_jsx(Warning,{children:_jsx(_components.p,{children:`This version contains a bug in the Klarna session update flow, which may cause validation failures when the Klarna session is triggered and potentially prevent the session from updating correctly. Please use at least version 2.51.0`})}),_jsx(Warning,{children:_jsx(_components.p,{children:`This version contains a bug in ApplePay integration, which may cause session failures when a billing address is required. Please use at least version 2.51.0`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Resolved an issue with the Klarna vaulting payment flow. Previously, the Klarna vaulting process was not operational due to missing properties. This fix ensures proper communication between the SDK, Primer and Klarna, enabling successful vaulting across all Klarna-supported payments.`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.50.2`,description:`2025-02-17`,id:`v2-50-2`,children:[_jsx(Warning,{children:_jsx(_components.p,{children:`This version contains a bug in ApplePay integration, which may cause session failures when a billing address is required. Please use at least version 2.51.0`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Fixed missing TypeScript types for\\xA0StripeACH options\\xA0on\\xA0`,_jsx(_components.code,{children:`showUniversalCheckout`}),`\\xA0options. This resolves issues where TypeScript users encountered type errors when configuring StripeACH payments.`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.50.1`,description:`2025-02-11`,id:`v2-50-1`,children:[_jsx(Warning,{children:_jsx(_components.p,{children:`This version contains a bug in ApplePay integration, which may cause session failures when a billing address is required. Please use at least version 2.51.0`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Fix double surcharge and top-level amount calculation for Google Pay`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.50.0`,description:`2025-02-05`,id:`v2-50-0`,children:[_jsx(Warning,{children:_jsx(_components.p,{children:`This version contains a bug in ApplePay integration, which may cause session failures when a billing address is required. Please use at least version 2.51.0`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`With this release, we introduce a new property,`,_jsx(_components.code,{children:`\\xA0apiVersion`}),`:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`This property allows you to modify which API the SDK will use internally. By default, the previous API state is selected, ensuring backward compatibility. The new APIs are used by opt-in.`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`To use our new\\xA0API 2.4\\xA0functionalities, set the\\xA0`,_jsx(_components.code,{children:`apiVersion`}),`\\xA0to “2.4”.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`This update enables you to migrate to API 2.4 gradually without disrupting your existing integrations.`}),`\n`]}),`\n`]}),`\n`]}),`\n`]}),_jsx(_components.p,{children:`For more information, see our:`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:_jsx(_components.a,{href:`/sdk/web/v2.x.x/primer/methods/showUniversalCheckout#parameters.universalCheckoutOptions.apiVersion`,children:`SDK Reference`})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:_jsx(_components.a,{href:`/api-reference/get-started/overview`,children:`API Reference`})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:_jsx(_components.a,{href:`/changelogs/migration-guides/API-2.3-to-2.4`,children:`Migration Guides`})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Added support for iDEAL v2 via Adyen on Headless`}),`\n`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.49.2`,description:`2025-01-30`,id:`v2-49-2`,children:[_jsx(Warning,{children:_jsx(_components.p,{children:`This version contains a bug in ApplePay integration, which may cause session failures when a billing address is required. Please use at least version 2.51.0`})}),_jsxs(_components.p,{children:[`Fixed an issue where `,_jsx(_components.code,{children:`onPaymentMethodAction`}),` wasn’t being triggered when closing a payment popup. In some specific instances, when a popup delegated payment method was closed before it fully completed its loading sequence, the SDK would fail to dispatch the relevant callbacks. This prevented merchants from constructing reliable logic for handling payment method actions.`]})]}),`\n`,_jsxs(Update,{label:`v2.49.1`,description:`2025-01-27`,id:`v2-49-1`,children:[_jsx(Warning,{children:_jsx(_components.p,{children:`This version contains a bug in ApplePay integration, which may cause session failures when a billing address is required. Please use at least version 2.51.0`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Cardholder Name now supports non-Latin characters correctly.`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.49.0`,description:`2025-01-16`,id:`v2-49-0`,children:[_jsx(Warning,{children:_jsx(_components.p,{children:`This version contains a bug in ApplePay integration, which may cause session failures when a billing address is required. Please use at least version 2.51.0`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Removed two legacy SDK flows:`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Single Payment Flow: A simplified one-payment view that hasn’t been used in production for over a year. Its removal simplifies the codebase, improves maintainability, and strengthens the overall logic.`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Express Checkout: A legacy, unstable flow introduced in 2022, never officially released but present in TypeScript declarations and some code files. As we are not pursuing this approach further, all related code has been removed, simplifying the PayPal integration and client session logic.`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Amount checks on Apple Pay and Google Pay—We removed a client-side check for these payment methods, as it was no longer needed. Passing value 0 enables some specific vaulting flows.`}),`\n`]}),`\n`]}),_jsxs(Note,{children:[_jsx(_components.p,{children:`📢`}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Experimental`})}),_jsxs(_components.p,{children:[`as of 2.48.0 version, it is possible to opt-in to test Api v2.4(Beta). For more information, see our `,_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`})]})]})]}),`\n`,_jsxs(Update,{label:`v2.48.0`,description:`2025-01-10`,id:`v2-48-0`,children:[_jsx(Warning,{children:_jsx(_components.p,{children:`This version contains a bug in ApplePay integration, which may cause session failures when a billing address is required. Please use at least version 2.51.0`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`This release introduced several updates to the dependencies used by the web SDK, primarily related to TypeScript type generation, linting, and build pipelines.`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Notable customer-facing dependency updates include:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`card-validator and credit-card-type, which are responsible for validating and recognizing cards client-side. Keeping these up to date ensures your clients won’t encounter issues with the card form.`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`@stripe/stripe-js, used to render the Stripe ACH payment form and its components.`}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`We have also improved the overall code quality and ensured more reliable execution.`}),`\n`]}),`\n`]}),_jsxs(Note,{children:[_jsx(_components.p,{children:`📢`}),_jsx(_components.p,{children:`Experimental`}),_jsxs(_components.p,{children:[`With this version, it is possible to opt-in to test Api v2.4(Beta). For more information, see our `,_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`})]})]})]}),`\n`,_jsxs(Update,{label:`v2.47.0`,description:`2024-12-10`,id:`v2-47-0`,children:[_jsx(Warning,{children:_jsx(_components.p,{children:`This version contains a bug in ApplePay integration, which may cause session failures when a billing address is required. Please use at least version 2.51.0`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🚀\\xA0New feature`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Stripe ACH Vaulting is now available ✨`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`We have added support for Vaulting for ACH via Stripe. ACH lets you accept payments from customers with a US bank account.`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Read about the prerequisites `,_jsx(_components.a,{href:`/connections/payment-methods/ach/stripe`,children:`here`})]}),`\n`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.46.8`,description:`2024-11-11`,id:`v2-46-8`,children:[_jsx(Warning,{children:_jsx(_components.p,{children:`This version contains a bug in ApplePay integration, which may cause session failures when a billing address is required. Please use at least version 2.51.0`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.p,{children:[`We’ve released a fix to prevent the Google Pay `,_jsx(_components.code,{children:`OR_BIBED_15`}),` error from happening on the Firefox browser.`]})]}),`\n`,_jsxs(Update,{label:`v2.46.7`,description:`2024-11-05`,id:`v2-46-7`,children:[_jsx(Warning,{children:_jsx(_components.p,{children:`This version contains a bug in ApplePay integration, which may cause session failures when a billing address is required. Please use at least version 2.51.0`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Fixed the bug introduced in 2.46.0, which broke the localized error messages and displayed the error code in square brackets instead.`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.46.6`,description:`2024-10-31`,id:`v2-46-6`,children:[_jsx(Warning,{children:_jsx(_components.p,{children:`This version contains a bug in ApplePay integration, which may cause session failures when a billing address is required. Please use at least version 2.51.0`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsx(_components.p,{children:`This release addresses a Google Pay display item label bug introduced in 2.46.1. We’ve implemented a fix to ensure that a default label is set if neither the fee type nor line item description is provided, preventing missing labels that cause Google Pay errors.`}),_jsx(_components.p,{children:`For merchants using Google Pay, it is advisable to set both the line items description and fee type properties. For more details, please refer to the documentation:`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:_jsx(_components.a,{href:`/api-reference/v2.4/api-reference/client-session-api/create-a-client-session#body-order-line-items-description`,children:`Item description`})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:_jsx(_components.a,{href:`/api-reference/v2.4/api-reference/client-session-api/create-a-client-session#body-order-fees-type`,children:`Fee type`})}),`\n`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.46.5`,description:`2024-10-23`,id:`v2-46-5`,children:[_jsx(Warning,{children:_jsx(_components.p,{children:`This version contains a bug in ApplePay integration, which may cause session failures when a billing address is required. Please use at least version 2.51.0`})}),_jsx(Warning,{children:_jsx(_components.p,{children:`This version has been deprecated due to the implementation of Google Pay. Please upgrade to 2.46.6`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Bug fixes and improvements`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.46.4`,description:`2024-10-21`,id:`v2-46-4`,children:[_jsx(Warning,{children:_jsx(_components.p,{children:`This version has been deprecated due to the implementation of Google Pay. Please upgrade to 2.46.6`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsx(_components.p,{children:`Fixed a regression where Safari autofill was not populating fields.`})]}),`\n`,_jsxs(Update,{label:`v2.46.3`,description:`2024-10-18`,id:`v2-46-3`,children:[_jsx(Warning,{children:_jsx(_components.p,{children:`This version has been deprecated due to the implementation of Google Pay. Please upgrade to 2.46.6`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsx(_components.p,{children:`We’ve updated Klarna’s branding to reflect the latest guidelines.`}),_jsxs(_components.p,{children:[`You can now tailor the “Pay with” label on Klarna’s payment button using the `,_jsx(_components.code,{children:`buttonOptions`}),` property, enabling a more localized and relevant checkout experience based on your customers’ region and Klarna’s available payment methods. This feature is available for both direct `,_jsx(_components.a,{href:`/sdk/web/v2.x.x/primer/methods/showUniversalCheckout#parameters.universalCheckoutOptions-payment-methods-options.klarna-properties.buttonOptions-properties.text`,children:`Klarna`}),` integrations and through `,_jsx(_components.a,{href:`/sdk/web/v2.x.x/primer/methods/showUniversalCheckout#parameters.universalCheckoutOptions-payment-methods-options.adyenKlarna-properties.buttonOptions-properties.text`,children:`Adyen`}),`.`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧\\xA0Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Klarna locale now defaults to `,_jsx(_components.code,{children:`en_US`}),` if the provided locale is not supported.`]}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`2.46.2`})}),_jsx(_components.p,{children:`Skipped due to a pipeline error`})]}),`\n`,_jsxs(Update,{label:`v2.46.1`,description:`2024-10-04`,id:`v2-46-1`,children:[_jsx(Warning,{children:_jsx(_components.p,{children:`This version has been deprecated due to the implementation of Google Pay. Please upgrade to 2.46.6`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsx(_components.p,{children:`We’ve ensured compatibility of the SDK with older versions of Safari. Our logs indicated crashes related to the unsupported BroadcastChannel API in Safari versions earlier than 15.4, and this patch addresses those issues.`})]}),`\n`,_jsxs(Update,{label:`v2.46.0`,description:`2024-10-02`,id:`v2-46-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsx(_components.p,{children:`We’ve rebuilt our internal error and log reporting system to enhance debugging and issue resolution for your customers. This update improves stability and performance by removing external dependencies and ensuring that all unexpected errors are captured and reported.`}),_jsx(_components.p,{children:`Why Upgrade?`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`We’re able to address issues affecting your clients proactively.`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Faster resolution of support escalation tickets, thanks to more detailed session analysis.`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Continued improvements to the stability and performance of our SDK.`}),`\n`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.45.10`,description:`2024-09-26`,id:`v2-45-10`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Fix for PayPal - remove the condition check in SDK that would break PayPal for merchants that are passing top level `,_jsx(_components.code,{children:`amount`}),` property in the create client session request`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.45.9`,description:`2024-09-24`,id:`v2-45-9`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Fix the translation of “Cardholder name” in Bulgarian`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.45.8`,description:`2024-09-09`,id:`v2-45-8`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Bug fixes and improvements`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.45.7`,description:`2024-08-30`,id:`v2-45-7`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`An issue that prevented the SDK from being re-initialized when `,_jsx(_components.code,{children:`clientSessionCachingEnabled`}),` is set to `,_jsx(_components.code,{children:`true`}),` has been fixed.`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.45.6`,description:`2024-08-27`,id:`v2-45-6`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`CDN assets improvements`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.45.5`,description:`2024-08-27`,id:`v2-45-5`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Fixed typescript definitions generation`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.45.4`,description:`2024-08-22`,id:`v2-45-4`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsx(_components.p,{children:`Finnish, Korean, Catalan, Serbian, Slovenian, Ukrainian, Hebrew, and Indonesian languages are now supported.`})]}),`\n`,_jsxs(Update,{label:`v2.45.3`,description:`2024-08-20`,id:`v2-45-3`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsx(_components.p,{children:`Bug fixes and improvements`})]}),`\n`,_jsxs(Update,{label:`v2.45.2`,description:`2024-08-14`,id:`v2-45-2`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🚀\\xA0New feature`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Stripe ACH is now available ✨`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`We have added support for ACH via Stripe. ACH lets you accept payments from customers with a US bank account.`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`ACH Direct Debit is a reusable, delayed notification payment method. It can take up to 4 business days to receive acknowledgment of success or failure.`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`This release includes one-off payments and cancellation and refund actions. We aim to add support for recurring payments in the future.`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`With just a few clicks through Primer, you can easily integrate ACH via Stripe into your payment stack. Visit the integrations section of the dashboard to learn more, or\\xA0`,_jsx(_components.a,{href:`/connections/payment-methods/ach/stripe`,children:`consult the direct integration guide`}),`.`]}),`\n`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.45.1`,description:`2024-08-12`,id:`v2-45-1`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Fixed a bug on Firefox where the user needed to double-tab to focus on input fields.`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Added missing `,_jsx(_components.code,{children:`id`}),` properties to the Payment Method buttons.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Fixed an issue that prevented importing the Primer package on the server`}),`\n`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.45.0`,description:`2024-08-08`,id:`v2-45-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.p,{children:[`We simplified the Headless Checkout public interface. The options can now be set directly in the second parameter of the `,_jsx(_components.code,{children:`createHeadless`}),` method. Please update your implementation by moving the options from the previous `,_jsx(_components.code,{children:`headless.configure`}),` method, which is now deprecated. Check the `,_jsx(_components.a,{href:`/sdk/web/v2.x.x/primer/methods/createHeadless`,children:`updated documentation`}),` for more details.`]}),_jsxs(_components.p,{children:[`Note: This is a necessary update if you want to set the `,_jsx(_components.code,{children:`clientSessionCachingEnabled`}),` flag to `,_jsx(_components.code,{children:`true`}),`.`]}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Client Session caching`}),`\nIt 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, both\\xA0`,_jsx(_components.a,{href:`/sdk/web/v2.x.x/primer/methods/createHeadless#parameters.options-client-session-caching.clientSessionCachingEnabled`,children:`Headless`}),`\\xA0and\\xA0`,_jsx(_components.a,{href:`/sdk/web/v2.x.x/primer/methods/showUniversalCheckout#parameters.universalCheckoutOptions-client-session-caching.clientSessionCachingEnabled`,children:`Drop-in`}),`. Before enabling the flag to `,_jsx(_components.code,{children:`true`}),` it’s recommended to reach out to Primer support for additional verification since there are edge cases where it is not advised.`]})]}),`\n`,_jsxs(Update,{label:`v2.44.1`,description:`2024-08-06`,id:`v2-44-1`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Bug fixes and improvements.`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.44.0`,description:`2024-07-31`,id:`v2-44-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`A default font size for APM button text was added.`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.43.1`,description:`2024-07-23`,id:`v2-43-1`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Performance and monitoring enhancements.`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.43.0`,description:`2024-07-23`,id:`v2-43-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Enhanced reliability of configuration requests in poor connectivity conditions.`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Improved initialization script loading.`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Performance and monitoring enhancements.`}),`\n`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.42.7`,description:`2024-07-23`,id:`v2-42-7`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Performance and monitoring enhancements.`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.42.6`,description:`2024-07-17`,id:`v2-42-6`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Fixed Headless PayPal to work correctly when `,_jsx(_components.code,{children:`paymentFlow`}),` is set to `,_jsx(_components.code,{children:`PREFER_VAULT`}),`.`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.42.5`,description:`2024-07-16`,id:`v2-42-5`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Fixed an issue that prevented inputting card numbers with more than 16 digits.`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.42.4`,description:`2024-07-11`,id:`v2-42-4`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Fixed an issue where client session updates did not set the amount correctly on Headless Google Pay.`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.42.3`,description:`2024-06-27`,id:`v2-42-3`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`We have fixed an issue in `,_jsx(_components.code,{children:`AssetsManager.getPaymentMethod`}),`. Previously, the `,_jsx(_components.code,{children:`paymentMethodName`}),` parameter would return the recommended button text for a payment method, which could be null for many payment methods.\nWe have deprecated this parameter and added two new ones:`]}),`\n`]}),_jsxs(_components.p,{children:[_jsx(_components.code,{children:`buttonText`}),`: This is the recommended button text, e.g., “Pay with Google Pay.” However, it may be null for certain Payment Methods.`]}),_jsxs(_components.p,{children:[_jsx(_components.code,{children:`displayName`}),`:\\xA0This is the payment method name. E.g., “Google Pay”. This should be available for all payment methods.`]}),_jsxs(_components.p,{children:[`From now on, please use these new parameters based on your use case. For more information, see our `,_jsx(_components.a,{href:`/sdk/web/v2.x.x/primer-headless-checkout/methods/getAssetsManager#returns.IAssetsManager`,children:`docs`}),`.`]})]}),`\n`,_jsxs(Update,{label:`v2.42.0`,description:`2024-05-23`,id:`v2-42-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`💳 New APM`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`iDEAL via Adyen`})}),_jsxs(_components.p,{children:[`Adds the `,_jsx(_components.code,{children:`FormWithRedirectPaymentMethodManager`}),` that provides access to the configuration and methods necessary to:`]}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`load a list of all supported banks`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`submit user’s selection`}),`\n`]}),`\n`]}),_jsxs(_components.p,{children:[`For more information, see our `,_jsx(_components.a,{href:`/connections/payment-methods/ideal/adyen-headless?platform=web`,children:`payment method guide`}),`, and `,_jsx(_components.a,{href:`/sdk/web/v2.x.x/primer-headless-checkout/methods/createPaymentMethodManager#redirect`,children:`sdk reference`}),` docs for the `,_jsx(_components.code,{children:`FormWithRedirectPaymentMethodManager`}),`.`]})]}),`\n`,_jsxs(Update,{label:`v2.41.0`,description:`2024-04-12`,id:`v2-41-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🚀 New Feature`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Drop-In: `,_jsx(_components.a,{href:`https://en.wikipedia.org/wiki/Card_security_code`,children:`Card Security Code`}),` (CSC/CVV) recapture`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Vaulted cards can now optionally capture the customer’s CVV, which sometimes can increase approval rate`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`To enable this feature, create a client-session with the option `,_jsx(_components.a,{href:`/api-reference/v2.4/api-reference/client-session-api/create-a-client-session#request.body.paymentMethod.options.PAYMENT_CARD.captureVaultedCardCvv`,children:`captureVaultedCardCvv`})]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`CVV cannot be vaulted because of `,_jsx(_components.a,{href:`https://en.wikipedia.org/wiki/Payment_Card_Industry_Data_Security_Standard`,children:`PCI DSS`})]}),`\n`]}),`\n`]}),`\n`]}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Suppress noisy logs for `,_jsx(_components.code,{children:`sessionStorage.setItem`}),` and `,_jsx(_components.code,{children:`navigator.sendBeacon`}),` when the browser does not support them, or they are disallowed by the user, or when they fail for any other reason`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Prevents iframes from going opaque when the browser is set with a different `,_jsx(_components.code,{children:`color-scheme`})]}),`\n`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.40.4`,description:`2024-04-05`,id:`v2-40-4`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Upgraded PayPal order creation to the latest server-driven PayPal SDK`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`We were using an old way of creating a PayPal order (via `,_jsx(_components.code,{children:`actions.order.create`}),` from PayPal’s JS SDK) that PayPal is deprecating in June 2024.\nThis version upgrades a PayPal payment method order creation using Orders v2 APIs and PayPal JavaScript SDK`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`We introduced a change in the metadata field that is passed when creating a client session. Previously `,_jsx(_components.code,{children:`orderId`}),` in the client session would be passed to PayPal as the\\xA0`,_jsx(_components.code,{children:`custom\\\\_id`}),`. Now you have to pass\\xA0`,_jsx(_components.code,{children:`paypal_custom_id`}),`\\xA0 in the metadata.`]}),`\n`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.40.3`,description:`2024-04-03`,id:`v2-40-3`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Headless now correctly triggers `,_jsx(_components.code,{children:`onPaymentMethodAction`}),` events`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Now shows the loading spinner when a payment is being processed and the card payment method is not available`}),`\n`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.40.2`,description:`2024-03-27`,id:`v2-40-2`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`3DS popup buttons not being clickable`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Headless hosted inputs default height`}),`\n`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.40.1`,description:`2024-03-25`,id:`v2-40-1`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Checkout options `,_jsx(_components.a,{href:`/sdk/web/v2.x.x/primer-checkout/overview#properties.stylesheets`,children:`stylesheets`})]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Rename icon className to avoid CSS conflicts`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Change the default CVV input size to 4 digits`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Use redirect instead of popup when in an in-app browser`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Hide the loading spinner when there are no payment methods available`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Prevent PayPal from being stuck in infinite loading`}),`\n`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.40.0`,description:`2024-03-13`,id:`v2-40-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Resolved an issue that caused low authorization rate with Apple Pay for certain processors such as Cybersource when the user’s billing address was missing either the first name or last name on their Apple Pay wallet.\nIf Apple Pay is configured to capture the billing address, users will now be prompted with an error message within Apple Pay’s sheet indicating that they need to fill out the missing first name or last name in their Apple Pay wallet in order to proceed with the payment.`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Various internal improvements to enhance overall system stability and performance.`}),`\n`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.39.1`,description:`2024-03-07`,id:`v2-39-1`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Fixed a regression bug introduced in v2.37.0 that showed an error “This merchant is having trouble accepting your payment right now. Try using a different payment method. [OR_BIBED_06] OR_BIBED_06” when the user selected Google Pay, preventing them from paying.`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`You should now be able to propose Google Pay seamlessly as before.`}),`\n`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.39.0`,description:`2024-03-04`,id:`v2-39-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🚀 New Feature`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Support for Klarna Headless`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Our Klarna integration is now available on Headless Checkout on Web. Flows supported:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Pay now`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Pay later: Pay in 30 days`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Pay over time: Pay in 3-4 installments. First payment right away then the rest in installments (no interest)`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Fair financing: Installment plans of 6, 12, 24, and 36 months with flexible payments (with interest)`}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`The docs are available\\xA0`,_jsx(_components.a,{href:`/connections/payment-methods/klarna/headless/#handle-payment-method`,children:`here`}),`\\xA0and the Klarna Payment Manager reference is\\xA0`,_jsx(_components.a,{href:`/sdk/web/v2.x.x/primer-headless-checkout/methods/createPaymentMethodManager#klarna`,children:`here`}),`.`]}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Support for Klarna EMD`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_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.`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_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`]}),`\n`]}),`\n`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.38.1`,description:`2024-02-21`,id:`v2-38-1`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Fixed an issue with Klarna that caused the Klarna view to expand and then collapse when switching between payment categories.`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Fixed an inconsistency in the input’s metadata for\\xA0Headless Vault Manager CVV recapture. Developers can now rely on the “input.metadata.valid”\\xA0property to be their source of truth when checking if the validations have passed.`}),`\n`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.38.0`,description:`2024-02-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:`Added support for iDEAL via Adyen on Headless`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`2.37.2`,description:`2024-02-08`,id:`2-37-2`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Provide translated error message for CVV required error on Headless Checkout Vault Manager in `,_jsx(_components.code,{children:`cvvInput.metadata.error`})]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Note that `,_jsx(_components.code,{children:`cvvRequired`}),` errorCode is still exposed in `,_jsx(_components.code,{children:`cvvInput.metadata.errorCode`}),` property`]}),`\n`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.37.1`,description:`2024-01-31`,id:`v2-37-1`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Build artefact (webpack) that prevented `,_jsx(_components.code,{children:`npm`}),` package to run correctly in the browser`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.37.0`,description:`2024-01-29`,id:`v2-37-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🚀 New Feature`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Support for co-badged cards on Headless Checkout (documentation will come soon)`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.36.0`,description:`2024-01-22`,id:`v2-36-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🚀 New Feature`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Added Drop-in payment method: `,_jsx(_components.code,{children:`iDEAL via Stripe`})]}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Drop-in Checkout’s `,_jsx(_components.code,{children:`submitButton.amountVisible`}),` setting now correctly displays amount for card payments in the “Pay” button`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.35.1`,description:`2023-11-17`,id:`v2-35-1`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Validation for card information when using browsers’ built-in autofill is now more reliable, especially on Safari`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.35.0`,description:`2023-11-16`,id:`v2-35-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Optimized bundling for the core package and all payment methods`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`This should result in the SDK loading up to 30% faster`}),`\n`]}),`\n`]}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Fixed an issue with Klarna items using “description” rather than “name”`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.34.0`,description:`2023-10-24`,id:`v2-34-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🚀 New Feature`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Add support for initializing PayPal with a “capture” intent`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.33.4`,description:`2023-10-24`,id:`v2-33-4`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Card autofill when using browsers’ built-in autofill, especially Safari`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.33.3`,description:`2023-10-19`,id:`v2-33-3`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Improve usage analytics`}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Fix Klarna’s shipping fees and calculation for tax rates`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Fix server side rendering`}),`\n`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.33.2`,description:`2023-10-06`,id:`v2-33-2`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Fix the Drop-In and Headless Checkout not honouring the `,_jsx(_components.code,{children:`allowedCardNetworks`}),` configuration option.`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.33.1`,description:`2023-09-22`,id:`v2-33-1`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Improve performance of analytics on the SDK, now calls will be made when the user device is idle and won’t slow down the payment flow`}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Prevent unwanted retries of calls to Primer API`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.33.0`,description:`2023-09-15`,id:`v2-33-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Add `,_jsx(_components.code,{children:`addEventListener`}),` alias for the `,_jsx(_components.code,{children:`addListener`}),` method of `,_jsx(_components.code,{children:`CVVInput`})]}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Fix `,_jsx(_components.code,{children:`CVVInput`}),` events not being triggered`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.32.7`,description:`2023-08-28`,id:`v2-32-7`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Update Klarna button to better adhere with their guidelines`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Fix an issue with Drop-in that could happen when both Multibanco and Blik were active in the same session (which is extremely unlikely)`}),`\n`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.32.5`,description:`2023-08-07`,id:`v2-32-5`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Activate 3DS when cards are not configured in checkout builder.\nThis ensures that 3DS can be triggered even if only Google Pay or Apple Pay are presented.`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.32.4`,description:`2023-08-02`,id:`v2-32-4`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Fix 3DS not appearing properly in Headless Checkout`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Fix an issue that prevented users to pay with a vaulted PayPal account if a card is also present in the vault`}),`\n`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.32.3`,description:`2023-07-14`,id:`v2-32-3`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Fix an issue that caused\\xA0`,_jsx(_components.code,{children:`onResumeSuccess`}),`\\xA0to be called with an undefined resume token when\\xA0`,_jsx(_components.code,{children:`forceRedirect`}),`\\xA0is set to true`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Improve the logic for setting the size of the 3DS window`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Fix an issue raised in 2.32.0: the CVV input now forwards a\\xA0`,_jsx(_components.code,{children:`cvvRequired`}),`\\xA0error if the user has not yet interacted with it`]}),`\n`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.32.0`,description:`2023-07-10`,id:`v2-32-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🚀 New Feature`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Headless Vault Manager`})}),_jsxs(_components.p,{children:[`Add `,_jsx(_components.code,{children:`PrimerHeadlessCheckout.createVaultManager()`}),` which returns an instance of `,_jsx(_components.code,{children:`HeadlessVaultManager`}),`. It provides the following features:`]}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.a,{href:`/sdk/web/v2.x.x/primer-headless-checkout/methods/createVaultManager#param-fetch-vaulted-payment-methods`,children:`fetch a list`}),` of vaulted payment methods`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.a,{href:`/sdk/web/v2.x.x/primer-headless-checkout/methods/createVaultManager#param-delete-vaulted-payment-method`,children:`delete`}),` a vaulted payment method`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.a,{href:`/sdk/web/v2.x.x/primer-headless-checkout/methods/createVaultManager#param-start-payment-flow`,children:`perform a payment`}),` using a vaulted payment method`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.a,{href:`/sdk/web/v2.x.x/primer-headless-checkout/methods/createVaultManager#param-create-cvv-input`,children:`create an input to collect the CVV`}),`\\xA0for a vaulted payment method`]}),`\n`]}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🐛 Known issues`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`The CVV input does not forward a `,_jsx(_components.code,{children:`cvvRequired`}),` error if the user has not interacted with it.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`This has been fixed in 2.32.2`}),`\n`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.31.1`,description:`2023-06-26`,id:`v2-31-1`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Allow PayPal button to take the full width available`}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Fix a regression introduced in 2.28.1 that prevented `,_jsx(_components.code,{children:`onCheckoutFail`}),` from returning the payment object when available`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.31.0`,description:`2023-06-05`,id:`v2-31-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🚀 New Feature`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Validate cardholder name`})}),_jsxs(_components.p,{children:[`Add validation for cardholder name so that only\\xA0`,_jsx(_components.a,{href:`https://en.wikipedia.org/wiki/ISO/IEC_8859-1`,children:`Unicode Latin alphabet no.1`}),`\\xA0characters are allowed, which should improve 3DS pass rates.`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Change the “CVV” label to “Security code” in Japanese.`}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Fix an issue that caused a crash when closing Adyen Klarna’s redirect popup window. The issue was introduced in 2.30.0.`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Fix onPaymentMethodAction on Web not being triggered with Klarna.`}),`\n`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.30.0`,description:`2023-05-16`,id:`v2-30-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🚀 New Feature`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Popup windows fallback to redirect`})}),_jsx(_components.p,{children:`When popup windows are not supported - either because they were blocked by the browser, or one of its extensions/plugins, or any other reason - payment methods that would open them will instead redirect the current page.`}),_jsxs(_components.p,{children:[`Read the guide on\\xA0`,_jsx(_components.a,{href:`/sdk/web/v2.x.x/handle-redirects-and-deeplinks`,children:`how to handle redirects`}),` in order to ensure maximum compatibility.`]}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`This is a fallback mechanism, when popup windows are supported they will continue to open as expected.`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`forceRedirect`}),` is still supported.`]}),`\n`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.29.0`,description:`2023-05-11`,id:`v2-29-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Update english translations`}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Fix a bug where the submit button was disabled when moving to another screen and coming back to the checkout home, while any vaulted payment method was present.`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Enable the Apple pay button to work within a `,_jsx(_components.code,{children:`form`}),` tag`]}),`\n`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.28.1`,description:`2023-04-13`,id:`v2-28-1`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Fix an issue that caused `,_jsx(_components.code,{children:`onCheckoutFail`}),` to not be called when the payment ends up with a `,_jsx(_MdxComponentBoundary,{name:`TxnTag`,children:_jsx(TxnTag,{status:`PENDING`})}),` status and no required action. This could happen in the case of Atome when the user clicks “Back to merchant”`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Fix a bug that caused the flag `,_jsx(_components.code,{children:`form.inputLabelsVisible`}),` to also hide surcharge labels`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Improve surcharging support for PayPal when `,_jsx(_components.code,{children:`paypal.paymentFlow`}),` is set to `,_jsx(_components.code,{children:`PREFER_VAULT`})]}),`\n`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.28.0`,description:`2023-03-21`,id:`v2-28-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Improve internal visibility`}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Fix a race condition on Drop-in Checkout that caused card input fields to not appear`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Fix an issue that broke server-side rendering (`,_jsx(_components.code,{children:`crypto not defined`}),` or navigation not defined)`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Fix an issue causing screens to disappear after calling `,_jsx(_components.code,{children:`refreshClientSession`})]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Improve API error handling`}),`\n`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.27.2`,description:`2023-03-14`,id:`v2-27-2`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Fix a race condition on Headless that caused card input fields to not appear`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Fix an issue that prevented surcharging to be displayed for amex and diners club`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Fix the typescript definitions of the main SDK functions`}),`\n`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.27.1`,description:`2023-03-01`,id:`v2-27-1`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Fix an issue that prevented the UI of card surcharge to be updated after `,_jsx(_components.code,{children:`refreshClientSession()`}),` is called`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Add warning messages when Adyen via Klarna does not receive any payment method to display`}),`\n`]}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🐛 Known issues`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`If a surcharge for a card network is set, then removed after calling `,_jsx(_components.code,{children:`refreshClientSession()`}),`: the UI can fail to display the card fields`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`The checkout behaves strangely when surcharge is setup then removed or the other way around`}),`\n`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.27.0`,description:`2023-02-17`,id:`v2-27-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Google Pay now capture billing address information! 🥳`})}),_jsx(_components.p,{children:`Universal Checkout | Payment Methods`}),_jsx(_components.p,{children:`When initializing the checkout, you can now pass an additional setting to enforce billing address capture when your customers checkout with Google Pay.`}),_jsx(CodeBlock,{filename:`Typescript`,numberOfLines:`5`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes dark-plus dark-plus`,style:{backgroundColor:`#0B0C0E`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`5`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` Primer`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`showUniversalCheckout`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`clientToken`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`, {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` googlePay:`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` captureBillingAddress:`}),_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:` true`}),_jsx(_components.span,{style:{color:`#6A9955`,\"--shiki-dark\":`#6A9955`},children:` // defaults to false - not required`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` })`})}),`\n`]})})}),_jsx(Tip,{children:_jsx(_components.p,{children:`We recommend capturing the billing address via Google Pay if you’re processing Google Pay payment via Adyen. Alternatively, you can pass the billing address in the client session if you already posses it.`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Improve error handling when initializing the SDK`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Fix a regression from 2.25.1 issue that raised a `,_jsx(_components.code,{children:`malformed client token`}),` bug when the user selects a redirect-based payment method`]}),`\n`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.26.1`,description:`2023-02-07`,id:`v2-26-1`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`The SDK now speaks Chinese, Thai and Malay 🌐`})}),_jsx(_components.p,{children:`Universal Checkout | Locales`}),_jsx(_components.p,{children:`Your checkout can now display in any of the following new languages:`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Mainland Chinese (simplified characters) `,_jsx(_components.code,{children:`zh-CN`})]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Thai `,_jsx(_components.code,{children:`th`})]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Malay `,_jsx(_components.code,{children:`ms`})]}),`\n`]}),`\n`]}),_jsx(_components.p,{children:`It also has partial support for:`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Chinese from Hong-Kong `,_jsx(_components.code,{children:`zh-HK`})]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Chinese from Taiwan `,_jsx(_components.code,{children:`zh-TW`})]}),`\n`]}),`\n`]}),_jsx(Frame,{caption:`Chinese card details`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/CleanShot%202023-02-08%20at%2009.48.29@2x.png?fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=340197393b351133d59256e4beeb92e7`,\"data-og-width\":`736`,width:`736`,\"data-og-height\":`884`,height:`884`,\"data-path\":`images/changelogs/web/CleanShot 2023-02-08 at 09.48.29@2x.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/CleanShot%202023-02-08%20at%2009.48.29@2x.png?w=280\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=766bfb2841f72fb06f350c705f20a122 280w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/CleanShot%202023-02-08%20at%2009.48.29@2x.png?w=560\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=04b6db2c82a9401cf6e6d74c0fb843e5 560w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/CleanShot%202023-02-08%20at%2009.48.29@2x.png?w=840\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=5f266978cc09f33811092110a4c28e61 840w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/CleanShot%202023-02-08%20at%2009.48.29@2x.png?w=1100\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=ef8461a7275730ac2359be2682a77d22 1100w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/CleanShot%202023-02-08%20at%2009.48.29@2x.png?w=1650\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=91c845d9f923bc2a05700e731282f70d 1650w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/CleanShot%202023-02-08%20at%2009.48.29@2x.png?w=2500\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=ee98ea7500cf49c2bac6ddbdc164dc66 2500w`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsx(_components.p,{children:`Universal Checkout | Payment methods`}),_jsx(_components.p,{children:`This new version now forwards to Klarna all updates of the client session’s order.`}),_jsx(_components.p,{children:`This enables you to display a checkout with Klarna right next to a cart view or a voucher field that can modify the amount.`}),_jsxs(_components.p,{children:[`To implement this, make sure to call `,_jsx(_components.code,{children:`checkout.refreshClientSession()`})]}),_jsx(CodeBlock,{filename:`Javascript`,numberOfLines:`3`,language:`javascript`,children:_jsx(_components.pre,{className:`shiki shiki-themes dark-plus dark-plus`,style:{backgroundColor:`#0B0C0E`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},language:`javascript`,children:_jsxs(_components.code,{language:`javascript`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#4FC1FF`,\"--shiki-dark\":`#4FC1FF`},children:` checkout`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` = `}),_jsx(_components.span,{style:{color:`#C586C0`,\"--shiki-dark\":`#C586C0`},children:`await`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` Primer`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`showUniversalCheckout`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`clientToken`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`options`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6A9955`,\"--shiki-dark\":`#6A9955`},children:`// After you patched the client session`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#C586C0`,\"--shiki-dark\":`#C586C0`},children:`await`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` checkout`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`refreshClientSession`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`();`})]}),`\n`]})})}),_jsx(_components.p,{children:``}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Headless Checkout’s `,_jsx(_components.code,{children:`onAvailablePaymentMethodsLoad`}),` is now working properly`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Improved the support for specific versions of Webpack (`,_jsx(_components.code,{children:`window is undefined`}),` error)`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Improved the error handling of the client token`}),`\n`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.25.1`,description:`2023-01-25`,id:`v2-25-1`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Load time improved by ~20% 🏃♂️`})}),_jsx(_components.p,{children:`Universal Checkout | Performance`}),_jsx(_components.p,{children:`We are on a journey to create the most performant checkout available out there 🚀`}),_jsx(_components.p,{children:`Of course, this means reducing the time to load the SDK and present payment methods to your user 💪`}),_jsx(_components.p,{children:`This new version brings a few internal changes to how the SDK is loaded that decreases the load time by about 20%!`}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Known issues`})}),_jsxs(_components.p,{children:[`Headless Checkout’s `,_jsx(_components.code,{children:`onAvailablePaymentMethodsLoad`}),` is not working properly on this release. This has been addressed on v2.26.1.`]}),_jsx(_components.p,{children:`The validation of arguments passed to the main Primer functions is not working. This will be addressed in a new release. This has been addressed on v2.26.1`})]}),`\n`,_jsxs(Update,{label:`v2.24.0`,description:`2023-01-16`,id:`v2-24-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Add Processor 3DS to Headless Checkout`})}),_jsx(_components.p,{children:`Headless Checkout | Processor 3DS`}),_jsx(_components.p,{children:`When a processor does not enable Primer to use their agnostic 3DS, Primer automatically falls back to using their proprietary 3DS when possible.`}),_jsx(_components.p,{children:`This was already possible with the Drop-in Checkout - it is now supported by Headless Checkout! 🎉`}),_jsx(_components.p,{children:`When Processor 3DS is requested, Headless Checkout automatically displays an in-context modal view with the 3DS challenge!`})]}),`\n`,_jsxs(Update,{label:`v2.23.0`,description:`2023-01-06`,id:`v2-23-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.p,{children:[`#`,_jsx(_components.strong,{children:`✨ Improvements`}),` to Google Pay!`]}),_jsx(_components.p,{children:`Universal Checkout | Payment method`}),_jsx(_components.p,{children:`Google Pay SDK has recently received a face lift that enables merchants to further customize the Google Pay button!`}),_jsxs(_components.p,{children:[`Pass `,_jsx(_components.code,{children:`buttonSizeMode`}),` to the Google Pay options to define if the button should take the full size of the container, or if it should be static.`]}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Supported values are `,_jsx(_components.code,{children:`fill`}),` and `,_jsx(_components.code,{children:`static`})]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`⚠️ This mechanism replaces the `,_jsx(_components.code,{children:`buttonType`}),` values `,_jsx(_components.code,{children:`short`}),` and `,_jsx(_components.code,{children:`long`}),`.`]}),`\n`]}),`\n`]}),_jsxs(_components.p,{children:[`Pass `,_jsx(_components.code,{children:`buttonType`}),` to set what should be displayed on the Google Pay button.`]}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`buy`}),` (default)`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:_jsx(_components.code,{children:`book`})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:_jsx(_components.code,{children:`checkout`})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:_jsx(_components.code,{children:`donate`})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:_jsx(_components.code,{children:`order`})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:_jsx(_components.code,{children:`pay`})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:_jsx(_components.code,{children:`plain`})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:_jsx(_components.code,{children:`subscribe`})}),`\n`]}),`\n`]}),_jsxs(Frame,{caption:`Google Pay Buttons`,children:[_jsx(OptimizedImage,{src:`https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/donate_google.png?fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=877a0f45b1e9c9ba5333c456357978ac`,\"data-og-width\":`830`,width:`830`,\"data-og-height\":`130`,height:`130`,\"data-path\":`images/changelogs/web/donate_google.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/donate_google.png?w=280\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=030f6d665d05a4d2ee1007d73a1768e0 280w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/donate_google.png?w=560\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=90a0c76d682b35210f5425dd3b356bd6 560w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/donate_google.png?w=840\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=66cb2dbc8448633f46df1f41e987cb02 840w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/donate_google.png?w=1100\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=53853690233c9a30bbcca73e56bd1c48 1100w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/donate_google.png?w=1650\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=8cd7b624ecb1bc2202f8e27a02e2f3b4 1650w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/donate_google.png?w=2500\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=5ae67de44e8c151299159252cd95e672 2500w`}),_jsx(OptimizedImage,{src:`https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/subscribe_google.png?fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=3e4a529d6a1ffd8ef4d996d71ffb9667`,\"data-og-width\":`830`,width:`830`,\"data-og-height\":`130`,height:`130`,\"data-path\":`images/changelogs/web/subscribe_google.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/subscribe_google.png?w=280\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=e6566d76793d01b5a352d71437dc863c 280w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/subscribe_google.png?w=560\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=05ec7750a8c3677b1de5efcabd0400ed 560w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/subscribe_google.png?w=840\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=f1b04ff6e207faf39280763b3b51e214 840w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/subscribe_google.png?w=1100\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=1ce805839b3be2328268698e34ee036d 1100w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/subscribe_google.png?w=1650\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=cebae8a528aad46ad4b4000265100cf2 1650w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/subscribe_google.png?w=2500\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=78b1bec82e0ae9eac42a4cfc8d4b5060 2500w`})]}),_jsx(CodeBlock,{filename:`JavaScript`,numberOfLines:`8`,language:`javascript`,children:_jsx(_components.pre,{className:`shiki shiki-themes dark-plus dark-plus`,style:{backgroundColor:`#0B0C0E`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},language:`javascript`,children:_jsxs(_components.code,{language:`javascript`,numberOfLines:`8`,children:[_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`Primer`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`showUniversalCheckout`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`clientToken`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`, {`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`/\\\\* Other options \\\\*/`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`googlePay:`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`buttonSizeMode:`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` 'fill'`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`buttonType:`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` 'subscribe'`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`});`})}),`\n`]})})}),_jsx(_components.p,{children:``}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Fixed an issue with the sub-units of the currencies `,_jsx(_components.code,{children:`CRC`}),`, `,_jsx(_components.code,{children:`COP`}),` and `,_jsx(_components.code,{children:`HUF`})]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.22.0`,description:`2022-12-13`,id:`v2-22-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`iDeal via Worldpay! 🥳`})}),_jsx(_components.p,{children:`Universal Checkout | Payment Methods`}),_jsx(_components.p,{children:`This version introduces another iDeal integration method: this time with Worldpay 🎉`}),_jsx(Frame,{caption:`Select your bank`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/select_your_bank.webp?fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=6d401727d8aedb1475e9e2775780a057`,\"data-og-width\":`928`,width:`928`,\"data-og-height\":`1424`,height:`1424`,\"data-path\":`images/changelogs/web/select_your_bank.webp`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/select_your_bank.webp?w=280\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=cc26ab321a6382c1b5b7df600208fe80 280w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/select_your_bank.webp?w=560\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=19b4f332a658ad07454d48dd4b369d07 560w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/select_your_bank.webp?w=840\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=54da089feb2a8c1babbe09a7573ec7e3 840w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/select_your_bank.webp?w=1100\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=e2420b853560b027db18482b8cc7768d 1100w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/select_your_bank.webp?w=1650\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=fb52b841911267e9873ccf2c54c5e2fd 1650w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/select_your_bank.webp?w=2500\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=72d7ad2ad0ca7adfc2b04103727dc858 2500w`})})]}),`\n`,_jsxs(Update,{label:`v2.21.0`,description:`2022-12-05`,id:`v2-21-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Better support for manager types`})}),_jsx(_components.p,{children:`Universal Checkout | Integration`}),_jsx(Warning,{children:_jsx(_components.p,{children:`This version introduces a breaking change for Headless Checkout beta`})}),_jsxs(_components.p,{children:[`In the previous version, the callback `,_jsx(_components.code,{children:`onAvailablePaymentMethodTypes`}),` only returned a list of payment method strings. This made it difficult for developers to know how to implement each payment method.`]}),_jsxs(_components.p,{children:[`The new callback introduces the concept of `,_jsx(_components.code,{children:`managerType`}),` : each payment method has a `,_jsx(_components.code,{children:`managerType`}),` that describes which payment method manager to instantiate.`]}),_jsx(_components.p,{children:`This enables you to implement a whole payment method category in one go!`}),_jsx(CodeBlock,{filename:`TypeScript`,numberOfLines:`17`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes dark-plus dark-plus`,style:{backgroundColor:`#0B0C0E`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`17`,children:[_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6A9955`,\"--shiki-dark\":`#6A9955`},children:`// Before`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`headless`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`configure`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`({`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6A9955`,\"--shiki-dark\":`#6A9955`},children:`// Other options`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`onAvailablePaymentMethodsLoad`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`paymentMethods`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6A9955`,\"--shiki-dark\":`#6A9955`},children:`// paymentMethods is a list of strings representing the unique id of the payment method`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`})`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6A9955`,\"--shiki-dark\":`#6A9955`},children:`// Now`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`headless`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`configure`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`({`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6A9955`,\"--shiki-dark\":`#6A9955`},children:`// Other options`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`onAvailablePaymentMethodsLoad`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`paymentMethods`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6A9955`,\"--shiki-dark\":`#6A9955`},children:`// paymentMethods is a list of objects containing`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6A9955`,\"--shiki-dark\":`#6A9955`},children:\"// - `type`: the unique id of the payment method\"})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6A9955`,\"--shiki-dark\":`#6A9955`},children:\"// - `managerType`: the type of payment method manager. Can be `CARD`, `NATIVE`, or `REDIRECT`\"})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`})`})}),`\n`]})})}),_jsx(_components.p,{children:``}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Get access to the icons and names of payment methods on headless`})}),_jsx(_components.p,{children:`Universal Checkout | Integration`}),_jsxs(_components.p,{children:[`For most payment methods, you have full control over how the payment method should be presented. To assist you, Primer exposes the\\xA0`,_jsx(_components.code,{children:`AssetsManager`}),`\n\\xA0that enables you to retrieve the logo and main colors attached to each payment method.`]}),_jsx(CodeBlock,{filename:`TypeScript`,numberOfLines:`4`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes dark-plus dark-plus`,style:{backgroundColor:`#0B0C0E`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`4`,children:[_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#4FC1FF`,\"--shiki-dark\":`#4FC1FF`},children:` assetsManager`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` = `}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`headless`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`getAssetsManager`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`()`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#4FC1FF`,\"--shiki-dark\":`#4FC1FF`},children:`iconUrl`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#4FC1FF`,\"--shiki-dark\":`#4FC1FF`},children:`paymentMethodName`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#4FC1FF`,\"--shiki-dark\":`#4FC1FF`},children:`backgroundColor`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` } = `}),_jsx(_components.span,{style:{color:`#C586C0`,\"--shiki-dark\":`#C586C0`},children:`await`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` assetsManager`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`getPaymentMethodAsset`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`'ADYEN`}),_jsx(_components.span,{style:{color:`#D7BA7D`,\"--shiki-dark\":`#D7BA7D`},children:`\\\\_`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`IDEAL'`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`) `}),_jsx(_components.span,{style:{color:`#6A9955`,\"--shiki-dark\":`#6A9955`},children:\"// ADYEN\\\\_IDEAL comes from `paymentMethod.type`\"})]}),`\n`]})})}),_jsx(_components.p,{children:``}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Redirect payment methods are on Headless Checkout 🚀`})}),_jsx(_components.p,{children:`Universal Checkout | Integration`}),_jsx(_components.p,{children:`Some payment methods require the user to be redirected to another web page to capture its payment details. Headless Checkout on Web now supports these types of payment methods👩💻`}),_jsx(_components.p,{children:_jsx(_components.a,{href:`/checkout/headless#step-4-c%3A-handle-payment-methods-with-redirect`,children:`Head over to the documentation to implement these payment methods!`})}),_jsxs(_components.p,{children:[`When the user selects the payment method, call the\\xA0`,_jsx(_components.code,{children:`start`}),`\\xA0function. This function automatically:`]}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`opens a popup to present a loading indicator, then the payment method web page`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`shows an overlay on top of your page that prompts the user to focus on the popup`}),`\n`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.20.0`,description:`2022-12-05`,id:`v2-20-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔨 Fixed`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Fixed a bug causing Apple Pay to not properly handle currencies without minor units`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.19.1`,description:`2022-11-11`,id:`v2-19-1`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔨 Fixed`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Address bug which caused an internal API validation error when receiving a billing address back from Apple Pay without the `,_jsx(_components.code,{children:`state`}),` field.`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.19.0`,description:`2022-11-11`,id:`v2-19-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsx(_components.p,{children:_jsxs(_components.strong,{children:[`Added `,_jsx(_components.code,{children:`onPaymentCreationStart`}),` callback`]})}),_jsx(_components.p,{children:`Universal Checkout`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`You will now be able to rely on the `,_jsx(_components.code,{children:`onPaymentCreationStart`}),` callback to get notified before the checkout attempts to perform the following actions:`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Tokenize the selected payment method`}),`\n`]}),`\n`]}),_jsx(_components.p,{children:`Create a payment`}),_jsx(CodeBlock,{filename:`TypeScript`,numberOfLines:`16`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes dark-plus dark-plus`,style:{backgroundColor:`#0B0C0E`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`16`,children:[_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#4FC1FF`,\"--shiki-dark\":`#4FC1FF`},children:` checkout`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` = `}),_jsx(_components.span,{style:{color:`#C586C0`,\"--shiki-dark\":`#C586C0`},children:`await`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` Primer`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`showUniversalCheckout`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`clientToken`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`, {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`container:`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` '#container'`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`onPaymentCreationStart`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`() {`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6A9955`,\"--shiki-dark\":`#6A9955`},children:`// will be called before tokenization and payment creation`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6A9955`,\"--shiki-dark\":`#6A9955`},children:`// will be followed by calls of either onCheckoutComplete`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6A9955`,\"--shiki-dark\":`#6A9955`},children:`// or onCheckoutFail`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`},`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`onCheckoutComplete`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`({ `}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`payment`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` }) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`console`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`log`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`'onCheckoutComplete'`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`payment`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`},`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`onCheckoutFail`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`error`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`, { `}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`payment`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` }, `}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`handler`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`console`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`error`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`'onCheckoutFail'`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`error`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`payment`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`handler`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`?.`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`showErrorMessage`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`')`}),_jsx(_components.span,{style:{color:`#F44747`,\"--shiki-dark\":`#F44747`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`},`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`});`})}),`\n`]})})}),_jsx(_components.p,{children:``}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔨 Fixed`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Addressed bug which caused iframe events to not be fired with headless checkout implementation.`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.18.0`,description:`2022-11-04`,id:`v2-18-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Apple Pay, Google Pay and PayPal are landing on Headless Checkout 🚀`})}),_jsx(_components.p,{children:`Universal Checkout | Integration`}),_jsx(_components.p,{children:`Headless Checkout on Web now supports Apple Pay, Google Pay and PayPal 👩💻`}),_jsx(_components.p,{children:`With this new release, you can now ask Primer to display a button anywhere on the screen - and the SDK takes it from there!`}),_jsx(Frame,{caption:`Payment methods`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/payment_methods.png?fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=5c7d2e9786af88d248e08cb7d3a2cdc4`,\"data-og-width\":`784`,width:`784`,\"data-og-height\":`384`,height:`384`,\"data-path\":`images/changelogs/web/payment_methods.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/payment_methods.png?w=280\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=359075a5ef146089bcba7ed0fcaa03cc 280w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/payment_methods.png?w=560\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=677097a18fc1206369b62849377d3050 560w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/payment_methods.png?w=840\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=ecbc3b830d288433fa54d9c12052f649 840w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/payment_methods.png?w=1100\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=abcd9f2b0a49c8c598cbcb8a494e21e5 1100w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/payment_methods.png?w=1650\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=4f5ea66e977f08befc1507e55ec2ce0f 1650w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/payment_methods.png?w=2500\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=da4980fb430dd4d0e691f137f78a181b 2500w`})}),_jsx(_components.p,{children:_jsx(_components.a,{href:`/checkout/headless#web`,children:`Head over to the documentation to implement these payment methods!`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔨 Fixed`})}),_jsx(_components.p,{children:`Fix an issue that prevented headless to work using our npm package`})]}),`\n`,_jsxs(Update,{label:`2.17.1`,description:`2022-11-04`,id:`2-17-1`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔨 Fixed`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Address bug which caused the cardholder name to not be tokenized along with the other card information.`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Addressed bug which caused the `,_jsx(_components.code,{children:`onPaymentMethodAction`}),` callback to not be called.`]}),`\n`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.17.0`,description:`2022-10-25`,id:`v2-17-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Klarna via Adyen! 🥳`})}),_jsx(_components.p,{children:`Universal Checkout | Payment Methods`}),_jsx(_components.p,{children:`You will now be able to avail Klarna via Adyen for your customers. Klarna allows multiple payment options depending on the country in which the order is created.`}),_jsx(Frame,{caption:``,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/KlarnaButton.webp?fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=14f74160975dae6078762d9f214fc0be`,\"data-og-width\":`350`,width:`350`,\"data-og-height\":`45`,height:`45`,\"data-path\":`images/changelogs/web/KlarnaButton.webp`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/KlarnaButton.webp?w=280\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=b89a4d5ac55c238760f3d8e8de373447 280w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/KlarnaButton.webp?w=560\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=a51f5a4d83fb08404f19b2a459495871 560w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/KlarnaButton.webp?w=840\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=3a709cc4fe67ea68db34511e2e422543 840w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/KlarnaButton.webp?w=1100\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=9ac348c74b2e548870045ebc74a867e5 1100w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/KlarnaButton.webp?w=1650\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=162fa174301caa9aed044210ad53bbe7 1650w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/KlarnaButton.webp?w=2500\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=3a678191c4ceddcd553fbd2f8240934f 2500w`})}),_jsx(Frame,{caption:`Klarna`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/Klarna.webp?fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=90e4c70c8baf7eb7e8a61dd15d0cabb9`,\"data-og-width\":`360`,width:`360`,\"data-og-height\":`392`,height:`392`,\"data-path\":`images/changelogs/web/Klarna.webp`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/Klarna.webp?w=280\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=bbe7a5d0e2a50c182993cd27d3e4f347 280w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/Klarna.webp?w=560\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=63262eb4494957f7810b2dbfc0c89f49 560w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/Klarna.webp?w=840\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=df20db585dbd7c82be1cdf4ad23ea876 840w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/Klarna.webp?w=1100\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=03934e5da10fe39db2bc6f02be5c2c0e 1100w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/Klarna.webp?w=1650\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=a9901c328fe96fcb99e04379d8b10bcc 1650w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/Klarna.webp?w=2500\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=32cbeebd4c4a86f6ab942dba41b075c4 2500w`})}),_jsx(Tip,{children:_jsx(_components.p,{children:`If Klarna via Adyen only provides a single payment type, no list will be displayed, but the Klarna button will display the available payment type.`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔨 Fixed`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Fix bug where the card number input could not detect the AMEX card network type.`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Addressed edge case where a payment is created with an empty card form, resulting in an error. In this case, `,_jsx(_components.code,{children:`onCheckoutFail`}),` will now be called.`]}),`\n`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.16.1`,description:`2022-10-21`,id:`v2-16-1`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔨 Fixed`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Fix an issue with a 404 happening when loading the SDK in server-driven environments`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.16.0`,description:`2022-10-20`,id:`v2-16-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`[BETA]\\xA0Introducing Headless Checkout for complete customization! 🚀`})}),_jsx(_components.p,{children:`Universal Checkout | Integration`}),_jsx(_components.p,{children:`Universal Checkout on Web currently features an amazing drop-in UI that you can integrate with just a couple of lines of code 👩💻`}),_jsx(_components.p,{children:`A few months ago, we introduced Headless Universal Checkout for mobile platforms, providing more flexibility and control over the checkout experience. Headless checkout has received positive adoption, so it’s time to bring this integration type to our Web SDK! 🎉`}),_jsx(_components.p,{children:`From this version onward, in addition to the drop-in integration, Web SDK enables you to start a headless checkout integration 🚀`}),_jsx(Note,{children:_jsx(_components.p,{children:`💳\nThe first supported payment method is debit / credit card.\nAdditional payment methods - including Google Pay, Apple Pay and PayPal - are coming throughout November ✌️`})}),_jsx(Note,{children:_jsx(_components.p,{children:`Why beta?\nHeadless Universal Checkout is based on the battle-tested Web SDK, so it’s ready for production!\nWe want to provide the simplest and smoothest developer experience, so the API may change in the near future!`})}),_jsx(_components.p,{children:`What’s truly amazing is that headless checkout brings all the core Primer concepts that simplify your life as a developer 💪`}),_jsx(_components.p,{children:`So the creation of client sessions, the handling of payments in a PCI-compliant way, and the configuration of checkout via the Dashboard without a line a code work exactly the same way as with the drop-in integration 🎉`}),_jsx(_components.p,{children:_jsx(_components.em,{children:`With Headless Universal Checkout: you just have to focus on the UI while we take care of the rest 👌`})}),_jsx(CodeBlock,{filename:`TypeScript`,numberOfLines:`13`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes dark-plus dark-plus`,style:{backgroundColor:`#0B0C0E`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`13`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#4FC1FF`,\"--shiki-dark\":`#4FC1FF`},children:` headless`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` = `}),_jsx(_components.span,{style:{color:`#C586C0`,\"--shiki-dark\":`#C586C0`},children:`await`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` Primer`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`createHeadless`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`clientToken`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#C586C0`,\"--shiki-dark\":`#C586C0`},children:`await`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` headless`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`configure`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`({`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`onAvailablePaymentMethodsLoad`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`paymentMethodTypes`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6A9955`,\"--shiki-dark\":`#6A9955`},children:`// Handle payment methods`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`},`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`onCheckoutComplete`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`({ `}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`payment`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` }) {`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6A9955`,\"--shiki-dark\":`#6A9955`},children:`// Show success screen`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`},`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`onCheckoutFail`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`error`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`, { `}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`payment`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` }, `}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`handler`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6A9955`,\"--shiki-dark\":`#6A9955`},children:`// Show checkout fail`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#C586C0`,\"--shiki-dark\":`#C586C0`},children:`return`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` handler`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`showErrorMessage`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`();`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`});`})}),`\n`]})})}),_jsx(_components.p,{children:``}),_jsx(_components.p,{children:_jsx(_components.a,{href:`/checkout/headless#web`,children:`Check our guide on headless checkout to get started!`})}),_jsxs(Note,{children:[_jsx(_components.p,{children:`🧠`}),_jsxs(_components.p,{children:[`We’re looking for feedback to improve Headless Universal Checkout!\nAny thoughts to improve this feature?\n`,_jsx(_components.a,{href:`https://bit.ly/3Te6B9D`,children:`Join our Discord server`}),`, interact with our engineers and receive amazing swag!`]})]})]}),`\n`,_jsxs(Update,{label:`v2.15.0`,description:`2022-10-19`,id:`v2-15-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Bancontact Debit via Adyen 🏦`})}),_jsx(_components.p,{children:`Universal Checkout | Payment Methods`}),_jsx(_components.p,{children:`Your customers can now checkout with Bancontact Debit via Adyen using their bank card.`}),_jsx(Frame,{caption:``,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/pay_with_card.webp?fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=23c936ee0e305bd05aed75d68e3d5f03`,\"data-og-width\":`1024`,width:`1024`,\"data-og-height\":`132`,height:`132`,\"data-path\":`images/changelogs/web/pay_with_card.webp`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/pay_with_card.webp?w=280\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=6cbaae833fa3d5924deb03e073d5c347 280w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/pay_with_card.webp?w=560\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=f763cfbc5b8649f8e5e916ae2fffc203 560w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/pay_with_card.webp?w=840\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=6ea0c17f2894a130035dcb2744daf14b 840w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/pay_with_card.webp?w=1100\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=901b26c30ba71d3aef76cff51fc38dc3 1100w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/pay_with_card.webp?w=1650\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=5e7bac4465f5cb25e7b51706f9103b2a 1650w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/pay_with_card.webp?w=2500\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=b6665ef32343cd547635756526a4becd 2500w`})}),_jsx(_components.p,{children:`When your customer selects ‘Bancontact Pay with card’, they are then taken to a card form to enter their card details, where the CVV is not required.`}),_jsx(Frame,{caption:`Bancontact`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/bancontact.webp?fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=09ffc19f07f0f19adb4d417ce0832068`,\"data-og-width\":`986`,width:`986`,\"data-og-height\":`944`,height:`944`,\"data-path\":`images/changelogs/web/bancontact.webp`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/bancontact.webp?w=280\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=a0671447bd6565ee97304235ab8d5d45 280w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/bancontact.webp?w=560\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=29500c5b4ba13c4b4f746bb6c2cb29ab 560w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/bancontact.webp?w=840\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=585f3863a2d5abc16eab28938fd0c459 840w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/bancontact.webp?w=1100\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=cf1882893688a45dca218cc5876a1d07 1100w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/bancontact.webp?w=1650\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=8c5a2f64c17d6d18ece8dc97a086c80d 1650w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/bancontact.webp?w=2500\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=da2e7c42e1435064026b2527a1d93e8f 2500w`})})]}),`\n`,_jsxs(Update,{label:`v2.14.0`,description:`2022-10-17`,id:`v2-14-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Gift Card via PayNL KaartDirect! 🎁`})}),_jsx(_components.p,{children:`Universal Checkout | Payment Methods`}),_jsx(_components.p,{children:`You will now be able to offer a tailored gift card payment method button to your customers via PayNL KaartDirect.`}),_jsx(Frame,{caption:``,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/default-giftcard-button.svg?fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=81bfc8f7b03f49f5f27019394a840d57`,\"data-og-width\":`350`,width:`350`,\"data-og-height\":`45`,height:`45`,\"data-path\":`images/changelogs/web/default-giftcard-button.svg`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/default-giftcard-button.svg?w=280\u0026fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=1b4278b61e31392258cb4833489bd209 280w, https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/default-giftcard-button.svg?w=560\u0026fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=b981dcae6e18ecd51efc48fded842707 560w, https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/default-giftcard-button.svg?w=840\u0026fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=c87162b033887263ebe98aa7aea90ba3 840w, https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/default-giftcard-button.svg?w=1100\u0026fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=cf809124fab30a9fb61a6ee1a791258a 1100w, https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/default-giftcard-button.svg?w=1650\u0026fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=5fecd36c8e32d8ef527b4f2f846bff26 1650w, https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/default-giftcard-button.svg?w=2500\u0026fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=dae8cfa824b331c5a03757d8126b6e67 2500w`})})]}),`\n`,_jsxs(Update,{label:`v2.13.2`,description:`2022-10-14`,id:`v2-13-2`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔨 Fixed`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Fix submit button being disabled when no APMs are loaded`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.13.1`,description:`2022-10-07`,id:`v2-13-1`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Disable checkout autofocus! 👀`})}),_jsx(_components.p,{children:`Universal Checkout | Customization`}),_jsxs(_components.p,{children:[`When initializing the checkout, you can now pass an additional setting within the `,_jsx(_components.code,{children:`style`}),` object which disables the checkout from autofocusing the first available payment method or card input field.`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`EPS via Adyen 🏦`})}),_jsx(_components.p,{children:`Universal Checkout | Payment Methods`}),_jsx(_components.p,{children:`Your customers can now checkout with EPS via Adyen. This payment method exposes a list of banks which your customer can select to complete a payment with.`}),_jsx(Frame,{caption:``,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/primer-cc826789/aKCINByKFTdsMY2R/images/changelogs/web/EPS.svg?fit=max\u0026auto=format\u0026n=aKCINByKFTdsMY2R\u0026q=85\u0026s=092aff0cfcc701f404baa0734a9258e4`,\"data-og-width\":`350`,width:`350`,\"data-og-height\":`46`,height:`46`,\"data-path\":`images/changelogs/web/EPS.svg`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/primer-cc826789/aKCINByKFTdsMY2R/images/changelogs/web/EPS.svg?w=280\u0026fit=max\u0026auto=format\u0026n=aKCINByKFTdsMY2R\u0026q=85\u0026s=c32b6ce4f909cd976bfdb783f7af9040 280w, https://mintcdn.com/primer-cc826789/aKCINByKFTdsMY2R/images/changelogs/web/EPS.svg?w=560\u0026fit=max\u0026auto=format\u0026n=aKCINByKFTdsMY2R\u0026q=85\u0026s=10cc008cfe71dd5dae9b088f31488ef9 560w, https://mintcdn.com/primer-cc826789/aKCINByKFTdsMY2R/images/changelogs/web/EPS.svg?w=840\u0026fit=max\u0026auto=format\u0026n=aKCINByKFTdsMY2R\u0026q=85\u0026s=2b1403379c949865cfed97d6e63f083a 840w, https://mintcdn.com/primer-cc826789/aKCINByKFTdsMY2R/images/changelogs/web/EPS.svg?w=1100\u0026fit=max\u0026auto=format\u0026n=aKCINByKFTdsMY2R\u0026q=85\u0026s=b7518f1bcbc7a09c5107f277fd30e3fc 1100w, https://mintcdn.com/primer-cc826789/aKCINByKFTdsMY2R/images/changelogs/web/EPS.svg?w=1650\u0026fit=max\u0026auto=format\u0026n=aKCINByKFTdsMY2R\u0026q=85\u0026s=54ad5af589b328f890fa3287bb6a0ac8 1650w, https://mintcdn.com/primer-cc826789/aKCINByKFTdsMY2R/images/changelogs/web/EPS.svg?w=2500\u0026fit=max\u0026auto=format\u0026n=aKCINByKFTdsMY2R\u0026q=85\u0026s=b129a0b2412dd09fbc3ffb2f36e1e204 2500w`})}),_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/select_your_bank.webp?fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=6d401727d8aedb1475e9e2775780a057`,\"data-og-width\":`928`,width:`928`,\"data-og-height\":`1424`,height:`1424`,\"data-path\":`images/changelogs/web/select_your_bank.webp`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/select_your_bank.webp?w=280\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=cc26ab321a6382c1b5b7df600208fe80 280w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/select_your_bank.webp?w=560\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=19b4f332a658ad07454d48dd4b369d07 560w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/select_your_bank.webp?w=840\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=54da089feb2a8c1babbe09a7573ec7e3 840w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/select_your_bank.webp?w=1100\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=e2420b853560b027db18482b8cc7768d 1100w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/select_your_bank.webp?w=1650\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=fb52b841911267e9873ccf2c54c5e2fd 1650w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/select_your_bank.webp?w=2500\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=72d7ad2ad0ca7adfc2b04103727dc858 2500w`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔨 Fixed`})}),_jsxs(_components.p,{children:[`Add back support for `,_jsx(_components.code,{children:`onErrorMessageShow`}),` and `,_jsx(_components.code,{children:`onErrorMessageHide`}),` callbacks which notifies you of when to display your custom error message when using the manual payment flow.`]}),_jsx(Tip,{children:_jsxs(_components.p,{children:[`Take a look at our checkout `,_jsx(_components.a,{href:`/checkout/drop-in/customization#displaying-custom-errors`,children:`customization guide`}),` for more information on these callbacks.`]})})]}),`\n`,_jsxs(Update,{label:`v2.12.0`,description:`2022-09-30`,id:`v2-12-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`The start of Server Driven Payment Methods! 👏`})}),_jsx(_components.p,{children:`To speed up the implementation of payment methods, we have begun building out a frontend framework so we don’t need to build the frontend of every new payment method we integrate with! Instead, we can leverage the framework and render the frontend using a preset configuration. This also means that merchants will no longer need to keep upgrading SDK versions to get access to new APMs.`}),_jsx(_components.p,{children:`We have started this big project by rolling out this framework for Redirect APMs. So, going forward from this version onwards, all Redirect APMs will be server-driven and don’t require an SDK upgrade to get access to any new ones we integrate with! 🥳`}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔧 Fixes`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Update Clearpay naming to be Afterpay in the overlay dialog and loading page`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Enable our instance of PayPal to work if another instance of PayPal is running within the same window. The PayPal button now renders even if the merchant application is running a separate instance.`}),`\n`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.11.0`,description:`2022-09-23`,id:`v2-11-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Apple Pay now capture billing address information! 🥳`})}),_jsx(_components.p,{children:`Universal Checkout | Payment Methods`}),_jsx(_components.p,{children:`When initializing the checkout, you can now pass an additional setting to enforce billing address capture when your customers checkout with Apple Pay.`}),_jsx(CodeBlock,{filename:`TypeScript`,numberOfLines:`6`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes dark-plus dark-plus`,style:{backgroundColor:`#0B0C0E`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`6`,children:[_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`Primer`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`showUniversalCheckout`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`clientToken`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`, {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`applePay:`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`captureBillingAddress?`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`:`}),_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:` true`}),_jsx(_components.span,{style:{color:`#6A9955`,\"--shiki-dark\":`#6A9955`},children:` // defaults to false - not required`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`})`})}),`\n`]})})}),_jsx(_components.p,{children:``}),_jsx(Tip,{children:_jsxs(_components.p,{children:[`We recommend capturing the billing address via ApplePay if you’re processing Apple Pay payment via Adyen. Alternatively, you can pass the billing address in the client session if you already posses it. Read more about Apple Pay in our `,_jsx(_components.a,{href:`/connections/payment-methods/apple-pay/overview`,children:`documentation`}),`.`]})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`setClientToken → refreshClientToken 😎`})}),_jsx(_components.p,{children:`We’ve improved the experience when patching a client session`}),_jsxs(_components.p,{children:[`When you patch a client session by calling the PATCH /client session endpoint, you now no longer have to notify the checkout by calling `,_jsx(_components.code,{children:`setClientoken(clientToken)`}),` , there’s now a simpler alternative:`]}),_jsx(CodeBlock,{filename:`TypeScript`,numberOfLines:`8`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes dark-plus dark-plus`,style:{backgroundColor:`#0B0C0E`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`8`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`const checkout = await Primer.showUniversalCheckout(clientToken, {`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`// provide your settings`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`})`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`// This will result in the checkout`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`// being updated after patching a client session`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`checkout.refreshClientToken();`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),_jsx(_components.p,{children:``}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔨 Fixed`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`The checkout now no longer fails to apply surcharging to American Express cards`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.10.1`,description:`2022-09-20`,id:`v2-10-1`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(Warning,{children:[_jsx(_components.p,{children:`🚨`}),_jsx(_components.p,{children:`Recommend update! This release addresses a bug which causes the SDK to crash in Safari. If you are using the SDK version 2.5.0 or up - we highly recommend you update your integration to this version or higher.`})]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Better Klarna support! 🤯`})}),_jsx(_components.p,{children:`Universal Checkout | Payment Methods`}),_jsx(_components.p,{children:`We’ve introduced a bunch of changes to ensure that Klarna is now much more stable across many more scenarios:`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`We’ve expanded the locale, country code and currency support for Klarna. You’ll now be able to serve your customers better with Klarna across multiple territories.`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Klarna now works when passing tax in the client session. Feel free to add your tax amounts to each line items and Klarna will be able to interpret it as such.`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Klarna now also supports passing a discount amount. Passing a discount amount in the client session will be interpreted correctly by Klarna.`}),`\n`]}),`\n`]}),_jsx(Tip,{children:_jsxs(_components.p,{children:[`We recommend updating your SDK version to `,_jsx(_components.code,{children:`2.10.1`}),` if you’re availing Primer to your customers.`]})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔨 Fixed`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Fixed bug which caused SDK to crash in Safari browsers. This bug has been persisting since `,_jsx(_components.code,{children:`v2.5.0`}),` of the Web SDK`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.9.0`,description:`2022-09-12`,id:`v2-9-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsxs(_components.p,{children:[`Klarna now accepts the state property passed in the `,_jsx(_components.code,{children:`customer.billingAddress`}),` and `,_jsx(_components.code,{children:`customer.shippingAddress`}),` fields.`]}),_jsx(Tip,{children:_jsxs(_components.p,{children:[`We recommend updating your SDK version to `,_jsx(_components.code,{children:`2.9.0`}),` if you’re servicing customers with Klarna in the United States, Australia or Canada to avoid any validation errors from Klarna`]})})]}),`\n`,_jsxs(Update,{label:`v2.8.1`,description:`2022-09-05`,id:`v2-8-1`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔨 Fixed`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Adyen now receives the required information for performing 3DS`}),`\n`]}),_jsx(Tip,{children:_jsxs(_components.p,{children:[`If you need to perform 3DS via Adyen, it’s required that you update your integration to version `,_jsx(_components.code,{children:`2.8.1`})]})})]}),`\n`,_jsxs(Update,{label:`v2.8.0`,description:`2022-09-02`,id:`v2-8-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsx(_components.p,{children:_jsx(_components.em,{children:`More payment methods incoming!`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Bancontact - Payconiq via Adyen! 🤯`})}),_jsx(_components.p,{children:`Universal Checkout | Payment Methods`}),_jsx(_components.p,{children:`When checkout out using Bancontact - Payconiq your customer is redirected to the app either directly on their mobile device, or by scanning a QR code on Desktop.`}),_jsx(Frame,{caption:``,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/bancontact-payconiq-button.svg?fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=4bcc3c8313f607487d42af5424cd3cae`,\"data-og-width\":`320`,width:`320`,\"data-og-height\":`45`,height:`45`,\"data-path\":`images/changelogs/web/bancontact-payconiq-button.svg`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/bancontact-payconiq-button.svg?w=280\u0026fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=48e0ba4c0bf1857d71e93fecba4c3869 280w, https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/bancontact-payconiq-button.svg?w=560\u0026fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=cc107c3d022d2a3c518f2195402ced16 560w, https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/bancontact-payconiq-button.svg?w=840\u0026fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=a94c795ebe784fb7b7409707db4630e6 840w, https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/bancontact-payconiq-button.svg?w=1100\u0026fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=4189c3c6d26e797451e32607fcf7e106 1100w, https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/bancontact-payconiq-button.svg?w=1650\u0026fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=f9f39d4a7d0e2753ca59f36bed1ed47d 1650w, https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/bancontact-payconiq-button.svg?w=2500\u0026fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=7b83ce7233881bff003fd0e0c9c1f540 2500w`})}),_jsx(Tip,{children:_jsxs(_components.p,{children:[`Take a look at our Adyen Connection and the payment methods it supports on the `,_jsx(_components.a,{href:`https://dashboard.primer.io/connections/marketplace/detail/ADYEN`,children:`Dashboard`}),`.`]})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Omise from the far east 🌅`})}),_jsx(_components.p,{children:`Universal Checkout | Payment Methods`}),_jsxs(_components.p,{children:[`We’ve added support for PromptPay and TrueMoney via Omise. These payment methods can be used to serve your customers in Thailand.\n`,_jsx(_components.strong,{children:`PromptPay`})]}),_jsx(_components.p,{children:`Your customers will be able to pay using PromptPay by following a redirect after scanning the provided QR code using their mobile phones.`}),_jsx(Frame,{caption:``,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/promptpay-button.svg?fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=da61030a8b484708765db67cdd3e45b0`,\"data-og-width\":`320`,width:`320`,\"data-og-height\":`46`,height:`46`,\"data-path\":`images/changelogs/web/promptpay-button.svg`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/promptpay-button.svg?w=280\u0026fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=872a473f3b4fb22c9e91f924b9af1228 280w, https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/promptpay-button.svg?w=560\u0026fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=25ad214f4cf6a92f252bd6f45c37637d 560w, https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/promptpay-button.svg?w=840\u0026fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=163a4ae86e4bc25996e20853cdec39f0 840w, https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/promptpay-button.svg?w=1100\u0026fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=07afa3da71d7458ad7a5e92387ad13b7 1100w, https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/promptpay-button.svg?w=1650\u0026fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=96ab983c01114e2643217a6687b516b4 1650w, https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/promptpay-button.svg?w=2500\u0026fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=a396075aaba8db384d6daade6dc9f40c 2500w`})}),_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/primer-cc826789/wRH4rrRol8RXiYQW/images/changelogs/web/promptpay-omise.svg?fit=max\u0026auto=format\u0026n=wRH4rrRol8RXiYQW\u0026q=85\u0026s=84b32db94133586f0078e2876afac9dd`,\"data-og-width\":`360`,width:`360`,\"data-og-height\":`371`,height:`371`,\"data-path\":`images/changelogs/web/promptpay-omise.svg`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/primer-cc826789/wRH4rrRol8RXiYQW/images/changelogs/web/promptpay-omise.svg?w=280\u0026fit=max\u0026auto=format\u0026n=wRH4rrRol8RXiYQW\u0026q=85\u0026s=d1bd171cfcd4ef805d9d1792d390276b 280w, https://mintcdn.com/primer-cc826789/wRH4rrRol8RXiYQW/images/changelogs/web/promptpay-omise.svg?w=560\u0026fit=max\u0026auto=format\u0026n=wRH4rrRol8RXiYQW\u0026q=85\u0026s=3a450793af3226c1cec0b4ee82f9d6a7 560w, https://mintcdn.com/primer-cc826789/wRH4rrRol8RXiYQW/images/changelogs/web/promptpay-omise.svg?w=840\u0026fit=max\u0026auto=format\u0026n=wRH4rrRol8RXiYQW\u0026q=85\u0026s=ff538e1e4b3d638d6e70473f9d2f11c9 840w, https://mintcdn.com/primer-cc826789/wRH4rrRol8RXiYQW/images/changelogs/web/promptpay-omise.svg?w=1100\u0026fit=max\u0026auto=format\u0026n=wRH4rrRol8RXiYQW\u0026q=85\u0026s=f918b95c541520a501b89e09a8b00fb4 1100w, https://mintcdn.com/primer-cc826789/wRH4rrRol8RXiYQW/images/changelogs/web/promptpay-omise.svg?w=1650\u0026fit=max\u0026auto=format\u0026n=wRH4rrRol8RXiYQW\u0026q=85\u0026s=ad0a4a07f94364cc936718138632e674 1650w, https://mintcdn.com/primer-cc826789/wRH4rrRol8RXiYQW/images/changelogs/web/promptpay-omise.svg?w=2500\u0026fit=max\u0026auto=format\u0026n=wRH4rrRol8RXiYQW\u0026q=85\u0026s=d88520386d4a4354728fae4c883a691d 2500w`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`TrueMoney`})}),_jsx(_components.p,{children:`A popular e-wallet in Thailand, your customers can now select it as an option in the checkout and be redirected to complete their payment.`}),_jsx(Frame,{caption:``,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/truemoney-button.svg?fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=43119fe5591031ec5a1113c9d6dddd5a`,\"data-og-width\":`350`,width:`350`,\"data-og-height\":`45`,height:`45`,\"data-path\":`images/changelogs/web/truemoney-button.svg`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/truemoney-button.svg?w=280\u0026fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=4dbc532d23006a8a6b2942f84e6a686f 280w, https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/truemoney-button.svg?w=560\u0026fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=3523fd5f60a82134ae1099105ad33cb4 560w, https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/truemoney-button.svg?w=840\u0026fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=0d4db5e1d3600e553657ba68447000c1 840w, https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/truemoney-button.svg?w=1100\u0026fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=a896e436cca6dd5a5f70c42d008ec786 1100w, https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/truemoney-button.svg?w=1650\u0026fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=faa7f8dd9b283a98a86b22bb3789f2aa 1650w, https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/truemoney-button.svg?w=2500\u0026fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=5c9ed5747a041b53b98d67b5740ea84e 2500w`})}),_jsx(Tip,{children:_jsxs(_components.p,{children:[`Take a look at our Omise Connection and the payment methods it supports on the `,_jsx(_components.a,{href:`https://dashboard.primer.io/connections/marketplace/detail/OMISE`,children:`Dashboard`}),`.`]})})]}),`\n`,_jsxs(Update,{label:`v2.7.0`,description:`2022-08-26`,id:`v2-7-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsx(_components.p,{children:`The release train has arrived! 🚂`}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Multibanco via Adyen has arrived! 🎉`})}),_jsx(_components.p,{children:`Universal Checkout | Payment Methods`}),_jsx(_components.p,{children:`You can avail Multibanco via Adyen to your customers! Multibanco is a Portuguese Payment Method which allows customers to complete payments outside of the checkout’s context.`}),_jsx(Frame,{caption:``,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/Multibanco.svg?fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=2311a5d4f0aff729cba007165f535291`,\"data-og-width\":`350`,width:`350`,\"data-og-height\":`45`,height:`45`,\"data-path\":`images/changelogs/web/Multibanco.svg`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/Multibanco.svg?w=280\u0026fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=9d964019ea625d5573ae9f9a259bc0c0 280w, https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/Multibanco.svg?w=560\u0026fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=7b7474a8d18bcad9f0acf3892dc9346c 560w, https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/Multibanco.svg?w=840\u0026fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=cc1977cfa44fe7fb70087efff1309fcf 840w, https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/Multibanco.svg?w=1100\u0026fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=2011f41d2bc3fa6d0e5bd5723b7cb9a9 1100w, https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/Multibanco.svg?w=1650\u0026fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=99c1ca1a0e3012399f8244131076d8e3 1650w, https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/Multibanco.svg?w=2500\u0026fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=6083fe145815447f1f7af16b6c36e1d0 2500w`})}),_jsxs(Frame,{children:[_jsx(OptimizedImage,{src:`https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/Multibanco_confirmation.svg?fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=4fd871b981a8c7c6a0dd7e5ce77b8842`,\"data-og-width\":`360`,width:`360`,\"data-og-height\":`320`,height:`320`,\"data-path\":`images/changelogs/web/Multibanco_confirmation.svg`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/Multibanco_confirmation.svg?w=280\u0026fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=ffec2b6496007d774c0842257d5dcd8a 280w, https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/Multibanco_confirmation.svg?w=560\u0026fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=f52510ef588693fa6590be8a7666751e 560w, https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/Multibanco_confirmation.svg?w=840\u0026fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=408f45d048c67834ef00f799895d3691 840w, https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/Multibanco_confirmation.svg?w=1100\u0026fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=b4b6eed74f88ae0bf0651767956940f2 1100w, https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/Multibanco_confirmation.svg?w=1650\u0026fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=906acdec9e2ee31759a658d5407f9a17 1650w, https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/Multibanco_confirmation.svg?w=2500\u0026fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=05a55af9ab17d433ecdeb15a93cbff2b 2500w`}),_jsx(OptimizedImage,{src:`https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/Multibanco_summary.svg?fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=74f4bc04b2a5398c28673788f6627c19`,\"data-og-width\":`360`,width:`360`,\"data-og-height\":`368`,height:`368`,\"data-path\":`images/changelogs/web/Multibanco_summary.svg`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/Multibanco_summary.svg?w=280\u0026fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=378bebc508240de267c4748e76ba0e6f 280w, https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/Multibanco_summary.svg?w=560\u0026fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=2611f113fc699ebd036a378df470d7e3 560w, https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/Multibanco_summary.svg?w=840\u0026fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=3b05d3e497afe834f106bde2c17006e0 840w, https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/Multibanco_summary.svg?w=1100\u0026fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=6c3b1e6615e1e90e456b1d1e5afb7c3a 1100w, https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/Multibanco_summary.svg?w=1650\u0026fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=183741fa0292c93dfb834a5ee60c054e 1650w, https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/Multibanco_summary.svg?w=2500\u0026fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=51391d133bacdb52d6727ef0c746b001 2500w`})]}),_jsx(Tip,{children:_jsxs(_components.p,{children:[`Take a look at our PacyPay Connection and the payment methods it supports on the `,_jsx(_components.a,{href:`https://dashboard.primer.io/connections/marketplace/detail/PACYPAY`,children:`Dashboard`}),`.`]})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`PacyPay payment methods incoming! 🎉`})}),_jsx(_components.p,{children:`Universal Checkout | Payment Methods`}),_jsx(_components.p,{children:`We’ve added support for both Alipay+ and WeChat pay via Onerway`}),_jsxs(Frame,{caption:`AliPay+ \u0026 WeChat Pay`,children:[_jsx(OptimizedImage,{src:`https://mintcdn.com/primer-cc826789/aKCINByKFTdsMY2R/images/changelogs/web/AlipayPlus.svg?fit=max\u0026auto=format\u0026n=aKCINByKFTdsMY2R\u0026q=85\u0026s=9a88e411dcb37ab318ab78625d3af292`,\"data-og-width\":`350`,width:`350`,\"data-og-height\":`46`,height:`46`,\"data-path\":`images/changelogs/web/AlipayPlus.svg`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/primer-cc826789/aKCINByKFTdsMY2R/images/changelogs/web/AlipayPlus.svg?w=280\u0026fit=max\u0026auto=format\u0026n=aKCINByKFTdsMY2R\u0026q=85\u0026s=5a625dff023f9931f2e77a6686d729c4 280w, https://mintcdn.com/primer-cc826789/aKCINByKFTdsMY2R/images/changelogs/web/AlipayPlus.svg?w=560\u0026fit=max\u0026auto=format\u0026n=aKCINByKFTdsMY2R\u0026q=85\u0026s=c1361290840beec6cca458cd40cf9ef6 560w, https://mintcdn.com/primer-cc826789/aKCINByKFTdsMY2R/images/changelogs/web/AlipayPlus.svg?w=840\u0026fit=max\u0026auto=format\u0026n=aKCINByKFTdsMY2R\u0026q=85\u0026s=7220d72fd4c6c00646210f90d360844c 840w, https://mintcdn.com/primer-cc826789/aKCINByKFTdsMY2R/images/changelogs/web/AlipayPlus.svg?w=1100\u0026fit=max\u0026auto=format\u0026n=aKCINByKFTdsMY2R\u0026q=85\u0026s=658e7e503be43cf43866eb2305bce038 1100w, https://mintcdn.com/primer-cc826789/aKCINByKFTdsMY2R/images/changelogs/web/AlipayPlus.svg?w=1650\u0026fit=max\u0026auto=format\u0026n=aKCINByKFTdsMY2R\u0026q=85\u0026s=f7fa386b8b2b7fec6479685e61227128 1650w, https://mintcdn.com/primer-cc826789/aKCINByKFTdsMY2R/images/changelogs/web/AlipayPlus.svg?w=2500\u0026fit=max\u0026auto=format\u0026n=aKCINByKFTdsMY2R\u0026q=85\u0026s=eca68b769d8ee39d2dfbfb6fa1d17660 2500w`}),_jsx(`br`,{}),_jsx(OptimizedImage,{src:`https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/WeChatPay.svg?fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=d3d2fb1e9dc29b52651cd3ea4d8f9290`,\"data-og-width\":`351`,width:`351`,\"data-og-height\":`45`,height:`45`,\"data-path\":`images/changelogs/web/WeChatPay.svg`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/WeChatPay.svg?w=280\u0026fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=ff8262ad388c2718ab67220bbb662fe4 280w, https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/WeChatPay.svg?w=560\u0026fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=650f0556768615d1812fb70b063bcc93 560w, https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/WeChatPay.svg?w=840\u0026fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=d31facc6f5b9c851b5310a272a578aff 840w, https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/WeChatPay.svg?w=1100\u0026fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=360f584a58d74ed5529f6ca188f719c6 1100w, https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/WeChatPay.svg?w=1650\u0026fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=9129ad61b2de9dcb60dbf3a1de961f51 1650w, https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/WeChatPay.svg?w=2500\u0026fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=170291cf6ddd8b9fe466cf86535e4f8e 2500w`})]}),_jsx(Tip,{children:_jsxs(_components.p,{children:[`Take a look at our PacyPay Connection and the payment methods it supports on the `,_jsx(_components.a,{href:`https://dashboard.primer.io/connections/marketplace/detail/PACYPAY`,children:`Dashboard`}),`.`]})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`We’ve added support for Afterpay! 🎉`})}),_jsx(_components.p,{children:`Universal Checkout | Payment Methods`}),_jsx(_components.p,{children:`Afterpay (Clearpay) is a Buy Now Pay Later payment method in the UK, France, Spain and Italy which offers customers the option to pay in 4 interest free instalments! 😎`}),_jsx(Frame,{caption:``,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/primer-cc826789/aKCINByKFTdsMY2R/images/changelogs/web/Afterpay.svg?fit=max\u0026auto=format\u0026n=aKCINByKFTdsMY2R\u0026q=85\u0026s=8e2a6e36160e59e66a2d678c3aed0a05`,\"data-og-width\":`351`,width:`351`,\"data-og-height\":`45`,height:`45`,\"data-path\":`images/changelogs/web/Afterpay.svg`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/primer-cc826789/aKCINByKFTdsMY2R/images/changelogs/web/Afterpay.svg?w=280\u0026fit=max\u0026auto=format\u0026n=aKCINByKFTdsMY2R\u0026q=85\u0026s=d21e71a16ab941b4f63719e6b44b68c5 280w, https://mintcdn.com/primer-cc826789/aKCINByKFTdsMY2R/images/changelogs/web/Afterpay.svg?w=560\u0026fit=max\u0026auto=format\u0026n=aKCINByKFTdsMY2R\u0026q=85\u0026s=1bdd5805179d8f9f6861818537091cdb 560w, https://mintcdn.com/primer-cc826789/aKCINByKFTdsMY2R/images/changelogs/web/Afterpay.svg?w=840\u0026fit=max\u0026auto=format\u0026n=aKCINByKFTdsMY2R\u0026q=85\u0026s=98823fdd07fc1399387c740d3fc72052 840w, https://mintcdn.com/primer-cc826789/aKCINByKFTdsMY2R/images/changelogs/web/Afterpay.svg?w=1100\u0026fit=max\u0026auto=format\u0026n=aKCINByKFTdsMY2R\u0026q=85\u0026s=44cc1db4e5ebac9a0c7f507193910b82 1100w, https://mintcdn.com/primer-cc826789/aKCINByKFTdsMY2R/images/changelogs/web/Afterpay.svg?w=1650\u0026fit=max\u0026auto=format\u0026n=aKCINByKFTdsMY2R\u0026q=85\u0026s=985956084b3819abe5c8f31f5b21b835 1650w, https://mintcdn.com/primer-cc826789/aKCINByKFTdsMY2R/images/changelogs/web/Afterpay.svg?w=2500\u0026fit=max\u0026auto=format\u0026n=aKCINByKFTdsMY2R\u0026q=85\u0026s=4dfe146d37372182f67d2169d2078109 2500w`})}),_jsx(Tip,{children:_jsxs(_components.p,{children:[`Take a look at our Afterpay Connection and the payment methods it supports on the `,_jsx(_components.a,{href:`https://dashboard.primer.io/connections/marketplace/detail/CLEARPAY`,children:`Dashboard`}),`.`]})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Increased control over payment method actions 🔍`})}),_jsx(_components.p,{children:`Universal Checkout | Payment Method Callback`}),_jsx(_components.p,{children:`There are times when you would want to know (in real time), which payment method was selected by the customer. This added transparency allows you to perform actions, like updating your UI when a payment method is selected/unselected.`}),_jsxs(_components.p,{children:[`To receive updates on which payment method was selected by a customer, you can now make use of the `,_jsx(_components.code,{children:`onPaymentMethodAction`}),` callback.`]}),_jsx(CodeBlock,{filename:`JavaScript`,numberOfLines:`8`,language:`javascript`,children:_jsx(_components.pre,{className:`shiki shiki-themes dark-plus dark-plus`,style:{backgroundColor:`#0B0C0E`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},language:`javascript`,children:_jsxs(_components.code,{language:`javascript`,numberOfLines:`8`,children:[_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#4FC1FF`,\"--shiki-dark\":`#4FC1FF`},children:` options`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` = {`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`/\\\\* Other checkout options ... \\\\*/`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`onPaymentMethodAction`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`action`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`, { `}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`paymentMethodType`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` }) {`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6A9955`,\"--shiki-dark\":`#6A9955`},children:`// Notifies you when a specific payment method has been selected or unselected`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6A9955`,\"--shiki-dark\":`#6A9955`},children:`// action will either be 'PAYMENT\\\\_METHOD\\\\_SELECTED' or 'PAYMENT\\\\_METHOD\\\\_UNSELECTED'`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`},`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`};`})}),`\n`]})})}),_jsx(_components.p,{children:``}),_jsx(_components.p,{children:`As an example, selecting a payment method could result in displaying product recommendations that are commonly associated with customers who use that payment method. Additional context on when a customer unselects a payment method is also provided, which again gives you an opportunity to customize the customer experience.`}),_jsx(_components.p,{children:`More visibility. More control. More happy customers.`})]}),`\n`,_jsxs(Update,{label:`v2.6.0`,description:`2022-08-22`,id:`v2-6-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsx(_components.p,{children:`A small release, but we all know about dynamite and small packages`}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`MB all the WAY 💸`})}),_jsx(_components.p,{children:`Universal Checkout | Payment Methods`}),_jsx(_components.p,{children:`We’ve added support for MBWAY via Adyen 🎉\nMBWAY is a leading payments app in Portugal. Our integration will allow your customers to pay using their phone numbers and complete their payments from their MBWAY apps.`}),_jsx(Frame,{caption:``,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/mbway.webp?fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=1e587c8f920c1e65b0f9c4160fd2a657`,\"data-og-width\":`911`,width:`911`,\"data-og-height\":`94`,height:`94`,\"data-path\":`images/changelogs/web/mbway.webp`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/mbway.webp?w=280\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=622eaf20a37eae6b24dcc3eaad96e9d0 280w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/mbway.webp?w=560\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=f506790161956a5bd611132bb7a61339 560w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/mbway.webp?w=840\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=0a72f634cb691c5273eed103d0fa4ace 840w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/mbway.webp?w=1100\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=59c8f9744ff014f6b889b164fe5ebfe7 1100w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/mbway.webp?w=1650\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=8dc85064544b43964ff7b09024284c8e 1650w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/mbway.webp?w=2500\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=03d745af3b240f0307c57e9572ee606f 2500w`})}),_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/mbway_pay.webp?fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=fad6d76604a618e3b974ea2f00e7f95b`,\"data-og-width\":`1210`,width:`1210`,\"data-og-height\":`676`,height:`676`,\"data-path\":`images/changelogs/web/mbway_pay.webp`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/mbway_pay.webp?w=280\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=5a390763652292e3cc6e3bf8b60337b8 280w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/mbway_pay.webp?w=560\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=20a319c40b4155a07c20e68590864b37 560w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/mbway_pay.webp?w=840\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=833a6a7be35fcf99e93e24f8af7709c4 840w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/mbway_pay.webp?w=1100\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=c72d74ec025514efa22b14f7b7bcca85 1100w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/mbway_pay.webp?w=1650\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=79e4ec2a92b99eb8428668018a23950a 1650w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/mbway_pay.webp?w=2500\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=73c3d93162b3b52f03512a83418649ea 2500w`})}),_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/mbway.webp?fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=1e587c8f920c1e65b0f9c4160fd2a657`,\"data-og-width\":`911`,width:`911`,\"data-og-height\":`94`,height:`94`,\"data-path\":`images/changelogs/web/mbway.webp`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/mbway.webp?w=280\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=622eaf20a37eae6b24dcc3eaad96e9d0 280w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/mbway.webp?w=560\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=f506790161956a5bd611132bb7a61339 560w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/mbway.webp?w=840\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=0a72f634cb691c5273eed103d0fa4ace 840w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/mbway.webp?w=1100\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=59c8f9744ff014f6b889b164fe5ebfe7 1100w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/mbway.webp?w=1650\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=8dc85064544b43964ff7b09024284c8e 1650w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/mbway.webp?w=2500\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=03d745af3b240f0307c57e9572ee606f 2500w`})}),_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/mbway_pay.webp?fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=fad6d76604a618e3b974ea2f00e7f95b`,\"data-og-width\":`1210`,width:`1210`,\"data-og-height\":`676`,height:`676`,\"data-path\":`images/changelogs/web/mbway_pay.webp`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/mbway_pay.webp?w=280\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=5a390763652292e3cc6e3bf8b60337b8 280w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/mbway_pay.webp?w=560\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=20a319c40b4155a07c20e68590864b37 560w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/mbway_pay.webp?w=840\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=833a6a7be35fcf99e93e24f8af7709c4 840w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/mbway_pay.webp?w=1100\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=c72d74ec025514efa22b14f7b7bcca85 1100w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/mbway_pay.webp?w=1650\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=79e4ec2a92b99eb8428668018a23950a 1650w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/mbway_pay.webp?w=2500\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=73c3d93162b3b52f03512a83418649ea 2500w`})}),_jsx(Tip,{children:_jsxs(_components.p,{children:[`MBWAY via Adyen is only available in Portugal. Take a look at our Adyen Connection and the payment methods it supports on the `,_jsx(_components.a,{href:`https://dashboard.primer.io/connections/marketplace/detail/ADYEN`,children:`Dashboard`}),`.`]})})]}),`\n`,_jsxs(Update,{label:`v2.5.0`,description:`2022-08-12`,id:`v2-5-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsx(_components.p,{children:`New payment methods and a couple of UI improvements!`}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Paytrail and Payshop via Adyen is now supported 💰`})}),_jsx(_components.p,{children:`You can now use Paytrail and Payshop via Adyen.`}),_jsxs(Frame,{caption:`Paytrail \u0026 Payshop`,children:[_jsx(OptimizedImage,{src:`https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/paytrail.svg?fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=112f66b5e9eceb6ff00ec17a90c4586e`,\"data-og-width\":`350`,width:`350`,\"data-og-height\":`45`,height:`45`,\"data-path\":`images/changelogs/web/paytrail.svg`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/paytrail.svg?w=280\u0026fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=791ac6980328e3d2406d3678cf1d14fa 280w, https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/paytrail.svg?w=560\u0026fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=64233bdc05e219f294ef7dfa6101959c 560w, https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/paytrail.svg?w=840\u0026fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=dedd2b5ea0ad0baec69e78ff36d2ca09 840w, https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/paytrail.svg?w=1100\u0026fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=4f093bf6ecf8ff45824833a17434b750 1100w, https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/paytrail.svg?w=1650\u0026fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=4fdc2897d8862d514be7efc1fe3e44f2 1650w, https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/paytrail.svg?w=2500\u0026fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=019a545ae8778637310ffb2f77c8ca3f 2500w`}),_jsx(OptimizedImage,{src:`https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/payshop.svg?fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=36cc8cf257ac3172e6b3e05836ea46e6`,\"data-og-width\":`351`,width:`351`,\"data-og-height\":`46`,height:`46`,\"data-path\":`images/changelogs/web/payshop.svg`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/payshop.svg?w=280\u0026fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=f57ea46cdf72913c405ffe84034ba6df 280w, https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/payshop.svg?w=560\u0026fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=eb485faf03e9183be1746c57ec996b4e 560w, https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/payshop.svg?w=840\u0026fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=fe47bce5400db271233de8376940d376 840w, https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/payshop.svg?w=1100\u0026fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=0c93591b2a3ec4764c5814cdba0be591 1100w, https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/payshop.svg?w=1650\u0026fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=b4831728505f26c056d54dbb543d6a0d 1650w, https://mintcdn.com/primer-cc826789/qmiDVkdb6rhZH0fj/images/changelogs/web/payshop.svg?w=2500\u0026fit=max\u0026auto=format\u0026n=qmiDVkdb6rhZH0fj\u0026q=85\u0026s=667e52bb6e3fc1a99d76b6356b76a68a 2500w`})]}),_jsx(Tip,{children:_jsxs(_components.p,{children:[`Take a look at our Adyen Connection and the payment methods it supports on the `,_jsx(_components.a,{href:`https://dashboard.primer.io/connections/marketplace/detail/ADYEN`,children:`Dashboard`})]})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Improved error handling 🔴`})}),_jsx(_components.p,{children:`Universal Checkout | Payment Methods`}),_jsxs(_components.p,{children:[`If no payment methods are returned, you will now be notified in `,_jsx(_components.code,{children:`onCheckoutFail`})]}),_jsx(_components.p,{children:`Before, an error would be logged in the console if no payment methods were loaded, but now you can adapt your UI in the case that no payment methods could be retrieved for the given checkout session.`}),_jsx(Tip,{children:_jsxs(_components.p,{children:[`Take a look at the `,_jsx(_components.code,{children:`onCheckoutFail`}),` callback in the `,_jsx(_components.a,{href:`https://www.npmjs.com/package/@primer-io/checkout-web`,children:`web SDKs readme`}),` for more information on how you can best handle checkout failure.`]})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Bug fixes 🐛`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Autofocus will now be applied to the first field in the card form and won’t automatically jump to the cardholder name input.`}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.4.0`,description:`2022-08-04`,id:`v2-4-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsx(_components.p,{children:`This release contains a host of exciting new features!`}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Amount on submit button 💰`})}),_jsx(_components.p,{children:`You can now display the amount charged to the customer on the submit button 😎`}),_jsx(Frame,{caption:`Submit Button`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/submit.webp?fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=c54b9a9777f8bfb5112db49e116ad54f`,\"data-og-width\":`449`,width:`449`,\"data-og-height\":`354`,height:`354`,\"data-path\":`images/changelogs/web/submit.webp`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/submit.webp?w=280\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=3bfe48c16de0fcd3d5b304a4cb89f989 280w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/submit.webp?w=560\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=8f7e62e39a0c094e29b4c8bcda3b6fe3 560w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/submit.webp?w=840\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=779f33d6e7041b965d0ea2525f458dfc 840w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/submit.webp?w=1100\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=833400d127940ba3ca6fb4b656b02839 1100w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/submit.webp?w=1650\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=d615faf725dc9b71adb9aed87d764a14 1650w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/submit.webp?w=2500\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=c3d357c5fdd543dfde3aa15a586de064 2500w`})}),_jsxs(_components.p,{children:[`To avail the amount on the submit button, you can pass `,_jsx(_components.code,{children:`submitButton.amountVisible: true`}),` as a checkout option:`]}),_jsx(CodeBlock,{filename:`TypeScript`,numberOfLines:`6`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes dark-plus dark-plus`,style:{backgroundColor:`#0B0C0E`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`6`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#4FC1FF`,\"--shiki-dark\":`#4FC1FF`},children:` checkout`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` = `}),_jsx(_components.span,{style:{color:`#C586C0`,\"--shiki-dark\":`#C586C0`},children:`await`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` Primer`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`showUniversalCheckout`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`clientToken`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`, {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`container:`}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:` '#container'`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`submitButton:`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`amountVisible:`}),_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:` true`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),_jsx(_components.p,{children:``}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Trigger card form submission on enter press ↩️`})}),_jsx(_components.p,{children:`Universal Checkout`}),_jsx(_components.p,{children:`You no longer need a mouse to make card payments 🙃`}),_jsx(Frame,{caption:`Submit on Enter`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/submit-on-enter.gif?s=5ac80501ccb6fc3592319af2555ed9fb`,\"data-og-width\":`554`,width:`554`,\"data-og-height\":`436`,height:`436`,\"data-path\":`images/changelogs/web/submit-on-enter.gif`,\"data-optimize\":`true`,\"data-opv\":`3`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`iDEAL via PayNL now uses a dedicated bank list 🏦`})}),_jsx(_components.p,{children:`Universal Checkout | Payment Methods`}),_jsx(Frame,{caption:`Select a bank`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/a_bank.webp?fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=ea8e3bbac6cea39211b98ae627ea46cb`,\"data-og-width\":`503`,width:`503`,\"data-og-height\":`574`,height:`574`,\"data-path\":`images/changelogs/web/a_bank.webp`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/a_bank.webp?w=280\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=b75e7fc3e0e60a9ef372e8ca7e2d6c1d 280w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/a_bank.webp?w=560\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=cf0c0540f0e3729dc8f810588e0360c3 560w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/a_bank.webp?w=840\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=d79ebf75801d84c06201956933b420a4 840w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/a_bank.webp?w=1100\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=54db56f42d3d0780292bfce6162396fc 1100w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/a_bank.webp?w=1650\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=167256cdcef261af6dea8b4228625c66 1650w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/a_bank.webp?w=2500\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=46a4fef9291f4394a4ce935975b0fab3 2500w`})}),_jsx(_components.p,{children:`In order to create a more native experience when using iDEAL via PayNL - customers are now able to select the bank of their choosing via the checkout’s UI.`}),_jsx(_components.p,{children:`Before, iDEAL via PayNL would redirect customers away to a page where they could select a bank of their choosing.`}),_jsx(_components.p,{children:`In the future, we will be able to support this feature for all processors supporting iDEAL which returns a bank list.`}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Klarna now supports passing a product type 🤝`})}),_jsx(_components.p,{children:`Universal Checkout | Payment Methods`}),_jsx(_components.p,{children:`Klarna is now able to receive information regarding the product type of a specific line item.`}),_jsxs(_components.p,{children:[`When creating a `,_jsx(_components.a,{href:`https://apiref.primer.io/reference/create_client_side_token_client_session_post`,children:`client session`}),`, a `,_jsx(_components.code,{children:`productType`}),` can now be specified for each `,_jsx(_components.code,{children:`lineItem`}),`:`]}),_jsx(CodeBlock,{filename:`JSON`,numberOfLines:`23`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes dark-plus dark-plus`,style:{backgroundColor:`#0B0C0E`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`23`,children:[_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6A9955`,\"--shiki-dark\":`#6A9955`},children:`// other client session options`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`\"order\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`\"countryCode\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`\"SE\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`\"lineItems\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`: [`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`\"amount\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#B5CEA8`,\"--shiki-dark\":`#B5CEA8`},children:`500`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`\"description\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`\"Voucher\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`\"quantity\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#B5CEA8`,\"--shiki-dark\":`#B5CEA8`},children:`1`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`\"itemId\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`\"ABC123\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`\"productType\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`\"DIGITAL\"`}),_jsx(_components.span,{style:{color:`#6A9955`,\"--shiki-dark\":`#6A9955`},children:` // digital product`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`},`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`\"amount\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#B5CEA8`,\"--shiki-dark\":`#B5CEA8`},children:`1500`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`\"description\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`\"Blue Shoes\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`\"quantity\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#B5CEA8`,\"--shiki-dark\":`#B5CEA8`},children:`2`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`\"itemId\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`\"XYZ123\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`\"productType\"`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#CE9178`,\"--shiki-dark\":`#CE9178`},children:`\"PHYSICAL\"`}),_jsx(_components.span,{style:{color:`#6A9955`,\"--shiki-dark\":`#6A9955`},children:` // physical product`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`},`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),_jsx(_components.p,{children:``}),_jsx(Tip,{children:_jsx(_components.p,{children:`The /client-session API reference will be updated shortly to include productType.`})})]}),`\n`,_jsxs(Update,{label:`v2.3.1`,description:`2022-08-01`,id:`v2-3-1`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔨 Fixed`})}),_jsx(_components.p,{children:`We’ve been on a bit of a rampage… 🐛 🔨`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`The submit button is no longer enabled when the PayPal dialog is closed quickly, leaving no payment method in a selected state`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Expanded locale and country code support for Klarna. The Klarna button should now render for the Irish 🇮🇪\\xA0🍀`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`All inputs within the checkout now display custom focus and hover styles correctly`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Addressed issue where some payment methods failed when using currencies without minor units`}),`\n`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.3.0`,description:`2022-07-22`,id:`v2-3-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsx(_components.p,{children:`This release adds support for several new payment methods and languages, meaning your checkout is accessible to even more people around the world 🌍`}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Added support for four new payment methods 🎉`})}),_jsx(_components.p,{children:`Universal Checkout | Payment Methods`}),_jsx(_components.p,{children:`Thanks to our work with Rapyd, your checkout can now support the following payment methods:`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`GrabPay`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Poli`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Gcash`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`PromptPay`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Fast`}),`\n`]}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`New locales 💬`})}),_jsx(_components.p,{children:`Universal Checkout | Locales`}),_jsx(_components.p,{children:`Your checkout can now display in any of the following new languages:`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Czech `,_jsx(_components.code,{children:`cs`})]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Estonian `,_jsx(_components.code,{children:`et`})]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Croatian `,_jsx(_components.code,{children:`hr`})]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Japanese `,_jsx(_components.code,{children:`ja`})]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Lithuanian `,_jsx(_components.code,{children:`lt`})]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Portuguese - Brazil `,_jsx(_components.code,{children:`pt-BR`})]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Vietnamese `,_jsx(_components.code,{children:`vi`})]}),`\n`]}),`\n`]}),_jsx(Tip,{children:_jsxs(_components.p,{children:[`You can choose the locale for your checkout experience by passing the locale option during initialization. Take a look at the web SDKs `,_jsx(_components.a,{href:`https://www.npmjs.com/package/@primer-io/checkout-web/v/1.37.0`,children:`README`}),` for more details.`]})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔨 Fixed`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Fix position of saved payment method dropdown on mobile`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Klarna now allows updating the amount while the SDK is rendered`}),`\n`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.2.2`,description:`2022-07-06`,id:`v2-2-2`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔨 Fixed`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Fixed a misalignment issue occurring in the vault when a Right-to-Left language is used`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Improved support for currencies: non-decimal currencies such as the Japanese Yen and Vietnamese Dong are now supported 🎉`}),`\n`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.2.1`,description:`2022-06-17`,id:`v2-2-1`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsx(_components.p,{children:`This release is all about better localization 🗣️age`}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Right to left language support ↪️ ↩️`})}),_jsx(_components.p,{children:`Right to left languages will now read the way they should 😎`}),_jsx(Frame,{caption:`Submit`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/arabic_submit.webp?fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=dbfba86dc37fcc4ba4e336ddad0b3c87`,\"data-og-width\":`498`,width:`498`,\"data-og-height\":`524`,height:`524`,\"data-path\":`images/changelogs/web/arabic_submit.webp`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/arabic_submit.webp?w=280\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=acc87d89a478c34a356418231175dcb9 280w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/arabic_submit.webp?w=560\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=bad7a8250c9456fc81694f8b0c64c8b7 560w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/arabic_submit.webp?w=840\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=156ebdef86dd0eaa0bc47c1516221db0 840w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/arabic_submit.webp?w=1100\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=6374087253cd85a9631072c0a7168fd8 1100w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/arabic_submit.webp?w=1650\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=ed7af4cb2bd4fb43e7ff3c64b784aa60 1650w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/arabic_submit.webp?w=2500\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=62e366de3ac6e606cd5aa7b97950d7b5 2500w`})}),_jsx(_components.p,{children:`Arabic reading right-to-left`}),_jsx(_components.p,{children:`ALT`}),_jsx(_components.p,{children:`No additional setup is required to enable right-to-left ✨`}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`New locales 💬`})}),_jsx(_components.p,{children:`Universal Checkout | Locales`}),_jsx(_components.p,{children:`The SDK now supports an additional Spanish dialect - Argentinian:`}),_jsxs(_components.p,{children:[`Argentinian Spanish `,_jsx(_components.code,{children:`es-AR`})]}),_jsx(Tip,{children:_jsxs(_components.p,{children:[`The locale can easily be set by passing the `,_jsx(_components.code,{children:`locale`}),` checkout option when initialising the checkout. Take a look at the web SDKs `,_jsx(_components.a,{href:`https://www.npmjs.com/package/@primer-io/checkout-web`,children:`README`}),` for more details.`]})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔨 Fixed`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Fixed a TypeScript bug that cause `,_jsx(_components.code,{children:`showUniversalCheckout`}),` to return an instance of `,_jsx(_components.code,{children:`VaultManager`}),`. `,_jsx(_components.code,{children:`showUniversalCheckout`}),` now returns type `,_jsx(_components.code,{children:`UniversalCheckout`}),`.`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.1.1`,description:`2022-06-03`,id:`v2-1-1`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsx(_components.p,{children:`Added new locales!`}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`New locales 💬`})}),_jsx(_components.p,{children:`Universal Checkout | Locales`}),_jsx(_components.p,{children:`The SDK now supports the following languages:`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Bulgarian `,_jsx(_components.code,{children:`bg`})]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Hungarian `,_jsx(_components.code,{children:`hu`})]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Romanian `,_jsx(_components.code,{children:`ro`})]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Russian `,_jsx(_components.code,{children:`ru`})]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Slovak `,_jsx(_components.code,{children:`sk`})]}),`\n`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.1.0`,description:`2022-06-01`,id:`v2-1-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsx(_components.p,{children:`Added support for processing payments using processor’s 3DS flow for Stripe and Rapyd.`}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`[BETA]\\xA0Pay in installments with 2c2p ! 🎉`})}),_jsx(_components.p,{children:`Universal Checkout | Payment Methods`}),_jsx(_components.p,{children:`Universal Checkout now enables customers to pay in installments with their cards or bank accounts using 2c2p! This processor will display a “Pay in installments” button that redirects the user to 2c2p’s hosted payment page.`}),_jsx(_components.p,{children:`This processor is currently in beta while we finalise the implementation of additional actions`}),_jsx(Note,{children:_jsxs(_components.p,{children:[`👉\nTake a look at our `,_jsx(_components.a,{href:`https://dashboard.primer.io/connections/marketplace/detail/TWOC2P`,children:`2C2P`}),` connection in your `,_jsx(_components.a,{href:`https://sandbox-dashboard.primer.io/login`,children:`dashboard`})]})}),_jsx(Frame,{caption:``,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/Brand2C2P_Pay_in_installments_StyleLight.webp?fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=54b5658a89f2dde87897c4a512cc1dc7`,\"data-og-width\":`350`,width:`350`,\"data-og-height\":`45`,height:`45`,\"data-path\":`images/changelogs/web/Brand2C2P_Pay_in_installments_StyleLight.webp`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/Brand2C2P_Pay_in_installments_StyleLight.webp?w=280\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=54faa2b083ef43e7039ed2e959c361d9 280w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/Brand2C2P_Pay_in_installments_StyleLight.webp?w=560\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=2723b09023bd8120ac4179d351c93956 560w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/Brand2C2P_Pay_in_installments_StyleLight.webp?w=840\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=cdbf03131ee1562e5800ae5c17c49075 840w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/Brand2C2P_Pay_in_installments_StyleLight.webp?w=1100\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=383c513d2d5688a3f7857333890f5b1c 1100w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/Brand2C2P_Pay_in_installments_StyleLight.webp?w=1650\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=0b558fd2c6ae17370b1f5c556adcf09e 1650w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/Brand2C2P_Pay_in_installments_StyleLight.webp?w=2500\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=2df3278168e75f7edc0dc6433cb05e35 2500w`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Updated buttons for Coinbase and OpenNode! 💅`})}),_jsx(_components.p,{children:`Universal Checkout | Payment Methods`}),_jsx(_components.p,{children:`We’ve applied a few tweaks to the buttons of the payment methods Coinbase and OpenNode!`}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Coinbase`})}),_jsx(_components.p,{children:`This button now features a nice wallet icon!`}),_jsx(Frame,{caption:``,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/coinbase.webp?fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=344cbe2df49a0a3a70d9266bb69ba0ef`,\"data-og-width\":`350`,width:`350`,\"data-og-height\":`45`,height:`45`,\"data-path\":`images/changelogs/web/coinbase.webp`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/coinbase.webp?w=280\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=6d466107d30608f6b991a14d3d86e94a 280w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/coinbase.webp?w=560\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=3feba85539f1f1af6da33b6fe9d43fad 560w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/coinbase.webp?w=840\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=8debc3efc84a7a7df26bcca91cded80b 840w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/coinbase.webp?w=1100\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=bea392f7f5c3d1c334c489bdec763d12 1100w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/coinbase.webp?w=1650\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=3f701ba004a17b74bad48443887cb903 1650w, https://mintcdn.com/primer-cc826789/dM-udzSll5kL79ou/images/changelogs/web/coinbase.webp?w=2500\u0026fit=max\u0026auto=format\u0026n=dM-udzSll5kL79ou\u0026q=85\u0026s=a86a3591f5862e0aca2953db032437aa 2500w`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Improved support for PayPal! 🎉`})}),_jsx(_components.p,{children:`Universal Checkout | Payment Methods`}),_jsx(_components.p,{children:`Universal Checkout now sends additional information to PayPal:`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`If `,_jsx(_components.code,{children:`lineItems`}),` is provided in the client session, the item breakdown will be passed to the PayPal`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`If `,_jsx(_components.code,{children:`orderId`}),` is provided in the client session, PayPal’s `,_jsx(_components.code,{children:`custom\\\\_id`}),` will be passed to PayPal`]}),`\n`]}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔨 Fixed`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Fixed a bug that prevented formSpacings from being applied to the friendly card name`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Fixed an error raised in the console in the Vault Manager when the user clicks on a saved payment method`}),`\n`]}),`\n`]})]}),`\n`,_jsxs(Update,{label:`v2.0.0`,description:`2022-05-10`,id:`v2-0-0`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Improvements`})}),_jsx(_components.p,{children:`The version 2 of the SDK is out!\nThis includes a simplified way to integrate Primer`}),_jsxs(Tip,{children:[_jsx(_components.p,{children:`📚`}),_jsxs(_components.p,{children:[`Take a look at the `,_jsx(_components.a,{href:`/changelogs/migration-guides/sdk-v1-to-v2`,children:`migration guide`}),` for updating your integration to version 2.`]})]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🚀 Get started in one line of code!`})}),_jsx(_components.p,{children:`Universal Checkout | SDK`}),_jsx(_components.p,{children:`Now you can harness the power of Primer even faster! We’ve followed our mantra of; “The best DX is no DX”, and slimmed down the Web SDK integration to just a single line of code 🤯`}),_jsx(_components.p,{children:`Before 🥱`}),_jsx(CodeBlock,{filename:`TypeScript`,numberOfLines:`4`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes dark-plus dark-plus`,style:{backgroundColor:`#0B0C0E`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`4`,children:[_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#4FC1FF`,\"--shiki-dark\":`#4FC1FF`},children:` Primer`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` = `}),_jsx(_components.span,{style:{color:`#C586C0`,\"--shiki-dark\":`#C586C0`},children:`await`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:` loadPrimer`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`(); `}),_jsx(_components.span,{style:{color:`#6A9955`,\"--shiki-dark\":`#6A9955`},children:`// If the package is loaded from npm`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#4FC1FF`,\"--shiki-dark\":`#4FC1FF`},children:` primer`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` = `}),_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:`new`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:` Primer`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`({ `}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`credentials:`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`clientToken`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` }});`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#4FC1FF`,\"--shiki-dark\":`#4FC1FF`},children:` checkout`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` = `}),_jsx(_components.span,{style:{color:`#C586C0`,\"--shiki-dark\":`#C586C0`},children:`await`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` primer`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`checkout`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`options`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`]})})}),_jsx(_components.p,{children:``}),_jsx(_components.p,{children:`Now 🚀`}),_jsx(CodeBlock,{filename:`TypeScript`,numberOfLines:`5`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes dark-plus dark-plus`,style:{backgroundColor:`#0B0C0E`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`5`,children:[_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6A9955`,\"--shiki-dark\":`#6A9955`},children:`// To initialize Universal Checkout`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#4FC1FF`,\"--shiki-dark\":`#4FC1FF`},children:` universalCheckout`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` = `}),_jsx(_components.span,{style:{color:`#C586C0`,\"--shiki-dark\":`#C586C0`},children:`await`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` Primer`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`showUniversalCheckout`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`clientToken`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`options`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6A9955`,\"--shiki-dark\":`#6A9955`},children:`// To initialize Vault Manager`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#569CD6`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#4FC1FF`,\"--shiki-dark\":`#4FC1FF`},children:` vaultManager`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:` = `}),_jsx(_components.span,{style:{color:`#C586C0`,\"--shiki-dark\":`#C586C0`},children:`await`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:` Primer`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`showVaultManager`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`clientToken`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`options`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`]})})}),_jsx(_components.p,{children:``}),_jsxs(_components.p,{children:[`By calling `,_jsx(_components.code,{children:`Primer.showUniversalCheckout`}),` , you’re configuring, initializing and availing the checkout to your customers in just one step.`]}),_jsx(_components.p,{children:`The boilerplate might have been reduced, but all the great functionality of the checkout has been maintained 💪`}),_jsx(Tip,{children:_jsxs(_components.p,{children:[`Take a look at our new `,_jsx(_components.a,{href:`/checkout/drop-in/overview#web`,children:`quick start guide`}),` for web to see just how easy it is to have a full implementation of Universal Checkout up and running in no time`]})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`✨ Payments created automatically`})}),_jsx(_components.p,{children:`Universal Checkout | SDK`}),_jsx(_components.p,{children:`Creating payments with Universal Checkout is now seamless. There’s no more need for callbacks, API calls and headaches to create a payment. It’s all done under the hood 🧙`}),_jsxs(_components.p,{children:[`In the past, creating payments involved manual payment handling:\nOn the client side, you would have had to implement the dreaded `,_jsx(_components.code,{children:`onTokenizeSuccess`}),` and `,_jsx(_components.code,{children:`onResumeSuccess`}),` callbacks:`]}),_jsx(CodeBlock,{filename:`TypeScript`,numberOfLines:`9`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes dark-plus dark-plus`,style:{backgroundColor:`#0B0C0E`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`9`,children:[_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`primer`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`checkout`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`({`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`onTokenizeSuccess`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`paymentMethodTokenData`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6A9955`,\"--shiki-dark\":`#6A9955`},children:`// Implement some verbose logic 🤢`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`},`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#DCDCAA`,\"--shiki-dark\":`#DCDCAA`},children:`onResumeSuccess`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#9CDCFE`,\"--shiki-dark\":`#9CDCFE`},children:`resumeTokenData`}),_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6A9955`,\"--shiki-dark\":`#6A9955`},children:`// Do it all again 😵`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#D4D4D4`,\"--shiki-dark\":`#D4D4D4`},children:`})`})}),`\n`]})})}),_jsx(_components.p,{children:`\nOn the server side, you had to manually call our Payments API in order to create a payment 🤷`}),_jsxs(_components.p,{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: - 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 💆`]}),_jsxs(Accordion,{title:`For the nerds ❤️`,id:`for-the-nerds`,children:[_jsx(_components.p,{children:_jsx(_components.em,{children:`Payment lifecycle callbacks`})}),_jsx(_components.p,{children:`If you would still like to have some insights into how Universal Checkout is handling payment creation, we’ve introduced some new optional callbacks which will notify you during certain events in the payment lifecycle.`}),_jsx(Tip,{children:_jsxs(_components.p,{children:[`For more information on these callbacks, take a look at the `,_jsx(_components.strong,{children:`Payment Lifecycle Callbacks`}),` section in our new and improved `,_jsx(_components.a,{href:`https://npmjs.com/package/@primer-io/checkout-web/v/2.0.0`,children:`README`})]})}),_jsx(_components.p,{children:_jsx(_components.em,{children:`Manual payment handling`})}),_jsxs(_components.p,{children:[`For the `,_jsx(_components.strong,{children:`brave`}),` and `,_jsx(_components.strong,{children:`bold`}),` among us who would still like to manually handle payments in the checkout and perform the necessary API calls for payment creation - take a look at our `,_jsx(_components.a,{href:`/checkout/advanced/manual-payment-creation#web`,children:`manual payment creation guide`}),` 📚`]})]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`💳 Dummy Payment Methods`})}),_jsx(_components.p,{children:`Universal Checkout | Payment Methods`}),_jsx(_components.p,{children:`We want you to start creating payments with Universal Checkout as quickly as possible, so we’ve added some dummy payment methods - no credentials required 😎`}),_jsx(_components.p,{children:`The following payment methods have been added:`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`PayPal via Primer`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`iDeal via Primer`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Klarna via Primer`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Cards via Primer`}),`\n`]}),`\n`]}),_jsx(_components.p,{children:`These payment methods are purely for demonstrative purposes and aren’t tied to any payment method specific environment.`}),_jsxs(_components.p,{children:[`You can now create payments in different states (authorized, declined, failed) and see them in the dashboard’s `,_jsx(_components.a,{href:`https://dashboard.primer.io/payments`,children:`Payments page`}),`.`]}),_jsx(_components.p,{children:`No need to create sandbox accounts with different processors/payment methods, the dashboard and all its great features can now be used without any setup.`}),_jsx(Tip,{children:_jsx(_components.p,{children:`Primer’s Dummy Payment Methods will come preconfigured with all new sandbox accounts.`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`🔨 Deprecation`})}),_jsx(_components.p,{children:`The Web SDK’s move to version 2 has brought a lot of exciting changes and along with these changes, some deprecations.`}),_jsx(Note,{children:_jsxs(_components.p,{children:[`📚\nPlease take a look at our Web SDK version 2 `,_jsx(_components.a,{href:`/changelogs/migration-guides/sdk-v1-to-v2`,children:`migration guide`}),` for a full list of the deprecations made.`]})})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{TxnTag,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":"Web SDK","sidebarTitle":"Web SDK","icon":"code","rss":true,"description":null,"href":"/changelogs/web-sdk"}}},"mdxSourceWithNoJs":null,"noJsSplices":[[142,959,")=>null;function _cr"]]},"mdxExtracts":{"tableOfContents":[{"title":"v2.66.1","slug":"v2-66-1","depth":1,"children":[]},{"title":"v2.66.0","slug":"v2-66-0","depth":1,"children":[]},{"title":"v2.65.3","slug":"v2-65-3","depth":1,"children":[]},{"title":"v2.65.2","slug":"v2-65-2","depth":1,"children":[]},{"title":"v2.65.1","slug":"v2-65-1","depth":1,"children":[]},{"title":"v2.65.0","slug":"v2-65-0","depth":1,"children":[]},{"title":"v2.64.13","slug":"v2-64-13","depth":1,"children":[]},{"title":"v2.64.12","slug":"v2-64-12","depth":1,"children":[]},{"title":"v2.64.11","slug":"v2-64-11","depth":1,"children":[]},{"title":"v2.64.10","slug":"v2-64-10","depth":1,"children":[]},{"title":"v2.64.9","slug":"v2-64-9","depth":1,"children":[]},{"title":"v2.64.8","slug":"v2-64-8","depth":1,"children":[]},{"title":"v2.64.7","slug":"v2-64-7","depth":1,"children":[]},{"title":"v2.64.6","slug":"v2-64-6","depth":1,"children":[]},{"title":"v2.64.5","slug":"v2-64-5","depth":1,"children":[]},{"title":"v2.64.4","slug":"v2-64-4","depth":1,"children":[]},{"title":"v2.64.3","slug":"v2-64-3","depth":1,"children":[]},{"title":"v2.64.2","slug":"v2-64-2","depth":1,"children":[]},{"title":"v2.64.1","slug":"v2-64-1","depth":1,"children":[]},{"title":"v2.64.0","slug":"v2-64-0","depth":1,"children":[]},{"title":"v2.63.0","slug":"v2-63-0","depth":1,"children":[]},{"title":"v2.62.1","slug":"v2-62-1","depth":1,"children":[]},{"title":"v2.62.0","slug":"v2-62-0","depth":1,"children":[]},{"title":"v2.61.2","slug":"v2-61-2","depth":1,"children":[]},{"title":"v2.61.1","slug":"v2-61-1","depth":1,"children":[]},{"title":"v2.61.0","slug":"v2-61-0","depth":1,"children":[]},{"title":"v2.60.1","slug":"v2-60-1","depth":1,"children":[]},{"title":"v2.60.0","slug":"v2-60-0","depth":1,"children":[]},{"title":"v2.59.12","slug":"v2-59-12","depth":1,"children":[]},{"title":"v2.57.11","slug":"v2-57-11","depth":1,"children":[]},{"title":"v2.59.10","slug":"v2-59-10","depth":1,"children":[]},{"title":"v2.59.9","slug":"v2-59-9","depth":1,"children":[]},{"title":"v2.59.8","slug":"v2-59-8","depth":1,"children":[]},{"title":"v2.59.7","slug":"v2-59-7","depth":1,"children":[]},{"title":"v2.59.6","slug":"v2-59-6","depth":1,"children":[]},{"title":"v2.59.5","slug":"v2-59-5","depth":1,"children":[]},{"title":"v2.59.4","slug":"v2-59-4","depth":1,"children":[]},{"title":"v2.59.3","slug":"v2-59-3","depth":1,"children":[]},{"title":"v2.59.2","slug":"v2-59-2","depth":1,"children":[]},{"title":"v2.59.1","slug":"v2-59-1","depth":1,"children":[]},{"title":"v2.59.0","slug":"v2-59-0","depth":1,"children":[]},{"title":"v2.58.0","slug":"v2-58-0","depth":1,"children":[]},{"title":"v2.57.7","slug":"v2-57-7","depth":1,"children":[]},{"title":"v2.57.5","slug":"v2-57-5","depth":1,"children":[]},{"title":"v2.57.4","slug":"v2-57-4","depth":1,"children":[]},{"title":"v2.57.3","slug":"v2-57-3","depth":1,"children":[]},{"title":"v2.57.2","slug":"v2-57-2","depth":1,"children":[]},{"title":"v2.57.1","slug":"v2-57-1","depth":1,"children":[]},{"title":"v2.57.0","slug":"v2-57-0","depth":1,"children":[]},{"title":"v2.56.3","slug":"v2-56-3","depth":1,"children":[]},{"title":"v2.56.2","slug":"v2-56-2","depth":1,"children":[]},{"title":"v2.56.1","slug":"v2-56-1","depth":1,"children":[]},{"title":"v2.55.1","slug":"v2-55-1","depth":1,"children":[]},{"title":"v2.55.0","slug":"v2-55-0","depth":1,"children":[]},{"title":"v2.54.6","slug":"v2-54-6","depth":1,"children":[]},{"title":"v2.54.5","slug":"v2-54-5","depth":1,"children":[]},{"title":"v2.54.4","slug":"v2-54-4","depth":1,"children":[]},{"title":"v2.54.3","slug":"v2-54-3","depth":1,"children":[]},{"title":"v2.54.2","slug":"v2-54-2","depth":1,"children":[]},{"title":"v2.54.1","slug":"v2-54-1","depth":1,"children":[]},{"title":"v2.54.0","slug":"v2-54-0","depth":1,"children":[]},{"title":"v2.53.7","slug":"v2-53-7","depth":1,"children":[]},{"title":"v2.53.6","slug":"v2-53-6","depth":1,"children":[]},{"title":"v2.53.5","slug":"v2-53-5","depth":1,"children":[]},{"title":"v2.53.4","slug":"v2-53-4","depth":1,"children":[]},{"title":"v2.53.3","slug":"v2-53-3","depth":1,"children":[]},{"title":"v2.53.2","slug":"v2-53-2","depth":1,"children":[]},{"title":"v2.53.1","slug":"v2-53-1","depth":1,"children":[]},{"title":"v2.53.0","slug":"v2-53-0","depth":1,"children":[]},{"title":"v2.52.2","slug":"v2-52-2","depth":1,"children":[]},{"title":"v2.52.1","slug":"v2-52-1","depth":1,"children":[]},{"title":"v2.52.0","slug":"v2-52-0","depth":1,"children":[]},{"title":"v2.51.0","slug":"v2-51-0","depth":1,"children":[]},{"title":"v2.50.6","slug":"v2-50-6","depth":1,"children":[]},{"title":"v2.50.5","slug":"v2-50-5","depth":1,"children":[]},{"title":"v2.50.4","slug":"v2-50-4","depth":1,"children":[]},{"title":"v2.50.3","slug":"v2-50-3","depth":1,"children":[]},{"title":"v2.50.2","slug":"v2-50-2","depth":1,"children":[]},{"title":"v2.50.1","slug":"v2-50-1","depth":1,"children":[]},{"title":"v2.50.0","slug":"v2-50-0","depth":1,"children":[]},{"title":"v2.49.2","slug":"v2-49-2","depth":1,"children":[]},{"title":"v2.49.1","slug":"v2-49-1","depth":1,"children":[]},{"title":"v2.49.0","slug":"v2-49-0","depth":1,"children":[]},{"title":"v2.48.0","slug":"v2-48-0","depth":1,"children":[]},{"title":"v2.47.0","slug":"v2-47-0","depth":1,"children":[]},{"title":"v2.46.8","slug":"v2-46-8","depth":1,"children":[]},{"title":"v2.46.7","slug":"v2-46-7","depth":1,"children":[]},{"title":"v2.46.6","slug":"v2-46-6","depth":1,"children":[]},{"title":"v2.46.5","slug":"v2-46-5","depth":1,"children":[]},{"title":"v2.46.4","slug":"v2-46-4","depth":1,"children":[]},{"title":"v2.46.3","slug":"v2-46-3","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.10","slug":"v2-45-10","depth":1,"children":[]},{"title":"v2.45.9","slug":"v2-45-9","depth":1,"children":[]},{"title":"v2.45.8","slug":"v2-45-8","depth":1,"children":[]},{"title":"v2.45.7","slug":"v2-45-7","depth":1,"children":[]},{"title":"v2.45.6","slug":"v2-45-6","depth":1,"children":[]},{"title":"v2.45.5","slug":"v2-45-5","depth":1,"children":[]},{"title":"v2.45.4","slug":"v2-45-4","depth":1,"children":[]},{"title":"v2.45.3","slug":"v2-45-3","depth":1,"children":[]},{"title":"v2.45.2","slug":"v2-45-2","depth":1,"children":[]},{"title":"v2.45.1","slug":"v2-45-1","depth":1,"children":[]},{"title":"v2.45.0","slug":"v2-45-0","depth":1,"children":[]},{"title":"v2.44.1","slug":"v2-44-1","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.7","slug":"v2-42-7","depth":1,"children":[]},{"title":"v2.42.6","slug":"v2-42-6","depth":1,"children":[]},{"title":"v2.42.5","slug":"v2-42-5","depth":1,"children":[]},{"title":"v2.42.4","slug":"v2-42-4","depth":1,"children":[]},{"title":"v2.42.3","slug":"v2-42-3","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.4","slug":"v2-40-4","depth":1,"children":[]},{"title":"v2.40.3","slug":"v2-40-3","depth":1,"children":[]},{"title":"v2.40.2","slug":"v2-40-2","depth":1,"children":[]},{"title":"v2.40.1","slug":"v2-40-1","depth":1,"children":[]},{"title":"v2.40.0","slug":"v2-40-0","depth":1,"children":[]},{"title":"v2.39.1","slug":"v2-39-1","depth":1,"children":[]},{"title":"v2.39.0","slug":"v2-39-0","depth":1,"children":[]},{"title":"v2.38.1","slug":"v2-38-1","depth":1,"children":[]},{"title":"v2.38.0","slug":"v2-38-0","depth":1,"children":[]},{"title":"2.37.2","slug":"2-37-2","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.1","slug":"v2-35-1","depth":1,"children":[]},{"title":"v2.35.0","slug":"v2-35-0","depth":1,"children":[]},{"title":"v2.34.0","slug":"v2-34-0","depth":1,"children":[]},{"title":"v2.33.4","slug":"v2-33-4","depth":1,"children":[]},{"title":"v2.33.3","slug":"v2-33-3","depth":1,"children":[]},{"title":"v2.33.2","slug":"v2-33-2","depth":1,"children":[]},{"title":"v2.33.1","slug":"v2-33-1","depth":1,"children":[]},{"title":"v2.33.0","slug":"v2-33-0","depth":1,"children":[]},{"title":"v2.32.7","slug":"v2-32-7","depth":1,"children":[]},{"title":"v2.32.5","slug":"v2-32-5","depth":1,"children":[]},{"title":"v2.32.4","slug":"v2-32-4","depth":1,"children":[]},{"title":"v2.32.3","slug":"v2-32-3","depth":1,"children":[]},{"title":"v2.32.0","slug":"v2-32-0","depth":1,"children":[]},{"title":"v2.31.1","slug":"v2-31-1","depth":1,"children":[]},{"title":"v2.31.0","slug":"v2-31-0","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.1","slug":"v2-28-1","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.1","slug":"v2-26-1","depth":1,"children":[]},{"title":"v2.25.1","slug":"v2-25-1","depth":1,"children":[]},{"title":"v2.24.0","slug":"v2-24-0","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.0","slug":"v2-21-0","depth":1,"children":[]},{"title":"v2.20.0","slug":"v2-20-0","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":"2.17.1","slug":"2-17-1","depth":1,"children":[]},{"title":"v2.17.0","slug":"v2-17-0","depth":1,"children":[]},{"title":"v2.16.1","slug":"v2-16-1","depth":1,"children":[]},{"title":"v2.16.0","slug":"v2-16-0","depth":1,"children":[]},{"title":"v2.15.0","slug":"v2-15-0","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.12.0","slug":"v2-12-0","depth":1,"children":[]},{"title":"v2.11.0","slug":"v2-11-0","depth":1,"children":[]},{"title":"v2.10.1","slug":"v2-10-1","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.7.0","slug":"v2-7-0","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.1","slug":"v2-3-1","depth":1,"children":[]},{"title":"v2.3.0","slug":"v2-3-0","depth":1,"children":[]},{"title":"v2.2.2","slug":"v2-2-2","depth":1,"children":[]},{"title":"v2.2.1","slug":"v2-2-1","depth":1,"children":[]},{"title":"v2.1.1","slug":"v2-1-1","depth":1,"children":[]},{"title":"v2.1.0","slug":"v2-1-0","depth":1,"children":[]},{"title":"v2.0.0","slug":"v2-0-0","depth":1,"children":[]}],"codeExamples":{}},"jsLinks":["/docs/_mintlify/custom/primer-cc826789/f9b3e76a02542eba/js/codeblocklayout.js"],"subdomain":"primer-cc826789","siteName":"Primer","title":"Web SDK - Primer","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-06T15:07:00.679Z","originalFileLocation":"changelogs/web-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=\"Web 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/web-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=Web\u0026amp;title=Web+SDK\u0026amp;theme=115d40077fafa3c430405b4c\u0026amp;signature=25ce722e8696514cc4ca7626313a10218e24cb2dcaa8f7bae10229de3fdb0184\">\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=\"Web SDK - Primer\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://primer-cc826789.mintlify.site/docs/_mintlify/api/og/v2?division=Web\u0026amp;title=Web+SDK\u0026amp;theme=115d40077fafa3c430405b4c\u0026amp;signature=25ce722e8696514cc4ca7626313a10218e24cb2dcaa8f7bae10229de3fdb0184\">\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/web-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/web-sdk.md\">\u003clink data-mint-head rel=\"alternate\" type=\"application/rss+xml\" href=\"https://primer.io/docs/changelogs/web-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/web-sdk#webpage\",\"url\":\"https://primer.io/docs/changelogs/web-sdk\",\"name\":\"Web SDK\",\"dateModified\":\"2026-11-06T15:07:00.679Z\",\"isPartOf\":{\"@id\":\"https://primer.io/docs#website\"},\"breadcrumb\":{\"@id\":\"https://primer.io/docs/changelogs/web-sdk#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://primer.io/docs/changelogs/web-sdk#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"SDK changelogs\",\"item\":\"https://primer.io/docs/changelogs/web\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Web\",\"item\":\"https://primer.io/docs/changelogs/web\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Web SDK\",\"item\":\"https://primer.io/docs/changelogs/web-sdk\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://primer.io/docs/changelogs/web-sdk#article\",\"headline\":\"Web SDK\",\"name\":\"Web SDK\",\"url\":\"https://primer.io/docs/changelogs/web-sdk\",\"mainEntityOfPage\":{\"@id\":\"https://primer.io/docs/changelogs/web-sdk#webpage\"},\"dateModified\":\"2026-11-06T15:07:00.679Z\",\"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","description":null,"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","description":null,"href":"/changelogs/ios-sdk"},{"title":"Android SDK","sidebarTitle":"Android SDK","icon":"android","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","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":"Web 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"]}