> ## Documentation Index
> Fetch the complete documentation index at: https://primer.io/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# iOS SDK

export 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 <span style={getStyles(status)}>{status}</span>;
};

<Update label="v2.49.0" description="2026-06-03">
  **✨ Improvements**

  * General fixes and improvements
</Update>

<Update label="v2.48.0" description="2026-05-18">
  **✨ Improvements**

  * Improvements to payment method processing

  **🔧 Fixes**

  * Fixes an issue where SPM resolution was not working correctly
</Update>

<Update label="v2.47.0" description="2026-04-27">
  **🚀 New features**

  * Improved payment method processing

  **✨ Improvements**

  * Improvements to Card Network data
</Update>

<Update label="v2.46.1" description="2026-03-11">
  **🔧 Fixes**

  * Improved Apple Pay availability detection to more accurately reflect supported cards in the user's Wallet
  * Fixed duplicate payment calls in Klarna Headless flow
</Update>

<Update label="v2.46.0" description="2026-03-05">
  **🚀 New features**

  * Added BIN data to Headless flow
  * Added idempotency key support for Drop-In and Headless flows

  **🔧 Fixes**

  * Fixed EFTPOS co-badge display and preferred network handling
  * Fixed submit and action buttons ignoring theme corner radius configuration
</Update>

<Update label="v2.45.0" description="2026-02-20">
  **🚀 New features**

  * Added safeguards to prevent duplicate payments in Drop-In and Headless flows

  **🔧 Fixes**

  * Improved performance and stability of the PayPal flow
  * Fixed submit and action buttons not reflecting custom theme styling
  * Improved error handling when a payment method cannot be presented in Headless integrations
  * Fixed the app becoming unresponsive after dismissing Apple Pay
</Update>

<Update label="v2.44.1" description="2026-01-28">
  **🔧 Fixes**

  * Fixed an issue that could cause a precondition to trigger
  * Fixed an issue that could cause the app to become unresponsive after dismissing Apple Pay
  * General improvements around error handling
</Update>

<Update label="v2.44.0" description="2026-01-08">
  <Warning>
    **Note**: From this version onward, `Primer3DS` requires a minimum version of `2.7.0`.
  </Warning>

  **✨ Improvements**

  * Show processing screen prior to presenting 3DS challenge.
</Update>

<Update label="v2.43.2" description="2025-12-19">
  **🔧 Fixes**

  * Fixed an issue that could cause a crash when waiting for user input.
  * Improved stability during payment cancellation.
</Update>

<Update label="v2.43.1" description="2025-12-05">
  **🔧 Fixes**

  * Fixed an issue with surcharge amount validation.
</Update>

<Update label="v2.43.0" description="2025-12-02">
  **✨ Improvements**

  * EFTPOS is no longer selectable by cardholders; the SDK now respects the merchant's card network preference to process the payment

  **🔧 Fixes**

  * Fixes an issue where card network state was not properly cleared when the card number field was emptied
  * Resolves card validation issues that could cause infinite loops and network picker display problems
</Update>

<Update label="v2.42.3" description="2025-11-18">
  **🔧 Fixes**

  * Removes unnecessary checking if deep link URLs can be opened natively.
</Update>

<Update label="v2.42.2" description="2025-11-12">
  **🔧 Fixes**

  * Fixes an issue where received url schemes were causing an exception.
</Update>

<Update label="v2.42.1" description="2025-10-30">
  **🔧 Fixes**

  * Fixes an issue where a back button was showing incorrectly in Klarna headless flow
  * Improve threading in InternalCardComponentsManager
</Update>

<Update label="v2.42.0" description="2025-10-07">
  **🚀 New features**

  * Add EFTPOS network support
</Update>

<Update label="v2.41.1" description="2025-09-22">
  **🔧 Fixes**

  * Improved iOS 26 and Xcode 26 compatibility
  * Enhanced error reporting clarity
  * Fixed card network validation security issue
  * Resolved potential crashes in card detection
</Update>

