**This is an automatic release.**
### Bugfixes
* Prevent Template 4 from wrapping Lifetime (#3789) via Josh Holtz
(@joshdholtz)
* Add enum entry for external purchases store (#3779) via Mark
Villacampa (@MarkVillacampa)
### Dependency Updates
* Bump fastlane from 2.219.0 to 2.220.0 (#3783) via dependabot[bot]
(@dependabot[bot])
### Other Changes
* Add option to intercept touch events in `PaywallViewController`
(#3801) via Toni Rico (@tonidero)
* Create DiagnosticsPostOperation (#3795) via Cesar de la Vega (@vegaro)
* Add diagnosticsQueue to BackendConfiguration (#3794) via Cesar de la
Vega (@vegaro)
* Add origin to HTTPResponseType (#3793) via Cesar de la Vega (@vegaro)
* Add name property to HTTPRequestPath (#3790) via Cesar de la Vega
(@vegaro)
* Add name to VerificationResult (#3792) via Cesar de la Vega (@vegaro)
* Add HTTPRequest.DiagnosticsPath (#3791) via Cesar de la Vega (@vegaro)
* Add async `syncAttributesAndOfferingsIfNeeded()` (#3785) via Josh
Holtz (@joshdholtz)
* iOS append events to JSONL file and get diagnostics events (#3781) via
Cesar de la Vega (@vegaro)
* Fix offerings integration test (#3782) via Josh Holtz (@joshdholtz)
**This is an automatic release.**
### New Features
* [EXTERNAL] Cocoapods support for privacy manifest (#3772) via @sdurban
(#3775) via Andy Boedo (@aboedo)
### Dependency Updates
* Bump fastlane-plugin-revenuecat_internal from `d23de33` to `8d4d9b1`
(#3769) via dependabot[bot] (@dependabot[bot])
### Other Changes
* Add `RC_BILLING` store (#3773) via Toni Rico (@tonidero)
* Add lane to trigger bumps (#3766) via Cesar de la Vega (@vegaro)
**This is an automatic release.**
### RevenueCatUI
* Add `PaywallView.onRequestedDismissal` modifier and option to pass
`dismissRequestedHandler` to `PaywallViewController` (#3738) via Cesar
de la Vega (@vegaro)
### Bugfixes
* [EXTERNAL] Fix Typos in ReceiptStrings.swift (#3756) via @nickkohrn
(#3760) via Cesar de la Vega (@vegaro)
### Other Changes
* Pin xcbeautify version for xcode 14 tests (#3759) via Cesar de la Vega
(@vegaro)
* PaywallsTester: fix compilation (#3753) via Andy Boedo (@aboedo)
**This is an automatic release.**
### Bugfixes
* Fix for passing `TargetingContext` when using
`currentOffering(forPlacement:)` (#3751) via Josh Holtz (@joshdholtz)
### Other Changes
* Remove unneeded tests for StoreKit2 with JWS (#3747) via Josh Holtz
(@joshdholtz)
**This is an automatic release.**
### New Features
* Paywalls: add `updateWithDisplayCloseButton` to
`PaywallViewController` (#3708) via Cesar de la Vega (@vegaro)
* New `syncAttributesAndOfferingsIfNeeded` method (#3709) via Burdock
(@lburdock)
* Add targeting to `PresentedOfferingContext` (#3730) via Josh Holtz
(@joshdholtz)
* Add `currentOffering(forPlacement: String)` to `Offerings` (#3707) via
Guido Torres (@guido732)
* New `Package.presentedOfferingContext` (#3712) via Josh Holtz
(@joshdholtz)
### Bugfixes
* Mark methods with StaticString for appUserID as deprecated (#3739) via
Mark Villacampa (@MarkVillacampa)
### Other Changes
* [EXTERNAL] Spelling typo fix to comment (#3713) via @vdeaugustine
(#3740) via Mark Villacampa (@MarkVillacampa)
---------
Co-authored-by: Josh Holtz <me@joshholtz.com>
**This is an automatic release.**
### RevenueCatUI
* `Paywalls`: prioritize `Locale.current` over `Locale.preferredLocales`
(#3657) via NachoSoto (@NachoSoto)
* `Paywalls`: add logs for localization lookup (#3649) via NachoSoto
(@NachoSoto)
### Dependency Updates
* Bump cocoapods from 1.15.1 to 1.15.2 (#3648) via dependabot[bot]
(@dependabot[bot])
### Other Changes
* `Tests`: fix iOS 15 test crash (#3650) via NachoSoto (@NachoSoto)
* `CircleCI`: remove duplicate `install-dependencies` (#3643) via
NachoSoto (@NachoSoto)
**This is an automatic release.**
### New Features
* `CustomerInfo`: conform to `Identifiable` (#3619) via NachoSoto
(@NachoSoto)
### RevenueCatUI
* `Paywalls`: new `.onPurchaseFailure` and `.onRestoreFailure` modifiers
(#3622) via NachoSoto (@NachoSoto)
* `Paywalls`: `.onRestoreCompleted` is invoked after the restore dialog
is dismissed (#3620) via NachoSoto (@NachoSoto)
* `Paywalls`: disable interactive `sheet` dismissal during purchases
(#3613) via NachoSoto (@NachoSoto)
### Other Changes
* `CircleCI`: push pods using Xcode 15 (#3614) via NachoSoto
(@NachoSoto)
**This is an automatic release.**
### RevenueCatUI
* `Paywalls`: fix template 5 scrolling on iOS 15 (#3608) via NachoSoto
(@NachoSoto)
* `Paywalls`: improve `PaywallData.config(for:)` disambiguation (#3605)
via NachoSoto (@NachoSoto)
### Dependency Updates
* Bump cocoapods from 1.14.3 to 1.15.0 (#3607) via dependabot[bot]
(@dependabot[bot])
* Bump fastlane-plugin-revenuecat_internal from `e6ba247` to `9c82c7a`
(#3606) via dependabot[bot] (@dependabot[bot])
### Other Changes
* `Integration Tests`: disable failure expectation on `iOS 17.4` (#3604)
via NachoSoto (@NachoSoto)
### Other Changes
* `PaywallViewController`: methods for reconfiguring paywall with new
offering (#3592) via NachoSoto (@NachoSoto)
* `Integration Tests`: verify `PaywallData` images can be loaded (#3596)
via NachoSoto (@NachoSoto)
* Simplify `CocoapodsInstallation` `Podfile` (#3593) via NachoSoto
(@NachoSoto)
**This is an automatic release.**
### RevenueCatUI
* `PaywallViewController`: new initializer with `Offering` identifier
(#3587) via NachoSoto (@NachoSoto)
* `Paywalls`: improve template 5 layout for long product names (#3589)
via NachoSoto (@NachoSoto)
### Other Changes
* `Paywalls`: extracted `PaywallViewConfiguration` (#3586) via NachoSoto
(@NachoSoto)
* `CircleCI`: avoid installing `Xcodes` when not needed (#3585) via
NachoSoto (@NachoSoto)
* `CircleCI`: change all jobs to M1 (#3140) via NachoSoto (@NachoSoto)
---------
Co-authored-by: NachoSoto <ignaciosoto90@gmail.com>
Co-authored-by: NachoSoto <NachoSoto@users.noreply.github.com>
**This is an automatic release.**
### New Features
* `StoreProduct`: add localized price per period strings (#3546) via
Andy Boedo (@aboedo)
### RevenueCatUI
* `Paywalls`: new `.onPurchaseCancelled` and
`paywallViewControllerDidCancelPurchase:` (#3578) via NachoSoto
(@NachoSoto)
* `Paywalls`: improve error display (#3577) via NachoSoto (@NachoSoto)
### Dependency Updates
* Bump fastlane-plugin-revenuecat_internal from `0ddee10` to `e6ba247`
(#3575) via dependabot[bot] (@dependabot[bot])
### Other Changes
* `PurchaseTester`: improved `ReceiptInspector` so it accepts receipts
with escape sequences (#3554) via Andy Boedo (@aboedo)
**This is an automatic release.**
### RevenueCatUI
* `Paywalls`: remove unscrollable spacing in Template 5 (#3562) via
NachoSoto (@NachoSoto)
* `Paywalls`: improve template 5 checkmark icon (#3559) via NachoSoto
(@NachoSoto)
### Bugfixes
* Improve sandbox detector for macOS apps (#3549) via Mark Villacampa
(@MarkVillacampa)
### Other Changes
* `Paywalls`: new
`PaywallViewControllerDelegate.paywallViewController(_:didChangeSizeTo:)`
(#3563) via Cesar de la Vega (@vegaro)
* `Tests`: running tests on `macOS` (#3533) via NachoSoto (@NachoSoto)
* `Integration Tests`: split into separate jobs (#3560) via NachoSoto
(@NachoSoto)
**This is an automatic release.**
### RevenueCatUI
* Paywalls: improve footer view UIKit support for hybrid SDKs (#3547)
via Andy Boedo (@aboedo)
### Dependency Updates
* Bump fastlane from 2.218.0 to 2.219.0 (#3553) via dependabot[bot]
(@dependabot[bot])
* Bump fastlane from 2.217.0 to 2.218.0 (#3550) via dependabot[bot]
(@dependabot[bot])
### Other Changes
* Tests: improve test flakiness (#3552) via Andy Boedo (@aboedo)
**This is an automatic release.**
### RevenueCatUI
* `Paywalls`: add `PaywallFooterViewController` (#3486) via Toni Rico
(@tonidero)
* `Paywalls`: improve landscape support of all templates (#3471) via
NachoSoto (@NachoSoto)
* `Paywalls`: ensure footer links open in full-screen sheets (#3524) via
NachoSoto (@NachoSoto)
* `Paywalls`: improve `FooterView` text alignment (#3525) via NachoSoto
(@NachoSoto)
* Paywalls: Add dismissal method in `PaywallViewControllerDelegate`
(#3493) via Toni Rico (@tonidero)
**This is an automatic release.**
### RevenueCatUI
* `Paywalls`: improve image caching (#3498) via NachoSoto (@NachoSoto)
* `Paywalls`: change style of CTA button to be consistent with other
platforms (#3507) via NachoSoto (@NachoSoto)
* `Paywalls`: open footer links on Safari on Catalyst (#3508) via
NachoSoto (@NachoSoto)
* `Paywalls`: fix compilation on Xcode < 14.3 (#3513) via NachoSoto
(@NachoSoto)
* Fix typo in zh-Hans localization of RevenueCatUI (#3512) via Francis
Feng (@francisfeng)
* `Paywalls`: fix PaywallViewControllerDelegate access from Objective-C
(#3510) via noncenz (@noncenz)
* `Paywalls`: open Terms and Privacy Policy links in-app (#3475) via
Andy Boedo (@aboedo)
* `Paywalls`: fix empty description when using `custom` package type and
`{{ sub_period }}` (#3495) via Andy Boedo (@aboedo)
* `Paywalls`: use `HEIC` images (#3496) via NachoSoto (@NachoSoto)
* Paywalls: disable the close button when an action is in progress
(#3474) via Andy Boedo (@aboedo)
* `Paywalls`: adjusted German translations (#3476) via Tensei (@tensei)
* Paywalls: Improve Chinese localization (#3489) via Andy Boedo
(@aboedo)
### Other Changes
* `CircleCI`: add git credentials to snapshot generation (#3506) via
NachoSoto (@NachoSoto)
* `StoreProduct`: improve `priceFormatter` documentation (#3500) via
NachoSoto (@NachoSoto)
* `Paywalls`: fix tests (#3499) via NachoSoto (@NachoSoto)
* `Optimization`: changed `first` to `first(where:)` (#3467) via
NachoSoto (@NachoSoto)