Releases: RevenueCat/purchases-ios
5.33.0
RevenueCat SDK
🐞 Bugfixes
- Fix rendering of buttons in Mac Catalyst mode when optimized for Mac. (#5372) via Chris Lindsay (@clindsay3)
- Update default height of paywalls when using .presentIfNeeded on Mac Catalyst to something that is more reasonable. (#5378) via Chris Lindsay (@clindsay3)
Customer Center
✨ New Features
- Add custom change plans support for customer center (#5379) via Facundo Menzella (@facumenzella)
🔄 Other Changes
- Fix VirtualCurrencyBalancesScreen Preview on Catalyst (Optimized For Mac) (#5387) via Will Taylor (@fire-at-will)
- Add
@_spi
to initializers of virtual currencies APIs (#5384) via Antonio Pallares (@ajpallares) - Use SwiftUI instead of UIKit to present an alert in Paywall Tester app (#5381) via Chris Lindsay (@clindsay3)
- [AUTOMATIC][Paywalls V2] Updates commit hash of paywall-preview-resources (#5380) via RevenueCat Git Bot (@RCGitBot)
- Add build configurations for tuist workspace (#5364) via Facundo Menzella (@facumenzella)
- Adding deep link for testing in Paywalls Tester (#5238) via Josh Holtz (@joshdholtz)
- Wait a max of 20 minutes for TestFlight processing (#5153) via Josh Holtz (@joshdholtz)
- [AUTOMATIC][Paywalls V2] Updates commit hash of paywall-preview-resources (#5373) via RevenueCat Git Bot (@RCGitBot)
- Generate Mac Catalyst screenshots of Paywall components to be sent to EmergeTools (#5303) via Chris Lindsay (@clindsay3)
- Use a more accurate method for generating a screenshot of a UIView (#5352) via Chris Lindsay (@clindsay3)
- Upload screenshots to Emerge in addition to pushing them to the paywall validation repo. (#5351) via Chris Lindsay (@clindsay3)
- Add a few additional VC integration tests (#5367) via Will Taylor (@fire-at-will)
- [CI] Use m1 instead of m2 executor (#5369) via Mark Villacampa (@MarkVillacampa)
5.32.0
RevenueCat SDK
🐞 Bugfixes
- Fixes API tests after changes to public API (#5365) via Pol Piella Abadia (@polpielladev)
Virtual Currencies
✨ New Features
- Virtual Currency Support (#5108) via Will Taylor (@fire-at-will)
🔄 Other Changes
- [DX-457] Re-apply Health SDK logging on app launch (#5360) via Pol Piella Abadia (@polpielladev)
- [AUTOMATIC][Paywalls V2] Updates commit hash of paywall-preview-resources (#5361) via RevenueCat Git Bot (@RCGitBot)
- Add basics for a working tuist workspace (#5248) via Facundo Menzella (@facumenzella)
- [AUTOMATIC][Paywalls V2] Updates commit hash of paywall-preview-resources (#5357) via RevenueCat Git Bot (@RCGitBot)
- Fix one flaky unit test (#5356) via Antonio Pallares (@ajpallares)
5.31.0
RevenueCat SDK
Customer Center
✨ New Features
- Add smoother loading animation to SubscriptionDetailView (#5329) via Facundo Menzella (@facumenzella)
🐞 Bugfixes
- Fix google products display for customer center (#5349) via Facundo Menzella (@facumenzella)
RevenueCatUI SDK
Customer Center
✨ New Features
- Preferred UI locale for UI components (#5292) via Antonio Pallares (@ajpallares)
- Remove trailing text for PurchaseCardView, and simplify billing information. (#5300) via Facundo Menzella (@facumenzella)
- Add account details to single purchase view (#5327) via Facundo Menzella (@facumenzella)
🐞 Bugfixes
🔄 Other Changes
- Temporary revert of automatic health reporting in the SDK (#5353) via Pol Piella Abadia (@polpielladev)
- fix
Purchases
temporary leak when running SDK health check (#5350) via Antonio Pallares (@ajpallares) - Consider Offerings cache stale when preferred locales change (#5312) via Antonio Pallares (@ajpallares)
- [DX-457] Log the SDK configuration report on every
#DEBUG
run (#5317) via Pol Piella Abadia (@polpielladev) - Update workflows/issue-notifications.yml@v2 (#5346) via Josh Holtz (@joshdholtz)
- Fix some failing tests (#5344) via Antonio Pallares (@ajpallares)
- Preferred locale override (#5288) via Antonio Pallares (@ajpallares)
- [CI] use M4 Pro Medium (#5321) via Mark Villacampa (@MarkVillacampa)
- Add shared ack workflow (#5340) via Josh Holtz (@joshdholtz)
- Use NewErrorUtils instead of RevenueCat.ErrorUtils (#5293) via Facundo Menzella (@facumenzella)
- Bump ack action to v15 (#5339) via Josh Holtz (@joshdholtz)
- Bump ack action to v11 (#5336) via Josh Holtz (@joshdholtz)
- New issue template form and issue monitoring job (#5333) via Josh Holtz (@joshdholtz)
- Add Intro Eligibility Functions to CEC Mode (#5322) via Will Taylor (@fire-at-will)
5.30.0
RevenueCat SDK
🐞 Bugfixes
- Improve paywall view load time if using offering identifier by using paywall offerings cache (#5319) via Josh Holtz (@joshdholtz)
Paywallv2
🐞 Bugfixes
- Improve resolution of locale in paywalls components localizations (#5316) via Antonio Pallares (@ajpallares)
- Fix paywall locale receiving UN M.49 standard localization (#5309) via Antonio Pallares (@ajpallares)
RevenueCatUI SDK
Customer Center
✨ New Features
- Dont be explicit on store for paddle, web, rcBilling, external (#5325) via Facundo Menzella (@facumenzella)
🔄 Other Changes
- Move the Paywall-Screenshots test plan into the RevenueCatUITestsDev scheme, and add a host application to run them. (#5320) via Chris Lindsay (@chrisvasselli)
- [AUTOMATIC][Paywalls V2] Updates commit hash of paywall-preview-resources (#5318) via RevenueCat Git Bot (@RCGitBot)
- Update validation of
testCanGetOfferings
StoreKit integration test (#5313) via Antonio Pallares (@ajpallares)
5.30.0-vc-beta.4
RevenueCat SDK
Virtual Currencies
Warning: the virtual currency features are currently in beta and may change without notice.
Dedicated Function for Fetching Virtual Currencies
Virtual Currencies have been moved out of CustomerInfo
and can now be fetched using the new Purchases.shared.virtualCurrencies()
function, like so:
// With Async/Await
let virtualCurrencies = try? await Purchases.shared.virtualCurrencies()
// With Completion Handlers
Purchases.shared.virtualCurrencies { virtualCurrencies, error in
}
Refreshing the Virtual Currencies Cache
The virtualCurrencies()
functions use caching behind the scenes. If you know a virtual currency's balance has changed (e.g., due to a backend update) you can refresh the cache like so:
Purchases.shared.invalidateVirtualCurrenciesCache()
This ensures that the next virtualCurrencies()
call will update the latest virtual currency values from the RevenueCat backend.
Working with Virtual Currencies
After fetching the VirtualCurrencies
object from the above functions, you can work with individual VirtualCurrency
objects like so:
// Iterate through all virtual currencies
for (virtualCurrencyCode, virtualCurrency) in virtualCurrencies.all {
print("\(virtualCurrencyCode): \(virtualCurrency.balance)")
}
// Access a specific virtual currency
let virtualCurrency = virtualCurrencies["{YOUR_VIRTUAL_CURRENCY_CODE_HERE}"]
Renaming & New Fields
The VirtualCurrencyInfo
type has been renamed to VirtualCurrency
, with the following new fields added:
name
: The name of the virtual currency as defined in the RevenueCat dashboardcode
: The virtual currency's code as defined in the RevenueCat dashboardserverDescription
: The virtual currency's description as defined in the RevenueCat dashboard
Commits
- [Virtual Currencies] Break VC Balances out of CustomerInfo (#5151) via Will Taylor (@fire-at-will)
4.43.7
🔄 Other Changes
- Attempts to satisfy the precommit hook via JayShortway (@JayShortway)
- [v4] Add Intro Eligibility Functions to CEC Mode (#5328) via JayShortway (@JayShortway)
5.29.0
RevenueCat SDK
Customer Center
✨ New Features
- Use
card_store_promotional
for RC Promos in card & history (#5275) via Facundo Menzella (@facumenzella) - Refactor PurchaseHistory to use PurchaseInformation (#5260) via Facundo Menzella (@facumenzella)
🐞 Bugfixes
- Add tests for PurchaseInformationView.Badge + rc promo (#5273) via Facundo Menzella (@facumenzella)
🔄 Other Changes
- [Paywalls] Update ImageComponent max width after initial layout if it changes. (#5291) via Mark Villacampa (@MarkVillacampa)
- Fix index and mgiration guides docs not being updated (#5298) via Mark Villacampa (@MarkVillacampa)
- Add .yield to
PaywallViewEventsFullscreenLightModeTests
(#5294) via Facundo Menzella (@facumenzella) - Add missing
@_spi
to import in backend tests (#5297) via Antonio Pallares (@ajpallares) - Use minimal permissions for installation tests (#5274) via JayShortway (@JayShortway)
- [AUTOMATIC][Paywalls V2] Updates commit hash of paywall-preview-resources (#5295) via RevenueCat Git Bot (@RCGitBot)
- [AUTOMATIC][Paywalls V2] Updates commit hash of paywall-preview-resources (#5289) via RevenueCat Git Bot (@RCGitBot)
- Delete Examples folder from carthage checkout (#5287) via Facundo Menzella (@facumenzella)
- Remove CustomerCenterConfigDataAPI from API Tests (#5286) via Facundo Menzella (@facumenzella)
- Delete duplicate OfferingsList.swift from PaywallTester (#5249) via Facundo Menzella (@facumenzella)
- Add abbrev to Gemfile (#5207) via Facundo Menzella (@facumenzella)
- Test removing example apps before Carthage installation test (#5268) via Facundo Menzella (@facumenzella)
- Add _spi(Internal) to Customer Center (#5270) via Facundo Menzella (@facumenzella)
5.29.0-vc-beta.3
RevenueCat SDK
- Updated underlying SDK to use version 5.29.0. This includes a fix that allows the SDK to be compiled with Xcode 26.
5.28.1
RevenueCat SDK
🐞 Bugfixes
- Enable markdown in paywalls in iOS 15 and watchOS 8 (#5267) via Antonio Pallares (@ajpallares)
Customer Center
🐞 Bugfixes
- Trigger promotional offer callback from
PromotionalOfferViewModel
(#5263) via Facundo Menzella (@facumenzella)
🔄 Other Changes
- FIx image load in paywall rendering validation (#5264) via Antonio Pallares (@ajpallares)
- Include commit hash in commit message for paywall-rendering-validation (#5265) via Antonio Pallares (@ajpallares)
- Bring back paywall rendering validation (no submodules) (#5252) via Antonio Pallares (@ajpallares)
- Rename duplicate CachingProductsManagerTests to CachingProductsManagerIntegrationTests (#5244) via Facundo Menzella (@facumenzella)
- Update CustomerInfo sample with is_sandbox to make sure it works (#5203) via Facundo Menzella (@facumenzella)
- Add originalPurchaseDate & isSandbox to PurchaseInformation (#5259) via Facundo Menzella (@facumenzella)
5.28.0
RevenueCat SDK
Customer Center
✨ New Features
- Show most recent expired if no active subscriptions (#5198) via Facundo Menzella (@facumenzella)
🔄 Other Changes
- Use Mint 0.17.5 for
run-test-ios-14
CI job (#5256) via Antonio Pallares (@ajpallares) - Fix Xcode 16 compilation error (#5254) via Antonio Pallares (@ajpallares)
- Add Danger rule to avoid submodules (#5250) via Antonio Pallares (@ajpallares)