<Update label="v2.41.0" description="2025-09-04">
  **🔧 Fixes**

  * Removed `PrimerApiVersion.V2_3` from [PrimerApiVersion](https://primer.io/docs/sdk/ios/v2.x.x/common-objects/PrimerSettings#param-api-version). Update to a `PrimerApiVersion.V2_4` if currently using v2.3.
  * Resolve asset loading issues in headless checkout components
  * Fix main thread crash in 3DS cleanup

  **🛠️ Refactor**

  * Remove PromiseKit dependency across multiple core services and components for improved performance and Swift concurrency adoption
  * Remove `_async` suffix from method signatures
  * Remove `main_actor` and `throws` annotations from method signatures
  * Remove 'Async' suffix from test class names
  * Migrated services to use modern async/await patterns including:
    * VaultService, VaultManager, and TokenizationService
    * 3DS Service, Analytics Service, and API Configuration Module
    * Payment creation and resumption services
    * Image Manager and various payment method components
    * Card validation and form components
    * Internal card components and headless checkout managers
</Update>

<Update label="v2.40.0" description="2025-08-27">
  **🚀 New features**

  * Add appearance mode override to respect app-level theme settings.

  **✨ Improvements**

  * Improvements to Klarna vaulting flow.

  <Warning>
    If you are using the Klarna dependency in your code, you are encouraged to update `PrimerKlarnaSDK` to `1.2.0`.
    **Please note that this version contains critical fixes for the new Liquid Glass UI when built with Xcode 26/iOS 26.**

    Klarna SDK was updated from v2.6.14 to v2.7.2. Please refer to the official Klarna [CHANGELOG](https://github.com/klarna/klarna-mobile-sdk/blob/master/CHANGELOG.md)
    for more information.
  </Warning>

  **🔧 Fixes**

  * Improved payment tokenization and cancellation flow.
</Update>

<Update label="v2.39.2" description="2025-08-15">
  **🔧 Fixes**

  * Fixed an issue where invalid expiry years were being accepted
  * Async cancellation now works more reliably in the payment tokenization flow

  **🛠️ Refactor**

  * Cleaned up multiple instances of error handling
  * Improved handling of async tasks and error reporting in view models
  * Cleaned up unused implementations and internal logging
</Update>

<Update label="v2.39.1" description="2025-07-23">
  **✨ Improvements**

  * Improved threading in PrimerUIManager and TokenizationProtocols
  * Introduced handled flag in data models for clearer state management
  * Migrated tokenization view models (StripeAch, CardForm, and PaymentMethod) to async/await

  **🔧 Fixes**

  * Convert 2-digit expiry years to 4-digit in headless checkout
  * Fixed Klarna payment method manager category

  **🛠️ Refactor**

  * Cleaned up error handling in UserInterface and Core
</Update>

<Update label="v2.39.0" description="2025-07-15">
  **🚀 New features**

  This 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](/connections/payment-methods/apple-pay/overview#apple-pay-mpan-configuration)
  to request merchant tokens (MPANs) and integrate this feature into your payment flow.

  **✨ Improvements**

  * Added support for MM/YY expiry date format
  * Enhanced Apple Pay error handling with new specific error IDs:
    * `apple-pay-no-cards-in-wallet`: Detects when no payment cards are configured in Apple Wallet
    * `apple-pay-device-not-supported`: Identifies devices that don't support Apple Pay
    * `apple-pay-configuration-error`: Reports merchant configuration issues
    * `apple-pay-presentation-failed`: Captures general presentation failures

  **🔧 Fixes**

  * Reduce console noise for nil remoteUrl in ImageManager
  * Reduce excessive validation logging

  **🛠️ Refactor**

  * Introduce default values for PrimerError
  * Migrated many classes and files to async await
  * Clean up UI event posting
</Update>

<Update label="v2.38.3" description="2025-07-03">
  **🔧 Fixes**

  * Upgraded Primer3DS which includes a fix for missing CartesBancaires DirectoryServerID mapping.
</Update>

<Update label="v2.38.2" description="2025-06-12">
  **🔧 Fixes**

  * Fix memory crash in validateRawData with weak self capture (#1185)

  **✨ Improvements**

  * Consolidate `PrimerClientSession`
</Update>

<Update label="v2.38.1" description="2025-06-04">
  **✨ Improvements**

  * **UIColor**: Added `primer` prefix to gray color variables to improve naming consistency and avoid potential conflicts with other libraries.
      <Accordion title="Migration Guide">
        * `UIColor.gray100` -> `UIColor.primerGray100`
        * `UIColor.gray200` -> `UIColor.primerGray200`
        * `UIColor.gray300` -> `UIColor.primerGray300`
        * `UIColor.gray400` -> `UIColor.primerGray400`
        * `UIColor.gray500` -> `UIColor.primerGray500`
        * `UIColor.gray600` -> `UIColor.primerGray600`
        * `UIColor.gray700` -> `UIColor.primerGray700`
      </Accordion>
</Update>

<Update label="v2.38.0" description="2025-06-02">
  **✨ Improvements**

  * Klarna auto continues when single payment option
  * Implement the Co-badged Cards feature on Drop-in

  **✨ Improvements**

  * Reduce `init(coder:)` boilerplate
  * Remove unused code from Networking
  * Finalise classes where appropriate
</Update>

<Update label="v2.37.0" description="2025-05-12">
  **✨ Improvements**

  * We have added `CardFormUIOptions.payButtonAddNewCard` to support the "Add New Card" option in the card form flow.
  * Introduced support for the 'Continue payment flow' workflow action to configure checkout outcome. See our [documentation](/workflows/apps/native-apps/primer-payments-app/continue-payment-flow-action#control-the-checkout-result-with-checkout-outcome) for more info.

  **🔧 Fixes**

  * We have fixed a crash issue that occurred during NolPay initialization.

  **✨ Improvements**

  * We have made several cleanups and improvements across the SDK.
</Update>

<Update label="v2.36.0" description="2025-03-25">
  **✨ Improvements**

  * The SDK will now default to using Api version 2.4 when initialised. It is possible to use API version 2.3 via `PrimerSettings.apiVersion`. For more information see our [SDK reference](/sdk/ios/v2.x.x/common-objects/PrimerSettings), [Api Reference](/api-reference/get-started/overview)  and [Migration Guides](/changelogs/migration-guides/API-2.3-to-2.4).

  **🔧 Fixes**

  * We have fixed an issue which resulted in incorrect formatting of the currency strings in our UI for french locales.
</Update>

<Update label="v2.35.3" description="2025-03-19">
  **✨ Improvements**

  * Improved error handling when server returns 202 response code
</Update>

<Update label="v2.35.2" description="2025-02-26">
  **🔧 Fixes**

  * We have fixed a bug in the Drop-In Checkout which resulted in "Additional fees may apply" text being shown for the Card payment method, when no surcharge was present.

  **✨ Improvements**

  * We have made changes to our internal Analytics logging system which will result in fewer unnecessary logs being sent.
</Update>

<Update label="v2.35.1" description="2025-02-11">
  **✨ Improvements**

  * We've increased the timeout for payment creation and handling for better stability.

  **🔧 Fixes**

  * We have fixed a bug in our Drop-In Card Form, which resulted in a poor user experience while using RTL formatted languages.
</Update>

<Update label="v2.35.0" description="2025-02-04">
  **✨ Improvements**

  * With this version it is possible to opt-in to use Api v2.4, which is no longer in Beta. For more information see our [SDK reference](/sdk/ios/v2.x.x/common-objects/PrimerSettings#parameters), [Api Reference](/api-reference/get-started/overview)  and [Migration Guides](/changelogs/migration-guides/API-2.3-to-2.4). The SDK will continue to use API v2.3 by default.
  * **Expanded Language Support**: The iOS SDK now supports additional languages, including:
    * Arabic
    * Bulgarian
    * Czech
    * Spanish (Argentina & Mexico)
    * Estonian
    * Croatian
    * Hungarian
    * Japanese
    * Latvian
    * Portuguese (Brazil)
    * Romanian
    * Vietnamese
  * **3DS Sandbox Testing**: Enhanced support for testing 3D Secure (3DS) flows in the sandbox environment. This requires upgrading your `primer-sdk-3ds-ios` dependency to version `2.4.2`.
</Update>

<Update label="v2.34.0" description="2025-01-24">
  ****🧪 Experimental****

  * With this version it is possible to opt-in to test Api v2.4(Beta). For more information see our [Api Reference](/api-reference/get-started/overview)  and [Migration Guides](/changelogs/migration-guides/API-2.3-to-2.4)

  **✨ Improvements**

  * API Timeout values have been updated to improve behaviour in the loading phases of the checkout.
</Update>

<Update label="v2.33.1" description="2024-12-23">
  **🔧 Fixes**

  * We have fixed an issue where `PaymentInstrumentData.accountNumberLast4Digits` was incorrectly named `PaymentInstrumentData.accountNumberLastFourDigits` when exposed via the `PrimerHeadlessUniversalCheckout` interface. Visit our [SDK Reference](/sdk/ios/v2.x.x/primer-headless-checkout/vault-manager/fetchVaultedPaymentMethods#returns.completion.vaultedPaymentMethods-primerheadlessuniversalcheckout.vaultedpaymentmethod.paymentInstrumentData-parameters.accountNumberLast4Digits) for more information.
</Update>

<Update label="v2.33.0" description="2024-12-17">
  **✨ Improvements**

  * It is now possible to vault ACH via Stripe payments, and pay with vaulted ACH via Stripe tokens. See our [docs](/connections/payment-methods/ach/stripe-dropin#vaulting) for more info.
  * It is now possible to granularly control Apple Pay Billing and Shipping options. See our [docs](/sdk/ios/v2.x.x/common-objects/PrimerSettings#properties.paymentMethodOptions-properties.applePayOptions) for more.

  **🔧 Fixes**

  * We have fixed an issue where the wrong error (`generic-underlying-errors`) was passed when a user cancelled a PayPal payment. Now, the correct error (`payment-cancelled`) is reported.
  * We have updated the default background colour of the default theme for dark mode.
  * The close button is now disabled for Klarna during payment processing.
  * The success asset is now more prominent in dark mode.
</Update>

<Update label="v2.32.1" description="2024-11-21">
  **🔧 Fixes**

  * Updated the 3DS SDK to version `2.4.1` which fixes a crashing issue.
  * Remove precondition on `presentPaymentMethod` which could cause a crash in certain scenarios.
</Update>

<Update label="v2.32.0" description="2024-11-13">
  **✨ Improvements**

  * We have added additional dismissal controls to PrimerUIOptions. It is now possible to dismiss the Primer UI via gestures, an explicit close button, or both. See our [SDK reference](/sdk/ios/v2.x.x/common-objects/PrimerSettings#properties.uiOptions) for more information.

  **🔧 Fixes**

  * Fixes for range or index out of bounds crash in the Card Form UI.
  * Fixes for a crash in InternalCardComponentsManager.
</Update>

<Update label="v2.31.3" description="2024-10-24">
  **✨ Improvements**

  * Expose VaultedPaymentMethod initialiser

  **🔧 Fixes**

  * Prevent dismissal of Drop-in card form while a payment is active
  * Discover card network image not showing
  * Move the cursor to the end of the text after pasting the card number
  * Errors in the card form are now correctly localized
</Update>

<Update label="v2.31.2" description="2024-10-21">
  **🔧 Fixes**

  * Adyen Blik dismissal issue and small UI glitch
</Update>

<Update label="v2.31.1" description="2024-10-04">
  **🔧 Fixes**

  * Fixed an issue where Adyen Vipps would not fall back to the Web flow in the event that the Vipps mobile app was not installed.
  * Fixed an issue where Adyen Blik was not present in PrimerHeadlessUniversalCheckout availablePaymentMethods.
  * Various stability improvements.
</Update>

<Update label="v2.31.0" description="2024-08-30">
  **✨ Improvements**

  **Stripe ACH is now available** ✨

  * 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 acknowledgement of success or failure.
  * This release includes: One-off payments, cancel, and refund actions. We aim to add support for recurring payments in the future.
  * You can easily integrate ACH via Stripe into your payment stack with just a few clicks through Primer. Visit the integrations section of the dashboard to learn more or [consult the direct integration guide](/connections/payment-methods/ach/stripe).
</Update>

<Update label="v2.30.1" description="2024-08-28">
  **🔧 Fixes**

  * Fixed an issue where the PayPal flow was unusable in the Drop-In Universal Checkout
  * Fixed an issue where `PrimerCheckoutData` was nil when reporting an error in payment creation.
</Update>

<Update label="v2.30.0" description="2024-08-20">
  **✨ Improvements**

  * Improved initialization: We have strengthened the iOS SDK's initialization process, ensuring it remains reliable even if users experience connectivity drops. These changes guarantee a smoother experience
  * We have made improvements to our internal analytics to facilitate troubleshooting

  **🔧 Fixes**

  * Setting the `uiDelegate` via `PrimerHeadlessUniversalCheckout.current.start` now works as expected.
</Update>

<Update label="v2.29.0" description="2024-08-09">
  **✨ Improvements**

  **Client Session caching**
  It is now possible to cache the ClientSession configuration client-side, which can speed up certain flows in the SDK. This can be enabled via the [clientSessionCachingEnabled](/sdk/android/v2.x.x/common-objects/PrimerSettings#properties.clientSessionCachingEnabled) flag. Before enabling the flag to true it's recommended to reach out to Primer support for additional verification since there are edge cases where it is not advised.
</Update>

<Update label="v2.28.0" description="2024-08-07">
  **✨ Improvements**

  **Define merchant name on Apple Pay flow.**

  We now allow merchants to set a user-defined merchant name on the Apple Pay flow.

  **Details of the changes:**

  * Create a client session with the desired merchant name as shown [here](/api-reference/v2.4/api-reference/client-session-api/create-a-client-session#response-payment-method-options-payment-method-type-merchant-name)
  * The iOS SDK will then show this name on the Apple Pay flow rather than the merchant name on your Primer account.
  * Setting this value via [PrimerSettings](/sdk/ios/v2.x.x/common-objects/PrimerSettings#properties.paymentMethodOptions-properties.applePayOptions-properties.merchantName) is now deprecated.

  **🔧 Fixes**

  * Fixed a crash that could occur when using PrimerSDK from multiple threads.
  * Fixed a crash that could occur during Primer3DS initialization.
</Update>

<Update label="v2.27.0" description="2024-07-10">
  **✨ Improvements**

  * We have removed Card Components and related UI from the SDK. Card components was previously deprecated.

  **🔧 Fixes**

  * Fixed an issue where payment resume network responses weren't being handled correctly.
  * Fixed a crash in CVV recapture caused by setting explanation text.
</Update>

<Update label="v2.26.7" description="2024-06-26">
  **🔧 Fixes**

  * We have aligned the card expiry date validation logic between the Drop-In and Headless integrations, which were previously different.
  * Fixed a bug in the Klarna Headless implementation where the correct events were not fired during a manual payment flow.
</Update>

<Update label="v2.26.6" description="2024-06-20">
  **🔧 Fixes**

  * Fixed a bug in the Klarna Headless implementation where the correct events were not fired during a manual payment flow.
</Update>

<Update label="v2.26.5" description="2024-06-12">
  **✨ Improvements**

  * We have aligned error handling across mobile platforms and enhanced our analytics capabilities. Additionally, we have thoroughly documented all errors. For more details, please refer to the official documentation [here](/sdk/ios/v2.x.x/common-objects/PrimerError).
  * We have improved validation of the custom URL scheme setting used for payment methods with native UI.
</Update>

<Update label="v2.26.4" description="2024-05-07">
  **🔧 Fixes**

  * We have improved the PayPal payment method token by providing additional data, including the payer's first name, last name, and external payer ID. For more information, see our [SDK reference docs](/sdk/ios/v2.x.x/common-objects/PrimerPaymentMethodTokenData)
</Update>

<Update label="v2.26.3" description="2024-04-29">
  **✨ Improvements**

  **🔧 Fixes**

  * The release involves a fix to the Primer API client on iOS to allow payments made with NolPay to settle correctly.
</Update>

<Update label="v2.26.2" description="2024-04-15">
  **✨ Improvements**

  **✨ Improvements**

  * We've simplified the way that we make network requests and improved how we log traces and analytics events when requests are made.

  **🔧 Fixes**

  * Fix Nol pay Xcode errors
    * Addressed an intermittent build failure issue related to `PrimerHeadlessUniversalCheckout` not recognizing `PrimerHeadlessNolPayManager` due to specific Xcode build settings and packaging nuances within CircleCI/Fastlane environments.
    * The update ensures compatibility with Xcode 15.2 and proper handling of nested classes and conditional imports, stabilizing the integration of PrimerNolPaySdk and PrimerSDK.
</Update>

<Update label="v2.26.1" description="2024-04-11">
  **🔧 Fixes**

  * Fix Nol pay Xcode errors
    * Build failure issue related to **`PrimerHeadlessUniversalCheckout`** not recognizing **`PrimerHeadlessNolPayManager`** due to specific Xcode build settings and packaging nuances within CircleCI/Fastlane environments.
</Update>

<Update label="v2.26.0" description="2024-04-09">
  **🚀 New feature**

  Recapture CVV feature on Drop-in checkout

  * Merchants can now prompt customers to re-enter their CVV for additional verification during checkout, improving security without storing CVV data.

  **✨ Improvements**

  * Update 3DS to the latest version
</Update>

<Update label="v2.25.0" description="2024-03-28">
  **🚀 New feature**

  Klarna EMD support on Drop-in checkout\*\*

  We have extended our support for Klarna extra merchant data (EMD) to the Drop-in checkout.

  **Klarna payment categories have been expanded to allow support for all the available categories on Drop-In, including:**

  * Pay now
  * Pay later: Pay in 30 days
  * Pay over time: Pay in 3-4 instalments. First payment right away, then the rest in instalments (no interest)
  * Fair financing: Instalment plans of 6, 12, 24, and 36 months with flexible payments (with interest)

  **Support for Klarna EMD on Drop-in Mobile Checkout**

  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](https://docs.klarna.com/klarna-payments/in-depth-knowledge/extra-merchant-data/#how-to-send-emd) via the Client Session as described [here](/connections/payment-methods/klarna/direct-integration/).  Available schemas are documented [here](https://docs.klarna.com/api-reference/attachment-schema/).

  **✨ Improvements**

  **Other Klarna Improvements**

  * The Klarna Drop-In integration now uses the same code as the headless integration under the hood, resulting in a more robust experience.
  * Klarna Drop-In now has a fresh new design.

  **Upgraded 3DS SDK**

  This version of the SDK is compatible with **`v2.3.0`** or greater of the **`Primer 3DS SDK`.**
</Update>

<Update label="v2.24.0" description="2024-03-18">
  **✨ Improvements**

  * Bumped minimum iOS version to **13.0**
    * This means that our SDK now works with apps that target iOS 13.0 and above
  * The loading spinner appears more promptly in drop-in checkout after the user submits the payment
  * Local card network identification is now significantly faster and more performant
</Update>

<Update label="v2.23.0" description="2024-03-07">
  **✨ Improvements**

  * We have included support for Klarna Extra Merchant Data
  * In this release we have added the `PrimerHeadlessUniversalCheckoutKlarnaManager` that provides access to the [`KlarnaComponent`](/sdk/ios/v2.x.x/primer-headless-checkout/klarna-headless-manager/provideKlarnaComponent#return).
    Using the `KlarnaComponent` you can seamlessly integrate Klarna, with a custom payment category selection UI.
    Consult the [guide](/connections/payment-methods/klarna/headless?platform=ios) to get a sense of how to seamlessly integrate Klarna.
  * We've made several internal improvements to our analytics service that improve its performance. This also fixes a memory leak that caused a crash in very specific circumstances for older versions of the SDK.
  * In drop-in checkout, the card icon now updates correctly whenever the entered card number is changed.
</Update>

<Update label="v2.22.0" description="2023-02-15">
  **✨ Improvements**

  * We have released support for co-badged cards. You can allow users to select a network if their card is co-badged.
  * We have also improved card network validation significantly for all card networks.
</Update>

<Update label="v2.21.0" description="2024-02-06">
  **✨ Improvements since 2.20.1**

  * Fix NOL pay bug - fetching of the cards
  * Implement new currency handling logic
  * Update 3DS to the latest version
</Update>

<Update label="v2.20.1" description="2024-01-26">
  **✨ Improvements since 2.20.0**

  * Fixes an issue where PrimerSDK had a dependency on KlarnaMobileSDK v2.2.2
</Update>

<Update label="v2.20.0" description="2024-01-19">
  **💳 APMs support**

  **iDEAL via Adyen**

  Adds the `PrimerHeadlessUniversalCheckoutComponentWithRedirectManager` that provides access to `BanksComponent`. Using the `BanksComponent` you can easily:

  * load list of all supported banks
  * submit user's selection

  **✨ Improvements since 2.19.0**

  * Throw error when using NativeUIManager for non-native payment method (#772)
  * Improved Errors in the event Apple Pay cannot be presented.
</Update>

<Update label="v2.19.0" description="2023-12-15">
  **🚀 New Features since 2.18.3**

  * In this release, our 3DS support has undergone significant enhancements, offering a multitude of improvements that improve the conversion rate of 3DS challenges.
    Please note, with this update, compatibility requires the use of the 2.1.0 version of the 3DS SDK (`pod 'Primer3DS', '2.1.0'`)
  * We have also improved internal analytics by adding additional information to errors that the SDK can encounter. This will enable us to troubleshoot issues much quicker.
</Update>

<Update label="v2.18.3" description="2023-12-06">
  **✨ Improvements since 2.18.2**

  * Fixed analytics issue causing high memory usage and occasional freeze
</Update>

<Update label="v2.18.2" description="2023-11-13">
  **✨ Improvements since 2.18.1**

  * Fix phone validation
    * Add local empty phone validation before sending the string to server
</Update>

<Update label="v2.18.1" description="2023-11-13">
  **✨ Improvements since 2.18.0**

  * Fix State Machine for nol Pay
    * Developers can now move through steps as expected
</Update>

<Update label="v2.18.0" description="2023-11-3">
  **🚀 New Features since 2.18.0-b1**

  * Logging interface for SDK
  * Implement async Phone Validation for Nol

  **✨ Improvements since 2.18.0-b1**

  * Fixes ApplePay button rendering logic
</Update>

<Update label="v2.18.0-b1" description="2023-10-19">
  **🚀 New Features since 2.17.6**

  **nol Pay**

  Adds the `PrimerHeadlessNolPayManager` that provides following features:

  * **Listing Nol cars**: Listing previously linked Nol payment cards using [NolPayLinkedCardsComponent](/sdk/ios/v2.x.x/primer-headless-checkout/nol-pay-manager/provideNolPayLinkedCardsComponent.mdx).
  * **Linking**: Link the Nol card to a phone number using [NolPayLinkCardComponent](/sdk/ios/v2.x.x/primer-headless-checkout/nol-pay-manager/provideNolPayLinkCardComponent).
  * **Unlinking**: Unlink previously linked Nol card using [NolPayUnlinkCardComponent](/sdk/ios/v2.x.x/primer-headless-checkout/nol-pay-manager/provideNolPayUnlinkCardComponent).
  * **Transactions**: Execute payments using selected Nol payment cards [NolPayPaymentComponent](/sdk/ios/v2.x.x/primer-headless-checkout/nol-pay-manager/provideNolPayPaymentComponent).
</Update>

<Update label="v2.17.6" description="2023-10-06">
  \*\* ✨ Improvements since 2.17.5\*\*

  * • Add UIKit import to Mock3DSService.swift - fixes Swift Package Manager compilation issue.
</Update>

<Update label="v2.17.5" description="2023-09-25">
  \*\* ✨ Improvements since 2.17.4\*\*

  * Removed noisy analytics events during SDK init
</Update>

<Update label="v2.17.4" description="2023-09-19">
  \*\* ✨ Improvements since 2.17.3\*\*

  * Upgrades for Xcode 15
</Update>

<Update label="v2.17.3" description="2023-09-08">
  ✨ Improvements since 2.17.2

  * We've removed the UIKit import guards from all files

  <Note>
    ℹ️ If you encounter any errors or warnings related to UIKit as a dependency, please submit a bug report [**here**](https://github.com/primer-io/primer-sdk-ios/issues).
  </Note>
</Update>

<Update label="v2.17.2" description="2023-09-06">
  ✨ Improvements since 2.17.1

  * Fix issue where Cardholder Name field would not accept spaces in Headless Integration.
</Update>

<Update label="v2.17.1" description="2023-08-09">
  ✨ Improvements since 2.17.0

  * Fix Apple Pay crash
</Update>

<Update label="v2.17.0" description="2023-07-28">
  <Note>
    ⚠️ If you are using `Primer3DS` in your integration, make sure to bump it to v.1.2.0
  </Note>

  For detailed documentation and migration guides, please refer to the links provided in the changelog.

  **🚀 New Features since 2.16.7**

  * **Headless Vault Manager**

    Add **`PrimerHeadlessUniversalCheckout.VaultManager()`** which returns an instance of **`PrimerHeadlessUniversalCheckout.VaultManager`**. It provides the following features:

    * [**Fetch a list**](/sdk/ios/v2.x.x/primer-headless-checkout/vault-manager/fetchVaultedPaymentMethods) of vaulted payment methods.
    * [**Delete**](/sdk/ios/v2.x.x/primer-headless-checkout/vault-manager/deleteVaultedPaymentMethod) a vaulted payment method.
    * [**Validate**](/sdk/ios/v2.x.x/primer-headless-checkout/vault-manager/validate) the additional data used to perform a payment (e.g., validate CVV).
    * [**Perform a payment**](/sdk/ios/v2.x.x/primer-headless-checkout/vault-manager/startPaymentFlow) using a vaulted payment method.
  * **Our 3DS service has been completely revamped.**

    Primer SDK now supports 3DS protocol version **`2.2.0`**. It includes the following enhancements:

    * Support 3DS weak validation.
    * Support 3DS OOB flow.
    * Improve 3DS reporting.
    * Set the 3DS sanity check in **`PrimerSettings`** to **`false`** when you are in **`DEBUG`** mode, to disable the device check when testing on the simulator.
  * **`PrimerPaymentMethodAsset` now exposes the payment method's friendly name**
  * Reintroduce showing a payment method directly with the Drop-In UI integration.
  * S**upport for** **iPay88**

    This version is adding **support for** **iPay88** payments in Malaysia.
    Our [documentation](/checkout/headless/) has been updated to reflect these changes. You can also find a [Migration Guide](/changelogs/migration-guides/) detailing the changes.

  ✨ Improvements since 2.16.7

  * Fix vaulted payment method on Drop In not getting tapped
  * Enhance 3DS auth rates
  * Fix checkout not rendering when there are vaulted payment methods
  * Make performance improvements on raw data manager validation delegate
  * Fix the scenario where the payment method's image file is missing
  * Print console warning when a **`decisionHandler`** is not implemented
  * Observability improvements
  * Improves cancellation happening from 3rd party payment apps through deep links
  * Fix Atome cancellation from within the web view
  * Fix UI unresponsiveness happening on iOS 16.0.x in certain cases
</Update>

<Update label="v2.17.0-rc.17" description="2023-07-17">
  **✨ Improvements since 2.17.0-rc.16**

  * Fix vaulted payment method on Drop In not getting tapped
</Update>

<Update label="v2.17.0-rc.16" description="2023-07-12">
  <Note>
    ⚠️ If you are using `Primer3DS` in your integration, make sure to bump it to v.1.2.0
  </Note>

  **✨ Improvements since 2.17.0-rc.15**

  * Enhance 3DS auth rates
</Update>

<Update label="v2.17.0-rc.15" description="2023-07-10">
  **✨ Improvements**

  **Headless Vault Manager**

  Add `PrimerHeadlessUniversalCheckout.VaultManager()` which returns an instance of `PrimerHeadlessUniversalCheckout.VaultManager`. It provides the following features:

  * [fetch a list](/sdk/ios/v2.x.x/primer-headless-checkout/vault-manager/fetchVaultedPaymentMethods) of vaulted payment methods
  * [delete](/sdk/ios/v2.x.x/primer-headless-checkout/vault-manager/deleteVaultedPaymentMethod) a vaulted payment method
  * [validate](/sdk/ios/v2.x.x/primer-headless-checkout/vault-manager/validate) the additional data used to perform a payment (e.g. validate CVV)
  * [perform a payment](/sdk/ios/v2.x.x/primer-headless-checkout/vault-manager/startPaymentFlow) using a vaulted payment method

  **✨ Improvements since 2.17.0-rc.14**

  * Fix issue with Vipps getting presented
</Update>

<Update label="v2.17.0-rc.14" description="2023-06-07">
  **✨ Improvements**

  * Reintroduce showing a payment method directly with the Drop In UI integration

  ⚠️

  **✨ Improvements since 2.17.0-rc.13**

  * Fix checkout not rendering when there are vaulted payment methods
  * Make performance improvements on raw data manager validation delegate
</Update>

<Update label="v2.17.0-rc.13" description="2023-05-31">
  <Note>
    ⚠️ This version has a know bug and won't render the Universal Checkout if there're vaulted payment methods for the user defined in the client session
  </Note>

  <Note>
    ⚠️ If you are also integrating `Primer3DS`, make sure to install v.1.1.2 to avoid archiving issues with Xcode 14.3.1
  </Note>

  **✨ Improvements since 2.17.0-rc.12**

  * Apply fix on PayPal vaulting
  * Fix Klarna archiving issue
</Update>

<Update label="v2.17.0-rc.12" description="2023-05-30">
  **✨ Improvements**

  <Note>
    ⚠️ This version has a know bug and won't render the Universal Checkout if there're vaulted payment methods for the user defined in the client session
  </Note>

  <Note>
    ⚠️ If you are also integrating `Primer3DS`, make sure to install v.1.1.2 to avoid archiving issues with Xcode 14.3.1
  </Note>

  * Our 3DS service has been completely revamped. Primer SDK now supports 3DS protocol version `2.2.0`
  * Support 3DS weak validation
  * Support 3DS OOB flow
  * Improve 3DS reporting
  * Set 3DS sanity check in `PrimerSettings` to `false` when you are in `DEBUG` mode, to disable the device check when testing on the simulator.

  Check out our detailed documentation [here](/checkout/headless#ios)

  **✨ Improvements since 2.17.0-rc.11**

  * Minor fixes
</Update>

<Update label="v2.17.0-rc.11" description="2023-05-10">
  **🔧 Fixes**

  * Take into account tax and discount on Apple Pay items
  * Prioritize merchant amount over total amount
  * Only take into account surcharge when merchant amount is not set
</Update>

<Update label="v2.16.7" description="2023-05-10">
  **🔧 Fixes**

  * Take into account tax and discount on Apple Pay items
  * Prioritize merchant amount over total amount
  * Only take into account surcharge when merchant amount is not set
</Update>

<Update label="v2.17.0-rc.10" description="2023-04-24">
  **🔧 Fixes**

  * Expose payment instrument data on tokenization callback
  * Fix issue that prevented the client session from being updated when restarting headless checkout
  * Make iPay88 `userContact` optional
</Update>

<Update label="v2.16.6" description="2023-04-24">
  **🔧 Fixes**

  * Expose payment instrument data on tokenization callback
</Update>

<Update label="v2.17.0-rc.9" description="2023-04-17">
  **🔧 Fixes**

  * Fixed SDK crashing when Primer3DS is not included
  * Fixed build issue due to iPay88 when archiving
</Update>

<Update label="v2.17.0-rc.8" description="2023-04-10">
  <Note>
    ⚠️ SDK is crashing on this version when Primer3DS pod is not included. Please update to `2.17.0-rc.9` version.
  </Note>

  **✨ Improvements since 2.17.0-rc.7**

  * Modify iPay88 validation rules
</Update>

<Update label="v2.17.0-rc.7" description="2023-04-06">
  <Note>
    ⚠️ SDK is crashing on this version when Primer3DS pod is not included. Please update to `2.17.0-rc.9` version.
  </Note>

  **✨ Improvements since 2.17.0-rc.6**

  * Improved analytics
</Update>

<Update label="v2.17.0-rc.6" description="2023-04-03">
  <Note>
    ⚠️ SDK is crashing on this version when Primer3DS pod is not included. Please update to `2.17.0-rc.9` version.
  </Note>

  **✨ Improvements since 2.17.0-rc.5**

  * Improved analytics
</Update>

<Update label="v2.17.0-rc.5" description="2023-03-28">
  <Note>
    ⚠️ SDK is crashing on this version when Primer3DS pod is not included. Please update to `2.17.0-rc.9` version.
  </Note>

  **✨ Improvements**

  * `PrimerPaymentMethodAsset` now exposes the payment method's friendly name

  **✨ Improvements since 2.17.0-rc.4**

  * Improved analytics
  * Fix scenario where payment method's image file is missing
  * Print console warning when a `decisionHandler` is not implemented
</Update>

<Update label="v2.17.0-rc.4" description="2023-03-20">
  **✨ Improvements since 2.17.0-rc.3**

  * Fix for React Native
</Update>

<Update label="v2.17.0-rc.3" description="2023-03-15">
  **✨ Improvements**

  This version is adding support for iPay88 payments in Malaysia.

  Our [documentation](/checkout/headless#ios) has been updated to reflect these changes. You can also find a [Migration Guide](/changelogs/migration-guides) detailing the changes.

  **✨ Improvements since 2.17.0-rc.2**

  * Contains the features and improvements of 2.16.5
  * Observability improvements
  * Improves cancellation happening from 3rd party payment apps through deep links
  * Fix Atome cancellation from within the webview
  * Fix UI unresponsiveness happening on iOS 16.0.x on certain cases
  * Fix iOS console warnings
</Update>

<Update label="v2.16.5" description="2023-03-06">
  **🔧 Fixes**

  * Fix an issue that prevented 3DS from working with some card networks (AMEX, Maestro, Discover, and JCB)
  * Fix an issue that prevented 3DS from working when the billing address is set or updated after the SDK is initialized with a client session
  * Improve 3DS visibility
</Update>

<Update label="v2.17.0-rc.2" description="2023-01-23">
  **✨ Improvements**

  It's been more than 6 months that Headless Checkout has been released in Beta!

  We gathered insightful feedback that pushed us to work on critical improvements to the developer experience of Headless Checkout.

  This release candidate introduces a more robust, scalable, and stable flow for integrating Headless Checkout to implement a fully custom interface for your checkout.

  Our [documentation](/changelogs/migration-guides/) detailing the changes.

  **✨ Improvements since 2.17.0-rc.1**

  * Contains the features and improvements of 2.16.3 and 2.16.4
  * Remove Google Pay from the list of payment methods
</Update>

<Update label="v2.16.4" description="2023-02-09">
  **✨ Improvements**

  * Fix translations

  **🔧 Fixes**

  * Fix build issue on Xcode 13
</Update>

<Update label="v2.16.3" description="2023-02-03">
  **✨ Improvements**

  * Add translations
  * Add analytics events and errors

  **🔧 Fixes**

  * Fix theming issue
</Update>

<Update label="v2.17.0-rc.1" description="2023-01-23">
  <Note>
    ⚠️ This version introduces breaking changes for Headless Checkout
  </Note>

  **✨ Improvements**

  It's been more than 6 months that Headless Checkout has been released in Beta!

  We gathered insightful feedback that pushed us to work on critical improvements to the developer experience of Headless Checkout.

  This release candidate introduces a more robust, scalable, and stable flow for integrating Headless Checkout to implement a fully custom interface for your checkout.

  Our [documentation](/changelogs/migration-guides/) detailing the changes.

  This release candidate will soon be merged into the main releases.

  **✨ Improvements since 2.16.2**

  * Contains the features and improvements of 2.16.1 and 2.16.2
  * Remove Google Pay from the list of payment methods
</Update>

<Update label="v2.16.2" description="2023-01-20">
  **🔧 Fixes**

  * Fix Xendit OVO redirect
</Update>

<Update label="v2.16.1" description="2022-12-29">
  **🔧 Fixes**

  * Fix Klarna payment category
</Update>

<Update label="v2.16.0" description="2022-12-21">
  **✨ Improvements**

  In this version we are adding support for iPay88 card payments.

  We have also added events to monitor the Headless flow.

  **🔧 Fixes**

  * Remove Xcode configuration flags from podspec.
  * Apple Pay will return an error on simulator
</Update>

<Update label="v2.15.1" description="2022-11-29">
  **🔧 Fixes**

  * Fixing the MBWay local asset loading
  * Removed the `GENERATE_INFOPLIST_FILE` as part of the `xcconfig` of the `PrimerSDK` podspec as it was causing an issue upon archiving the hosting apps
  * Added `CODE_SIGNING_ALLOWED => NO` to `xcconfig` in `podspec` to remove the Signing requirement introduced in Xcode 14+
</Update>

<Update label="v2.15.0" description="2022-11-17">
  **🔧 Fixes**

  * Fixed the Contributing link in our SDK Readme
  * Added the `GENERATE_INFOPLIST_FILE` as part of the `xcconfig` of the `PrimerSDK` podspec
  * Improved the Cardholder Name field availability in Card form
</Update>

<Update label="v2.14.3" description="2022-11-11">
  **🔧 Fixes**

  * Fixed an issue with regards to the availability of retrieving some assets
  * Small improvements in the way the Country selector in billing address gets loaded
</Update>

<Update label="v2.14.2" description="2022-11-08">
  **🔧 Fixes**

  * Fixed 3DS on frictionless flows
  * Sending analytics events with correct `sdkVersion`
</Update>

<Update label="v2.14.1" description="2022-11-04">
  **🔧 Fixes**

  * Fixed the PayPal vaulting service
</Update>

<Update label="v2.14.0" description="2022-10-27">
  In this version we are obsoleting the 3DS vaulting via the **`PrimerSettings.PrimerCardPaymentOptions`** .

  Above flow is now obsoleted and 3DS will always follow workflows.

  **🔧 Fixes**

  * We have fixed wrong cardholder name checkout modules evaluations which resulted in not requesting cardholder name on headless
  * We have fixed raw data validation callbacks not being fired on headless
</Update>

<Update label="v2.13.1" description="2022-10-24">
  **🔧 Fixes**

  Fixing the Blik flow.

  <Note>
    ℹ️ This fix solves the issue affecting versions from `2.7.0` to `2.13.0`. We recommend updating to this `2.13.1` version.
  </Note>
</Update>

<Update label="v2.13.0" description="2022-10-21">
  **✨ Improvements**

  <Note>
    👌 Alongside the listed features below, we have performed improvements to our codebase.
  </Note>

  **💳 APMs support**

  **Retail Outlets via Xendit**

  In this version of the SDK we added the support for Retail Outlets via Xendit.

  Retail Outlets via Xendit Payment Method now is fully supported via Headless Universal Checkout (Beta) via the Raw Data Manager.

  Check this out in [our documentation](https://www.notion.so/52426f47b9b04f808a6b88ee51301196?pvs=21) 🙌
</Update>

<Update label="v2.12.2" description="2022-10-19">
  **🔧 Fixes**

  Fixed on Headless Universal Checkout with `ADYEN_BANCONTACT_CARD` flow failing on some scenarios.
</Update>

<Update label="v2.12.1" description="2022-10-10">
  **🔧 Fixes**

  Fix Klarna vault flow failing on some scenarios.
</Update>

<Update label="v2.12.0" description="2022-10-06">
  **✨ Improvements**

  <Note>
    👌 Alongside the listed features below, we have performed improvements to our codebase.
  </Note>

  **💳 APMs support**

  **Bancontact via Adyen**

  In this version of the SDK we added the support for Bancontact Debit via Adyen.

  Bancontact Debit via Adyen Payment Method now is fully supported via Headless Universal Checkout (Beta) and the standard SDK implementation.

  In this release, developers have the ability of initializing the raw data for a Bancontact Card 💳  and  perform the Tokenization flow via their own fully customized UI yet utilizing all of the features that make Primer great.

  This update also bring an improvement of `CardFormUIManager` , now accepting other Card inputs to perform payments.

  In order to do so, you can now initialize the `CardFormUIManager` with \*\*`public** **init**(paymentMethodType: String)` as opposed to its classic initializer which has been utilizing the standard `PAYMENT_CARD` payment method type.

  **Apple Pay billing address**

  Last but not least, we are now capturing the billing address out of an Apple Pay payment.

  To enable this feature, when configuring the Checkout with the `PrimerSettings` , developers can setup `PrimerApplePayOptions` with another parameter: `isCaptureBillingAddressEnabled` . The SDK will take care of showing the option of adding the billing address and capture it.
</Update>

<Update label="v2.11.1" description="2022-10-03">
  **🔧 Fixes**

  Fix crash with Primer's raw data manager on HUC and processor 3DS
</Update>

<Update label="v2.11.0" description="2022-09-30">
  **✨ Improvements**

  <Note>
    👌

    Alongside the listed features below, we have performed improvements to our codebase.
  </Note>

  In this version of the SDK we improved the raw data validation in the Headless Universal Checkout flow.
</Update>

<Update label="v2.9.0" description="2022-09-16">
  **✨ Improvements**

  <Note>
    👌 Alongside the listed features below, we have performed improvements to our codebase.
  </Note>

  In this version of the SDK we added the support for Multibanco via Universal Checkout.

  Multibanco Payment Method now is fully supported via Headless Universal Checkout (Beta) and the standard SDK implementation.

  PromptPay is also now supported via Omise too 🙌.

  In Headless Universal Checkout (Beta), developers will access to a new event which will provide an object `PrimerCheckoutQRCodeInfo` containing the data needed to build their awesome UI / UX on top.

  For PromptPay specifically, the object will be `PromptPayCheckoutAdditionalInfo`

  **\`func** primerHeadlessUniversalCheckoutDidReceiveAdditionalInfo(\_ additionalInfo: PrimerCheckoutAdditionalInfo?)\*\*
</Update>

<Update label="v2.8.0" description="2022-09-08">
  **✨ Improvements**

  <Note>
    👌 Alongside the listed features below, we have performed improvements to our codebase.
  </Note>

  The `PrimerKlarnaSDK` is now also supported on Swift Package Manager. No changes are required if you're integrating the `PrimerSDK` with the SPM, since it's going to add the Klarna SDK by default.

  Also there's a fix on the infinite loading with Xendit.

  Try it out and let us know what do you think 🙌!
</Update>

<Update label="v2.7.0" description="2022-09-01">
  **✨ Improvements**

  <Note>
    👌 Alongside the listed features below, we have performed improvements to our codebase.
  </Note>

  This release changes the way that Klarna is integrated, and switches on Klarna's native iOS SDK (with CocoaPods, SPM will soon follow). It also add **MultiBanco** and **MBWay** support on Headless Universal Checkout raw data manager.

  Also there's a fix on local images not being returned by the HUC.

  Try it out and let us know what do you think 🙌!
</Update>

<Update label="v1.37.0" description="2022-09-01">
  **✨ Improvements**

  This release changes the way that Klarna is integrated, and switches on Klarna's native iOS SDK (with CocoaPods, SPM will soon follow).

  Try it out and let us know what do you think 🙌!
</Update>

<Update label="v2.6.0" description="2022-08-24">
  **✨ Improvements**

  <Note>
    👌 Alongside the listed features below, we have performed improvements to our codebase.
  </Note>

  Last release was all about bringing the possibility to Headless Checkout of utilizing the raw data a card 💳  contains so that developers could utilize their own fully customized UI and still use all of the features that make Primer great.

  We kept expanding the Headless Checkout feature, now providing to our developers the raw phone number data they can utilize to create payments.

  The payment method supporting that is only **OVO via Xendit** for now.

  Try it out and let us know what do you think 🙌!

  ***

  We didn't stop here though, alongside the phone number capture, we have enriched our suite of available payment methods adding MB Way, working with Portuguese phone numbers 🇵🇹  and needing the MB Way App to complete the payment.

  Here is a preview 👇

  ![Simulator Screen Recording - iPhone 11 - 2022-08-23 at 18.48.28.gif](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/6089039b-e4ef-424b-aa53-0ed7663ba0ac/Simulator_Screen_Recording_-_iPhone_11_-_2022-08-23_at_18.48.28.gif)
</Update>

<Update label="v2.5.0" description="2022-08-16">
  **✨ Improvements**

  <Note>
    👌 Alongside the listed features below, we have performed improvements to our codebase.
  </Note>

  This release enhance the capabilities of our SDK in its Headless Checkout feature, bringing the possibility of utilizing your fully customized UI and still use all of the features that make Primer great. We now give to our developers all the raw data a card contains.

  Try it out and let us know what do you think 🙌!
</Update>

<Update label="v2.4.0" description="2022-08-10">
  **✨ Improvements**

  <Note>
    👌 Alongside the listed features below, we have performed improvements to our codebase.
  </Note>

  This release brings a totally new way of retrieving the APMs.

  We have now the possibility of providing some APMs without even push a new release 🙌.

  That's a huge milestone for us and the developments of our product.

  ***

  As everything game-changing, it comes with a cost. To be able to support this release, we have made some changes that requires some work in case you are already utilizing the SDK.

  **🚨 **Migration info**🚨**

  Payment methods' types in version prior to this one (`<2.4.0`) were represented by a `enum PrimerPaymentMethodType` , hence accessible via: `.paymentMethod` .

  In this version, we are no longer exposing the `enum` , and return a plain `String` instead.
</Update>

<Update label="v2.3.0" description="2022-07-29">
  **✨ Improvements**

  <Note>
    👌 Alongside the listed features below, we have performed improvements to our codebase.
  </Note>

  **💳 APMs support**

  Fast and PromptPay via Rapyd

  ![Screen Shot 2022-07-28 at 17.45.42.png](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/7873ba30-8b73-4217-aef5-57a1eb57b369/Screen_Shot_2022-07-28_at_17.45.42.png)

  ![Screen Shot 2022-07-28 at 17.52.14.png](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/985e5e7f-4ccc-4f6c-a9a2-ed07acc58047/Screen_Shot_2022-07-28_at_17.52.14.png)

  <Frame>
    <img src="https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/ios/Screen_Shot_2022-07-28_at_17.45.42.webp?fit=max&auto=format&n=2gUFYKfNb_svpxsN&q=85&s=e8bb1c519851e8d322fd89ebed7720b3" width="512" height="700" data-path="images/changelogs/ios/Screen_Shot_2022-07-28_at_17.45.42.webp" />

    <img src="https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/ios/Screen_Shot_2022-07-28_at_17.52.14.webp?fit=max&auto=format&n=2gUFYKfNb_svpxsN&q=85&s=7aae5367db46aff000a04a3c755ceae4" width="605" height="553" data-path="images/changelogs/ios/Screen_Shot_2022-07-28_at_17.52.14.webp" />
  </Frame>
</Update>

<Update label="v2.2.1" description="2022-07-18">
  * Internal codebase refactors
  * Fix Danger check
</Update>

<Update label="v2.2.0" description="2022-07-13">
  **✨ Improvements**

  <Note>
    👌 Alongside the listed features below, we have performed improvements to our codebase.
  </Note>

  **💳 APMs support**

  Grab Pay, Poli and GCash via Rapyd

  <Frame>
    <img src="https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/ios/poli-simulator.webp?fit=max&auto=format&n=2gUFYKfNb_svpxsN&q=85&s=ab5f65f97c7e7698ee3b56a439287fe3" width="512" height="591" data-path="images/changelogs/ios/poli-simulator.webp" />

    <img src="https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/ios/grabpay-gcash-simulator.webp?fit=max&auto=format&n=2gUFYKfNb_svpxsN&q=85&s=b34748ff595f0640b2e98a94ff68c8d2" width="512" height="658" data-path="images/changelogs/ios/grabpay-gcash-simulator.webp" />
  </Frame>

  **Billing address support 🧾**

  We can now capture the billing address before performing a payment.

  <Frame>
    <img src="https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/ios/simulator_screenshot_724BBFE3-68B7-402F-BE79-289A9C4D1C1D.webp?fit=max&auto=format&n=2gUFYKfNb_svpxsN&q=85&s=28fa9497a203b1fd4c6fc34d5706001b" width="512" height="1108" data-path="images/changelogs/ios/simulator_screenshot_724BBFE3-68B7-402F-BE79-289A9C4D1C1D.webp" />

    <img src="https://mintcdn.com/primer-cc826789/2gUFYKfNb_svpxsN/images/changelogs/ios/simulator_screenshot_312BB2C8-007D-4074-AB36-086BE8CE8BFE.webp?fit=max&auto=format&n=2gUFYKfNb_svpxsN&q=85&s=19499368933869d130b72080086d8d8b" width="512" height="1108" data-path="images/changelogs/ios/simulator_screenshot_312BB2C8-007D-4074-AB36-086BE8CE8BFE.webp" />
  </Frame>
</Update>

<Update label="v1.36.2" description="2022-07-13">
  * Fix checkout with Adyen iDeal
</Update>

<Update label="v2.1.0" description="2022-07-07">
  **✨ Improvements**

  *The version 2 of the Headless Universal Checkout is out!*

  <Tip>
    💡 Take a look at the [migration guide](/changelogs/migration-guides/) for updating your integration to version 2.
  </Tip>

  **✨ Payments created automatically**

  Primer Headless Universal Checkout | SDK

  Starting from this version, automatic payment creation is included in the `Headless Universal Checkout`. You should now only care about creating best possible and seamless experience for your users, we will take care of the rest. Please take a look at our simple [explanation](https://www.notion.so/iOS-SDK-5a86e1d933fc4fae83b1497f80c7310a?pvs=21) about the changes we made.
</Update>

<Update label="v2.0.1" description="2022-06-20">
  * Fix Klarna checkout
  * Dummy APMs
</Update>

<Update label="v2.0.0" description="2022-06-08">
  **✨ Improvements**

  *The version 2 of the SDK is out!*
  *This includes a simplified way to integrate Primer*

  <Tip>
    📚 Take a look at the [migration guide](/changelogs/migration-guides/) for updating your integration to version 2.
  </Tip>

  **✨ Payments created automatically**

  Universal Checkout | SDK

  Creating payments with Universal Checkout is now *seamless.* There's no more need for **callbacks**, **API calls** and **headaches** to create a payment. It's all done under the hood 🧙

  ***In the past, creating payments involved manual payment handling:***
  On the **client side**, you would have had to implement the dreaded `clientTokenCallback`, `onTokenizeSuccess` and `onResumeSuccess` delegate functions:

  ```swift theme={"dark"}
  extension MyViewController: PrimerDelegate {

     func clientTokenCallback(_ completion: @escaping(String ? , Error ? ) - > Void) {
        // API call to fetch client token from your backend.
        fetchClientToken() {
           (token, err) in
           completion(token, err)
        }
  		}

  	func onTokenizeSuccess(_ paymentMethodToken: PaymentMethodToken, resumeHandler: ResumeHandlerProtocol) {
  	   // Send the payment method token to your server to create a payment
  	   sendPaymentMethodToken(token: paymentMethodToken) { (res, err) in
  	      if let err = err {
  	         resumeHandler.handle(error: err)
  	      } else if
  	      let res = res {
  	         guard
  	         let requiredActionDic = res["requiredAction"] as ? [String: Any],
  	            let clientToken = requiredActionDic["clientToken"] as ? String
  	         else {
  	            resumeHandler.handleSuccess()
  	            return
  	         }

  	         resumeHandler.handle(newClientToken: clientToken)
  	      }
  	   }
  	}

  	func onResumeSuccess(_ resumeToken: String, resumeHandler: ResumeHandlerProtocol) {
  	   // Resume the payment
  	   sendResumeToken(resumeToken) {
  	      (res, err) in
  	      if let err = err {
  	         resumeHandler.handle(error: err)
  	      } else if let res = res {
  	         resumeHandler.handleSuccess()
  	      }
  	   }
  	}

  }
  ```

  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 💆

  <Accordion title="For the nerds ❤️">
    *

    *Payment lifecycle callbacks*

    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.

    <Tip>
      💡 For more information on these callbacks, take a look at the **Payment Lifecycle Callbacks** section in our new and improved [API reference](https://www.notion.so/f62b4be8f24642989e63c25a8fb5f0ba?pvs=21)
    </Tip>

    *Manual payment handling*

    For 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](/checkout/advanced/manual-payment-creation#ios) 📚
  </Accordion>

  **🔨 Deprecation**

  The iOS SDK's move to version 2 has brought a lot of exciting changes and along with these changes, some deprecations.

  <Note>
    📚 Please take a look at our iOS SDK version 2 [migration guide](/changelogs/migration-guides/sdk-v1-to-v2#ios) for a full list of the deprecations made.
  </Note>
</Update>

<Update label="v1.36.1" description="2022-06-15">
  * Add Klarna checkout
</Update>

<Update label="v1.36.0" description="2022-06-02">
  * Add the HUC beta feature
</Update>

<Update label="v1.35.0" description="2022-05-27">
  * Fix vaulting with PayPal
  * Return error when vaulting without a customer id in the client session
</Update>

<Update label="v1.34.0" description="2022-05-23">
  * Added following APMs
    * Coinbase
    * OpenNode
    * 2c2p
    * PayShop
  * Minor codebase improvements
</Update>

<Update label="v1.33.1" description="2022-05-19">
  * Fix Apple Pay merchant name not showing
</Update>

<Update label="v1.33.0 [BETA]" description="2022-05-11">
  * Add the `Processor3DS` functionality
</Update>

<Update label="v1.32.5" description="2022-05-04">
  * Refactor Apple Pay cancellation flow
  * Change primer error message to something generic
</Update>

<Update label="v1.32.4" description="2022-04-22">
  * Translations updates
  * Better accents handling when uppercased text is presented
  * Better handling of subunits for VND (Vietnamese Dong) currency
</Update>

<Update label="v1.32.3" description="2022-04-19">
  * Fixes cardholder name field not deleting characters
  * Changes cardholder name field’s keyboard type
</Update>

<Update label="v1.32.2" description="2022-04-14">
  * Fixes Klarna tokenization when vaulting
  * Fixes disabled user interaction on Dot Pay
</Update>

<Update label="v1.32.1" description="2022-04-12">
  * Fixes Klarna and Twint logos
</Update>

<Update label="v1.32.0" description="2022-04-11">
  * Added following APMs
    * Paytrail
    * Interac
</Update>

<Update label="v1.31.0" description="2022-04-06">
  * Client session validation improvement via dedicated BE API
  * React Native bridge fixes
  * PayPal logo aligned with other platforms
  * Other UI improvements
</Update>

<Update label="v1.30.0" description="2022-03-28">
  * Adds payment method Blik
  * Adds React Native helpers.
</Update>

<Update label="v1.29.0" description="2022-03-11">
  * Added right-to-left support
  * Various bug fixes and enhancements
</Update>

<Update label="v1.28.0 [BETA 9]" description="2022-05-19">
  * Fix Apple Pay merchant name not showing
</Update>

<Update label="v1.28.0-beta.2" description="2022-02-28">
  * Implements the Headless Universal Checkout for cards and APMs (except for Blik, Adyen Dot Pay and Adyen iDeal)
</Update>

<Update label="v1.27.4" description="2022-02-17">
  * Add missing localized strings
  * Fix PayNow image color
</Update>

<Update label="v1.27.3" description="2022-02-15">
  * Fix compiler warnings
</Update>

<Update label="v1.27.1" description="2022-02-07">
  * Remove submodule responsible for localization because it was blocking SPM
  * Make License file a resource
  * Fix SPM import errors
</Update>

<Update label="v1.27.0" description="2022-02-07">
  * Improved UI for loading, success & error screens
  * Fix APM redirect failing on some cases
  * Remove some warnings
</Update>

<Update label="v1.26.0" description="2022-02-03">
  * Added the support for the 12 new languages;
    * Danish
    * Dutch
    * French
    * German
    * Greek
    * Italian
    * Norwegian
    * Polish
    * Portuguese
    * Spanish
    * Swedish
    * Turkish
</Update>

<Update label="v1.25.0" description="2022-02-01">
  * Improvements to payment method redirections
</Update>

<Update label="v1.24.0" description="2022-01-28">
  * Add Xfers
  * Add payer info on PayPal
  * Fix RN bug
</Update>

<Update label="v1.23.0" description="2022-01-18">
  * Tokenization will always return a `SINGLE_USE` token
  * Add locale in analytics
</Update>

<Update label="v1.22.0" description="2022-01-11">
  * Support for capturing postal code in card form and observing using client session actions
  * Additional currencies and associated symbols
  * Improved error handling
  * Improvements to surcharge UI
  * Autofocus on the next field in the card form feature added.
</Update>

<Update label="v1.20.0" description="2021-12-22">
  * Add Atome Payment Method in beta
</Update>

<Update label="v1.19.7" description="2021-12-21">
  * Fix replacing that was replacing country code.
</Update>

<Update label="v1.19.6" description="2021-12-20">
  * Ignore client session warning if client session has already modified the settings
  * Fix bug with enum's default case.
</Update>

<Update label="v1.19.5" description="2021-12-17">
  * Fixes dark mode colors
  * Fixes searchfield return button tap bug
  * Add missing "+" on payment methods surcharge
  * Changes amount in minor units in the example app
  * Sort picker view rows in the example app alphabetically
</Update>

<Update label="v1.19.4" description="2021-12-14">
  * Fixes client token env issue
</Update>

<Update label="v1.19.3" description="2021-12-13">
  * Fixes Apaya redirection for subdomains
</Update>

<Update label="v1.19.2" description="2021-12-13">
  * Add tests
  * Minor fixes
</Update>

<Update label="v1.19.1" description="2021-12-08">
  * Minor fixes
</Update>

<Update label="v1.19.0" description="2021-12-06">
  * Minor fixes
  * Surcharge feature stable
</Update>

<Update label="v1.19.0-beta.3" description="2021-12-03">
  * Adds surcharge functionality
  * Adds client session actions ([documentation](https://www.notion.so/Client-Session-Actions-Guide-0614d5706c87460eb5fd4ae87665a281?pvs=21))
  * Fix laggy cardnumber field
  * Various fixes
</Update>

<Update label="v1.18.0" description="2021-11-30">
  * Adds Bancontact, EPS, Giropay, iDeal and Sofort via Buckaroo
  * Minor fixes on the Example app
  * Minor fix on PayPal presentation
</Update>

<Update label="v1.17.0" description="2021-11-23">
  * **Deprecates** `amount`, `currency`, `countryCode`, `customerId`, `customer`, `billingAddress` & `orderItems` from `PrimerSettings` in favour of setting them in the client-session with POST `/client-session`.

  ✨    [Settings Migration Guide](https://www.notion.so/Settings-Migration-Guide-91bedb704039464f8d74d78dcf1abb2f?pvs=21)

  * **Deprecates** `PrimerTheme` and introduces `PrimerThemeData`.
  * Restructure SDK theming
  * Adds Payconiq, Giropay & Bancontact via PayNL, and iDeal & Bancontact via Mollie
  * Focus on cardnumber field when opening card form
  * Provide error when a payment method hasn't been configured
  * Provides the functionality to change the background view's color
  * Integrate with client session ([documentation](/api-reference/get-started/overview))
</Update>

<Update label="v1.16.1" description="2021-12-13">
  * Fixes Apaya redirection for subdomains
</Update>

<Update label="v1.16.0" description="2021-11-17">
  * Fixes status bar bug on Apaya webview
  * Adds iDeal & DotPay view Adyen
  * Fixes 3DS challenge not being presented when opted-in in scenes
</Update>

<Update label="v1.15.1" description="2021-11-11">
  * Hotfix for broken case, and its presentation.
</Update>

<Update label="v1.15.0" description="2021-11-05">
  * Adds payment methods
    1. iDeal
    2. Hoolah
    3. Ali Pay
    4. Trustly
    5. Giropay
    6. Twint
</Update>

<Update label="v1.14.3" description="2021-11-04">
  * Fixes Apaya crash when presenting and dismissing almost at the same moment.
</Update>

<Update label="v1.14.1" description="2021-11-01">
  * Fixes Apaya bug when dismissed.
</Update>

<Update label="v1.14.0" description="2021-10-25">
  * Add card network and validation icons on the card form
  * Bug fixes
</Update>

<Update label="v1.13.3" description="2021-10-04">
  * Bump
</Update>

<Update label="v1.13.2" description="2021-10-04">
  * Fix Apple Pay bug on React Native
</Update>

<Update label="v1.13.1" description="2021-10-04">
  * Fix resume handler protocol in certain situations.
</Update>

<Update label="v1.13.0" description="2021-10-04">
  * Adds dynamic 3DS logic
  * Applies minor fixes
</Update>

<Update label="v1.12.3" description="2021-10-01">
  * Fixes unknown payment method parse.
</Update>

<Update label="v1.12.2" description="2021-09-29">
  * Fixes SDK presentation when opted-in to `UISceneDelegate`
</Update>

<Update label="v1.12.1" description="2021-09-28">
  * Fixes Swift Package Manager installation
</Update>

<Update label="v1.12.0" description="2021-09-24">
  * **Deprecates** `showCheckout(_ controller:, flow:)` in favour of:
    1. `showUniversalCheckout(on:)`
    2. `showVaultManager(on:)`
    3. `showPaymentMethod(:, withIntent:, on: UIViewController)`
  * Applies minor fixes
  * Fixes failing tests
</Update>

<Update label="v1.11.4" description="2021-09-23">
  **✨ Improvements**

  * Phonenumber for Apaya can be passed in `PrimerSettings.Customer`
  * Minor fixes
</Update>

<Update label="v1.11.3" description="2021-09-22">
  **✨ Improvements**

  * Refactors UI
  * Fixes UI bugs introduced on iOS 15
</Update>

<Update label="v1.10.1" description="2021-09-20">
  **✨ Improvements**

  * Fix Xcode 12.4 building
  * Refactor currency formatting
</Update>

<Update label="v1.10.0" description="2021-09-16">
  **✨ Improvements**

  * Add the Apaya payment method
  * Fix card view validation
  * Apply minor fixes
</Update>

<Update label="v1.8.4" description="2021-07-19">
  **✨ Improvements**

  * Fix configuration parse bug on staging
  * Add missing Klarna `tokenDetails` on tokenization
  * Fix bottom view bouncing when the keyboard was presented at the same time as a push animation
  * Fix bottom view scrolling bug on universal checkout and vault manager
</Update>

<Update label="v1.8.0" description="2021-07-07">
  **Breaking Changes**

  * Delegate function's `clientTokenCallback` completion handler has been modified.

  **✨ Improvements**

  * Delegate functions `tokenAddedToVault`, `onTokenizeSuccess`, `onCheckoutDismissed`, `checkoutFailed` are now optional.
  * Deprecate `authorizePayment` delegate function in favour of `onTokenizeSuccess`.
  * Fix return & cancel urls for PayPal checkout
</Update>

<Update label="v1.7.3" description="2021-06-28">
  **✨ Improvements**

  * Add cancel error ( `domain: "primer", code: 1500`)
  * Add UI tests
  * Embed PromiseKit for future use
</Update>

<Update label="v1.7.0" description="2021-06-17">
  **✨ Improvements**

  * Automatically redirect from Klarna to BankId (if installed)
  * Fix UI bugs on universal checkout & vault
  * Fix Apple Pay cancel from button
</Update>

<Update label="v1.6.1" description="2021-06-14">
  **✨ Improvements**

  * Fix dismissing root view controller on error
  * Fix flows
  * Deprecate `authorizePayment` in favor of `onTokenizeSuccess`
</Update>

<Update label="v1.6.0" description="2021-05-31">
  **Features**

  * Add ApplePay

  **✨ Improvements**

  * Add ApplePay functionality.
  * Add <TxnTag status="PENDING" /> amount functionality on `OrderItem`. Initializer throws errors if not initialzied correctly.
  * Add payment networks
  * Change the order of fields on the card form view.
  * Modify extensions access levels.
  * Use subclasses and extend them, if needed.
  * Remove duplications and unused functionality.
</Update>

<Update label="v1.5.5" description="2021-05-21">
  **✨ Improvements**

  * `countryCode` can be passed from the backend or, optionally, on the SDK. Backend `countryCode` has higher priority.
  * Fix wrong error description.
  * Expose `LocaleData` and let it be set on the `PrimerSettings` object. If no `LocaleData` is provided the SDK will default to the system's `Locale`.
  * Modify classes, protocols and extensions access level.
</Update>

<Update label="v1.5.4" description="2021-05-18">
  **✨ Improvements**

  * Update example
</Update>

<Update label="v1.5.3" description="2021-05-18">
  **✨ Improvements**

  * Fix vault title
  * Fix card form title
  * Update labels
  * General UI fixes
</Update>

<Update label="v1.5.2" description="2021-05-12">
  **✨ Improvements**

  * Validate `token` parameter on webview redirects
  * Catch `cancel` state on webview redirects
  * Refactor webview process, work with a completion handler instead of `viewWillDisappear`
  * Expose errors
  * Move various functionalities from view controllers' view life-cycle to more appropriate places
  * All public facing API call are dispatched on the main queue (for now)
  * Add & fix Klarna validations
  * Fix missing `super()` calls
  * Add scheme variable for logging and default it to false
  * Remove alerts
  * Delegate methods are called on the main queue
  * Remove unused variables. Modify one-liners to be more readable.
</Update>

<Update label="v1.5.1" description="2021-05-07">
  **Breaking Changes**

  * The `completion` of the `clientTokenCallback(_:)` delegate function now expects a string

  **✨ Improvements**

  * `exp` has been added in the client token payload and token validation is performed. If token is expired an error will be returned through the `checkoutFailed(with:)` delegate function
</Update>

<Update label="v1.4.4" description="2021-04-27">
  **✨ Improvements**

  * Provide `isInitialLoadingHidden` param which hides the initial loading view
  * Refactor the success/failure view
  * Expose errors trough the `checkoutFailed(with:)` delegate function
  * Update icons

  **Bug fixes**

  * Remove card scanner button
  * From vault, move back to checkout if no card is present
  * Remove `Add new card` from the vault manager
  * Replace `Klarna customer token` copy with user's Klarna email
</Update>

<Update label="v1.4.3" description="2021-04-22">
  **✨ Improvements**

  * Expose `tokenAddedToVault(_: PaymentMethodToken)` delegate function

  **Bug fixes**

  * Rename `Klarna Customer Token` to user's email (if present)
  * Rename `SAVED CARD` to `SAVED PAYMENT METHOD`
</Update>

<Update label="v1.4.2" description="2021-04-15">
  **✨ Improvements**

  * Refactor Klarna flow

  **Bug fixes**

  * Update success screen
  * Update localizable strings
</Update>

<Update label="v1.4.1" description="2021-04-15">
  **Bug fixes**

  * Fix Swift Package Manager bundled resources
  * Fix Swift Package Manager localization strings
  * Update Swift version to `5.3`
</Update>

<Update label="v1.3.1" description="2021-03-28">
  **✨ Improvements**

  * Introduce the Klarna payment method (in beta)
  * The Vault Manager now supports vaulting PayPal
  * Add Swift Package Manager integration support
  * Various performance and size optimisation

  **Bug fixes**

  * Include toolbar above keyboard on date picker
  * Fix buggy behaviour of RN bridge
  * Improve the validation of the IBAN field in the Direct Debit form

  [Client Session Actions Guide](https://www.notion.so/Client-Session-Actions-Guide-0614d5706c87460eb5fd4ae87665a281?pvs=21)

  <Note>
    ⚠️

    If you are also integrating `Primer3DS`, make sure to install v.1.1.2 to avoid archiving issues with Xcode 14.3.1
  </Note>
</Update>
