Bugfixes
ErrorResponse
: don't add attribute errors to message if empty (#1844) via NachoSoto (@NachoSoto)- Purchase cancellations: unify behavior between SK1 and SK2 (#1841) via NachoSoto (@NachoSoto)
- StoreKit 2:
PurchasesOrchestrator
: don't log "purchased product" if it was cancelled (#1840) via NachoSoto (@NachoSoto) Backend
: fixed potential race conditions introduced byOperationDispatcher.dispatchOnWorkerThread(withRandomDelay:)
(#1827) via NachoSoto (@NachoSoto)DeviceCache
:Sendable
conformance and fixed thread-safety (#1823) via NachoSoto (@NachoSoto)- Directly send delegate customer info when delegate is set (always sends cached CustomerInfo value) (#1828) via Josh Holtz (@joshdholtz)
SystemInfo.finishTransactions
: made thread-safe (#1807) via NachoSoto (@NachoSoto)Purchases.shared
andPurchases.isConfigured
are now thread-safe (#1813) via NachoSoto (@NachoSoto)PriceFormatterProvider: Sendable
conformance and fixed thread-safety (#1818) via NachoSoto (@NachoSoto)StoreKitConfigTestCase.changeStorefront
: re-enabled on iOS 16 (#1811) via NachoSoto (@NachoSoto)
Other Changes
DeviceCache
: no longer set cache timestamp before beginning request (#1839) via NachoSoto (@NachoSoto)MagicWeatherSwiftUI
: updated to useasync
APIs (#1843) via NachoSoto (@NachoSoto)- Release train (#1842) via Cesar de la Vega (@vegaro)
- Adds hotfixes section to RELEASING doc (#1837) via Cesar de la Vega (@vegaro)
- Update fastlane plugin (#1838) via Toni Rico (@tonidero)
- Update migration doc from didReceiveUpdatedCustomerInfo to receivedUpdatedCustomerInfo (#1836) via Josh Holtz (@joshdholtz)
PurchasesDelegate
: added test for latest cached customer info always being sent (#1830) via NachoSoto (@NachoSoto)CallbackCache: Sendable
conformance (#1835) via NachoSoto (@NachoSoto)CallbackCache
: simplified implementation usingAtomic
(#1834) via NachoSoto (@NachoSoto)PurchasesLogInTests
: added test to verifylogIn
updates offerings cache (#1833) via NachoSoto (@NachoSoto)- Created
PurchasesLoginTests
(#1832) via NachoSoto (@NachoSoto) SwiftLint
: cleaned up output (#1821) via NachoSoto (@NachoSoto)- Link to sdk reference (#1831) via aboedo (@aboedo)
Atomic: ExpressibleByBooleanLiteral
(#1822) via NachoSoto (@NachoSoto)SwiftLint
: fixed build warning (#1820) via NachoSoto (@NachoSoto)- Adds an approval job that will tag the release (#1815) via Cesar de la Vega (@vegaro)
Atomic: ExpressibleByNilLiteral
(#1804) via NachoSoto (@NachoSoto)PurchasesAttributionDataTests
: fixed potential race condition in flaky test (#1805) via NachoSoto (@NachoSoto)- Fixed warnings for unnecessary
try
(#1816) via NachoSoto (@NachoSoto) - Moved
AttributionFetcherError
insideAttributionFetcher
(#1808) via NachoSoto (@NachoSoto) - Update documentation for presentCodeRedemptionSheet (#1817) via Joshua Liebowitz (@taquitos)
Dangerfile
: added "next_release" as supported label (#1810) via NachoSoto (@NachoSoto)- PurchaseTester- Update Podfile.lock (#1814) via Joshua Liebowitz (@taquitos)
- Update to latest fastlane plugin (#1802) via Toni Rico (@tonidero)
- Clean up: moved
BackendIntegrationTests.xctestplan
toTestPlans
folder (#1812) via NachoSoto (@NachoSoto) SK2StoreProduct
: conditionally removed@available
workaround (#1794) via NachoSoto (@NachoSoto)SwiftLint
: fixed deprecation warning (#1809) via NachoSoto (@NachoSoto)- Update gems (#1791) via Joshua Liebowitz (@taquitos)
- Replace usages of replace_in with replace_text_in_files action (#1803) via Toni Rico (@tonidero)
To view new release, visit https://github.com/RevenueCat/purchases-ios/releases/tag/4.10.2