The markdown parsing is broken/disabled for release notes. Sorry about that, I'm chasing the source of a crash that's been bringing this website down for the last couple of days.
* Require Xcode 14.1 (per [App Store requirements](https://developer.apple.com/news/?id=jd9wcyov#:~:text=Starting%20April%2025%2C%202023%2C%20iOS,on%20the%20Mac%20App%20Store))
* Move from Braintree to PayPal analytics service
* Make `BTConfiguration` extensions internal
* Breaking Changes
* Require Xcode 14.3+ and Swift 5.8+
* Rename `BraintreePaymentFlow` module to `BraintreeLocalPayment`
* BraintreeThreeDSecure
* Add `BTThreeDSecureClient`
* Remove `BTPaymentFlowClient+ThreeDSecure` extension
* Move `BTPaymentFlowClient+ThreeDSecure` and `BTThreeDSecureRequest` methods to `BTThreeDSecureClient`
* Remove `BTThreeDSecureError.cannotCastRequest` case
* Remove dependency on `BraintreePaymentFlow` module
* BraintreeLocalPayment (formerly named BraintreePaymentFlow)
* Rename `BTPaymentFlowClient` to `BTLocalPaymentClient`
* Rename `BTPaymentFlowError` to `BTLocalPaymentError`
* Rename `BTLocalPaymentError.errorDomain` from `BTPaymentFlowErrorDomain` to `BTLocalPaymentErrorDomain`
* Move `BTLocalPaymentRequest` methods to `BTLocalPaymentClient`
* Add `BTLocalPaymentError` case
* `.webSessionError` = 10
* BraintreePayPal
* Add `BTPayPalError` case
* Add error `.webSessionError` = 8
* BraintreeCard
* Add `BTCardError` case
* Add error `.fetchConfigurationFailed` = 4
* BraintreeSEPADirectDebit
* Add `BTSEPADirectDebitError` case
* Add error `.failedToCreateNonce` = 7
* Remove `BTSEPADirectDebitError.presentationContextInvalid`
* Remove `iosBaseSDK`, `iosDeploymentTarget`, `iosIdentifierForVendor`, `deviceAppGeneratedPersistentUuid`, and `deviceScreenOrientation` from `BTAnalyticsMetadata`
* Fixes error `@objcMembers attribute used without importing module 'Foundation'` in Xcode 14.3+
* Add async/await support back to all public Swift methods
* Convert `BraintreeVenmo` module to Swift
* Convert `BraintreeCard` module to Swift
* Convert `BraintreeThreeDSecure` module to Swift
* Convert `BraintreePaymentFlow` module to Swift
* Breaking Changes
* BraintreePaymentFlow
* Replaced `SFSafariViewController` with `ASWebAuthenticationSession`
* Removed `BTViewControllerPresentingDelegate` protocol and correlating methods
* Rename `BTLocalPaymentRequest.shippingAddressRequired` to `isShippingAddressRequired`
* Remove `BTPaymentFlowErrorDomain` global constant & `BTPaymentFlowErrorType`
* Add `BTPaymentFlowError` cases
* `.noAccountData` = 4
* `.failedToCreateNonce` = 6
* `.fetchConfigurationFailed` = 7
* `.missingRedirectURL` = 8
* `.missingReturnURL` = 9
* Update `BTPaymentFlowError` values
* `.integration` = 3
* BraintreeApplePay
* Rename `BTApplePayClient.tokenizeApplePay(_:completion:)` to `BTApplePayClient.tokenize(_:completion:)`
* Rename `BTApplePayClient.paymentRequest()` to `BTApplePayClient.makePaymentRequest()`
* Remove `BTApplePayErrorDomain` global constant
* Remove `BTApplePayErrorType`
* Make `BTApplePayCardNonce` initializer internal
* BraintreeDataCollector
* Update PPRiskMagnes to static XCFramework
* BraintreeVenmo
* Rename `BTVenmoAccountNonce.externalId` to `BTVenmoAccountNonce.externalID`
* Remove `BTVenmoErrorDomain` global constant
* Renamed `BTVenmoClient.tokenizeVenmoAccount(with:completion:)` to `BTVenmoClient.tokenize(_:completion:)`
* Renamed `BTVenmoClient.isiOSAppAvailableForAppSwitch()` to `BTVenmoClient.isVenmoAppInstalled()`
* Add new `BTVenmoError`
* `.invalidBodyReturned`
* `.invalidRedirectURL`
* `.fetchConfigurationFailed`
* Removed `BTVenmoError.integration` and `BTVenmoError.requestURL`
* BraintreeAmericanExpress
* Rename `BTAmericanExpressClient.getRewardsBalance(forNonce:currencyIsoCode:completion:)` to `BTAmericanExpressClient.getRewardsBalance(forNonce:currencyISOCode:completion:)`
* BraintreeSEPADirectDebit
* Rename `BTSEPADirectDebitClient.tokenize(request:completion:)` to `BTSEPADirectDebitClient.tokenize(_:completion:)`
* BraintreeCard
* Make `BTAuthenticationInsight` initializer internal
* Remove `BTCardClientErrorDomain` global constant
* Rename `BTCardClient.tokenizeCard(_:completion)` to `BTCardClient.tokenize(_:completion:)`
* Rename `BTCardClientErrorType` to `BTCardError`
* Remove unused `BTCardClientErrorType.paymentOptionNotEnabled`
* Update enum values:
* `.unknown` = 0
* `.integration` = 1
* `.customerInputInvalid` = 2
* `.cardAlreadyExists` = 3
* BraintreeThreeDSecure
* 3D Secure version 1 is no longer supported
* Removed the following: `BTThreeDSecureV1UICustomization` class, `BTThreeDSecureRequest.v1UICustomization` property, and `BTThreeDSecureVersion` enum
* All 3D Secure requests will use version 2
* Rename `BTThreeDSecureV2ButtonType` enum cases to: `.verify`, `.continue`, `.next`, `.cancel`, and `.resend`
* Remove `BTThreeDSecureFlowErrorDomain` global constant
* Add new `BTThreeDSecureError`
* Add error `.noBodyReturned` = 4
* Add error `.canceled` = 5
* Add error `.invalidAPIClient` = 6
* Add error `.cannotCastRequest`= 7
* Add error `.jsonSerializationFailure` = 8
* Add missed deprecation warnings to `BTCardRequest` Union Pay properties
* Update Cardinal SDK to version 2.2.5-6
* BraintreePayPalNativeCheckout (BETA)
* Expose `payerID` property on `BTPayPalNativeCheckoutAccountNonce` publicly
* Expose all properties on `BTPayPalNativeCheckoutAccountNonce` to Objective-C
* BraintreePayPalNativeCheckout (BETA)
* Fix bug where some request dictionaries were being constructed incorrectly
* Fix bug where passing `BTPayPalNativeVaultRequest.shippingAddressOverride` as `nil` was incorrectly throwing an error
* Convert `BraintreePayPal` module to Swift
* Breaking Changes
* BraintreePayPal
* Rename `BTPayPalRequest.riskCorrelationId` to `BTPayPalRequest.riskCorrelationID`
* Removed `BTPayPalRequest.activeWindow` property
* The window will be set to the first window or a new `ASPresentationAnchor` if the first window is `nil`
* Update `BTPayPalRequestLandingPageType` enum default case to `.none`
* Update enum values
* `.none` = 0
* `.login` = 1
* `.billing` = 2
* `BTPayPalRequestUserAction`
* Update enum cases to `.none` and `.payNow`
* Update enum values
* `.none` = 0
* `.payNow` = 1
* Update `BTPayPalRequestIntent` enum values
* `.authorize` = 0
* `.sale` = 1
* `.order` = 2
* Update `BTPayPalLineItemKind` enum values
* `.debit` = 0
* `.credit` = 1
* Create `BTPayPalLocaleCode` enum
* `BTPayPalRequest.localeCode` now uses the `BTPayPalLocaleCode` enum instead of a `String`
* Renamed and replaced `BTPayPalClient.tokenizePayPalAccount` with two methods called `tokenize()` taking in requests of either `BTPayPalCheckoutRequest` or `BTPayPalVaultRequest`
* Removed `BTPayPalErrorType`
* Replaced `BTPayPalErrorDomain` global constant with `BTPayPalError.errorDomain`
* Added `BTPayPalError`
* `.disabled`
* `.canceled`
* `.fetchConfigurationFailed`
* `.httpPostRequestError`
* `.invalidURL`
* `.asWebAuthenticationSessionURLInvalid`
* `.invalidURLAction`
* `.failedToCreateNonce`
* Make `BTPayPalNonce` initializer internal
* BraintreePayPalNativeCheckout (BETA)
* Renamed and replaced `BTPayPalNativeCheckoutClient.tokenizePayPalAccount` with two methods called `tokenize()` taking in requests of either `BTPayPalNativeCheckoutRequest` or `BTPayPalNativeVaultRequest`
* `BTPayPalNativeCheckoutRequest` now takes in an `intent` of type `BTPayPalRequestIntent` instead of `BTPayPalNativeRequestIntent`
* `BTPayPalNativeCheckoutRequest.localeCode` now uses the `BTPayPalLocaleCode` enum instead of a `String` value
* BraintreeUnionPay
* Remove `BraintreeUnionPay` module
* UnionPay cards can now be processed as regular cards (through the BraintreeCard module) due to their partnership with Discover
* BraintreeCore
* Remove `BTConfiguration+Extensions.isUnionPayEnabled` property
* Remove `BTPreferredPaymentMethods` and `BTPreferredPaymentMethodResult`
* BraintreeSEPADirectDebit
* The `tokenize` method no longer takes in a `context` parameter
* Merchants no longer need to conform to the `ASWebAuthenticationPresentationContextProviding` protocol
* BraintreeThreeDSecure
* Add `requestedExemptionType` to `BTThreeDSecureRequest`
* BraintreePayPalNativeCheckout (BETA)
* Update NativeCheckout version from 0.108.0 to 0.110.0
* Fix issue with multiple clientIDs causing incorrect web fallback
* Convert `BraintreeCore` module to Swift
* Convert `BraintreeAmericanExpress` module to Swift
* Convert `BraintreeDataCollector` module to Swift
* Removed `PayPalDataCollector` module in favor of single `BraintreeDataCollector`
* Kount is no longer supported through the SDK
* Breaking Changes
* Bump minimum supported deployment target to iOS 14+
* Require Carthage 0.38.0+ and xcframeworks via `carthage update --use-xcframeworks`
* Require Xcode 14
* Bump Swift Tools Version to 5.7 for CocoaPods & SPM
* BraintreeCore
* Renamed `BTAppContextSwitchDriver` protocol to `BTAppContextSwitchClient
* `BTViewControllerPresentingDelegate` protocol now takes in the `client` parameter instead of `driver`
* Renamed `BTClientMetadataSourceType` to `BTClientMetadataSource`
* Renamed `BTClientMetadataIntegrationType` to `BTClientMetadataIntegration`
* Removed static wrapper methods from `BTAppContextSwitcher`
* Replaced `BTLogger` with `BTLogLevel` and `BTLogLevelDescription`
* Remove `BTJSONErrorDomain` global constant
* Remove `BTJSONErrorCode`
* Remove `BTAPIClientErrorDomain` global constant
* Add `BTClientTokenError`s
* `.invalidAuthorizationFingerprint`
* `.invalidConfigURL`
* `.invalidFormat`
* `.unsupportedVersion`
* `.failedDecoding`
* Add `BTHTTPErrorCode`s
* `.httpResponseInvalid`
* `.urlStringInvalid`
* `.clientApiUrlInvalid`
* `.invalidAuthorizationFingerprint`
* Renamed `BTCardNetworkUKMaestro` to `BTCardNetworkUkMaestro` in `BTCardNetwork` enum
* BraintreeVenmo
* Renamed `BTVenmoDriver` to `BTVenmoClient`
* Renamed `BTVenmoDriverErrorDomain` to `BTVenmoErrorDomain`
* Renamed `BTVenmoDriverErrorType` to `BTVenmoErrorType`
* All errors are now prefixed with `BTVenmoError` instead of `BTVenmoDriverError`
* Remove `.unspecified` case from `BTVenmoPaymentMethodUsage` enum
* Require `paymentMethodUsage` param in `BTVenmoRequest` initializer
* Move category extension of `BTConfiguration` into `BraintreeCore`
* BraintreePayPal
* Renamed `BTPayPalDriver` to `BTPayPalClient`
* Renamed `BTPayPalDriverErrorDomain` to `BTPayPalErrorDomain`
* Renamed `BTPayPalDriverErrorType` to `BTPayPalErrorType`
* All errors are now prefixed with `BTPayPalError` instead of `BTPayPalDriverError`
* Remove `BTPayPalDriver.requestOneTimePayment` in favor of `BTPayPalClient.tokenizePayPalAccount`
* Remove `BTPayPalDriver.requestBillingAgreement` in favor of `BTPayPalClient.tokenizePayPalAccount`
* Move category extension of `BTConfiguration` into `BraintreeCore`
* BraintreeAmericanExpress
* Remove `BTAmericanExpressErrorDomain` global constant
* Remove `BTAmericanExpressErrorType`
* Make `BTAmericanExpressRewardsBalance` initializer private
* BraintreePaymentFlow
* Renamed `BTPaymentFlowDriver` to `BTPaymentFlowClient`
* Renamed `BTPaymentFlowDriverErrorDomain` to `BTPaymentFlowErrorDomain`
* Renamed `BTPaymentFlowDriverErrorType` to `BTPaymentFlowErrorType`
* All errors are now prefixed with `BTPaymentFlowError` instead of `BTPaymentFlowDriverError`
* Renamed `BTPaymentFlowDriverDelegate` protocol to `BTPaymentFlowClientDelegate`
* `handleRequest` in delegate protocol now takes in `paymentClientDelegate` parameter instead of `paymentDriverDelegate`
* Move category extension of `BTConfiguration` into `BraintreeCore`
* PayPalDataCollector
* Removed `PayPalDataCollector` module in favor of single `BraintreeDataCollector`
* BraintreeDataCollector
* Kount is no longer supported through the SDK
* Combine `PayPalDataCollector` and `BraintreeDataCollector` into one module to create single entrypoint for data collection
* Merchants should use the new `collectDeviceData` function for data collection which will now return a completion with either device data or an error
* BraintreeApplePay
* Move category extension of `BTConfiguration` into `BraintreeCore`
* BraintreeUnionPay
* Move category extension of `BTConfiguration` into `BraintreeCore`
* BraintreeThreeDSecure
* Move category extension of `BTConfiguration` into `BraintreeCore`
* Deprecate Kount Custom integrations
* Deprecate the `BraintreeUnionPay` module and containing classes
* UnionPay cards can now be processed as regular cards (through the `BraintreeCard` module) due to their partnership with Discover
* BraintreePayPalNativeCheckout (BETA)
* Fix CocoaPods bug emitting "Cannot find interface declaration" error ([CocoaPods issue #11672](https://github.com/CocoaPods/CocoaPods/issues/11672))
* Rename `riskCorrelationId` to `riskCorrelationID`
* Rename `nativeRequest` to `request` internally in `tokenizePayPalAccount`
* `tokenizePayPalAccount` now takes in a `request` of type `BTPayPalNativeRequest` instead of a `nativeRequest` of type `BTPayPalRequest`