Releases: RevenueCat/purchases-ios
Releases · RevenueCat/purchases-ios
5.79.0
RevenueCat SDK
✨ New Features
- State-driven Paywalls: Tab selected-state (#7019) via Monika Mateska (@MonikaMateska)
- [EXTERNAL] feat: expose revocationDate and revocationReason on StoreTransaction via @mvanhorn (#7012) via Rick (@rickvdl)
RevenueCatUI SDK
✨ New Features
- Add Slovenian locale support in paywalls (#7007) via Monika Mateska (@MonikaMateska)
- Show DefaultPaywall warning view in UI preview mode (#6973) via Antonio Pallares (@ajpallares)
Paywallv2
🐞 Bugfixes
- Use AVPlayerLayer for no-controls; fix KVO crash (#6987) via Alexander Repty (@alexrepty)
🔄 Other Changes
- Update sdks-common-config orb to 3.21.2 (#7028) via Antonio Pallares (@ajpallares)
- feat(RevenueCatUI): evaluate state conditions in the override resolver (#6993) via Monika Mateska (@MonikaMateska)
- [AUTOMATIC] Update generated error codes (#7025) via RevenueCat Git Bot (@RCGitBot)
- feat(RevenueCatUI): add presentation-session PaywallStateStore (#6992) via Monika Mateska (@MonikaMateska)
- feat(paywalls): add dedicated state condition to component overrides (#6991) via Monika Mateska (@MonikaMateska)
- feat(paywalls): add decode-only stateUpdates on interactive components (#6990) via Monika Mateska (@MonikaMateska)
- feat(paywalls): decode top-level state declaration map (#6989) via Monika Mateska (@MonikaMateska)
- [AUTOMATIC][Paywalls V2] Updates commit hash of paywall-preview-resources (#7023) via RevenueCat Git Bot (@RCGitBot)
- Removes stale paywall template screenshots if necessary (#6984) via JayShortway (@JayShortway)
- Update backend integration tests snapshots to include Slovenian localizations (#7018) via Antonio Pallares (@ajpallares)
- feat: simulate promo offer eligibility in paywall previews (#6994) via Facundo Menzella (@facumenzella)
- chore: Add 3-day Dependabot cooldown, excluding fastlane plugin (#7013) via Toni Rico (@tonidero)
- WFL-303 | Add fallback URL for workflows (#7008) via Rosie Watson (@RosieWatson)
- fix(paywalls): skip workflow fetch for offerings with no mapped workflow (#7002) via Facundo Menzella (@facumenzella)
- Fix RevenueCatUI build on older Xcode: use legacy AVPlayerItemDidPlayToEndTime (#7003) via Alexander Repty (@alexrepty)
- Remove legacy BackendIntegrationTests targets from RevenueCat.xcodeproj (#7006) via Facundo Menzella (@facumenzella)
- Adopt scene lifecycle in UnitTestsHostApp for iOS 27 support (#6980) via Will Taylor (@fire-at-will)
- Update baseline swiftinterface files for
main(#7004) via RevenueCat Git Bot (@RCGitBot) - [AUTOMATIC] Update generated error codes (#7001) via RevenueCat Git Bot (@RCGitBot)
- Fix tvOS/visionOS build: import AVFoundation in VideoPlayerViewUIView (#7000) via Alexander Repty (@alexrepty)
- Danger: block manual edits to generated error codes (#6996) via Álvaro Brey (@AlvaroBrey)
- Chore(deps): Bump fastlane-plugin-revenuecat_internal from
d911a06to70bf5c7(#6999) via dependabot[bot] (@dependabot[bot]) - Add macCatalyst availability check (#6997) via Alexander Repty (@alexrepty)
- Add mise setup-worktree task for one-command worktree setup (#6983) via Facundo Menzella (@facumenzella)
- Use a snapshot-env-free macOS executor for update-error-codes (#6995) via Álvaro Brey (@AlvaroBrey)
- Use Tuist workspace for BackendIntegrationTests in CI (#6774) via Facundo Menzella (@facumenzella)
- Add update-error-codes workflow (#6981) via Álvaro Brey (@AlvaroBrey)
- [AUTOMATIC][Paywalls V2] Updates commit hash of paywall-preview-resources (#6986) via RevenueCat Git Bot (@RCGitBot)
- test(workflows): verify purchase/restore callbacks fire from any workflow step (#6855) via Facundo Menzella (@facumenzella)
- fix(workflows): compute intro eligibility for inherited packages on packageless workflow screens (#6978) via Facundo Menzella (@facumenzella)
- Makes
run_plugin_action_in_current_directoryresilient to missing subdirectories (#6976) via JayShortway (@JayShortway) - Adopt generated ErrorCode (#6970) via Álvaro Brey (@AlvaroBrey)
- Chore(deps): Bump fastlane from 2.236.0 to 2.236.1 (#6975) via dependabot[bot] (@dependabot[bot])
- Add internal RulesEngine evaluate API surface (#6966) via Antonio Pallares (@ajpallares)
- Replace
RulesEngine.loggerglobal with task-local override + module default (#6963) via Antonio Pallares (@ajpallares) - feat(workflows): serve stale workflow detail while revalidating (#6961) via Facundo Menzella (@facumenzella)
- [AUTOMATIC][Paywalls V2] Updates commit hash of paywall-preview-resources (#6964) via RevenueCat Git Bot (@RCGitBot)
- Clean up changelogs from workflows PRs (#6960) via Facundo Menzella (@facumenzella)
- feat(workflows): wire workflow step lifecycle events in PaywallViewModel (#6868) via Facundo Menzella (@facumenzella)
- Fix flaky SK1 trial eligibility network request test (#6956) via Rick (@rickvdl)
- Use the
logoperator to strengthen rules-engine fixtures (#6957) via Antonio Pallares (@ajpallares) - Add JSON Logic
logoperator (#6945) via Antonio Pallares (@ajpallares) - Add JSON Logic iteration operators (
none,map,filter,reduce) (#6834) via Antonio Pallares (@ajpallares) - Chore(deps): Bump fastlane from 2.235.0 to 2.236.0 (#6959) via dependabot[bot] (@dependabot[bot])
- fix(workflows): Don't leak the previous user's workflows after a login or logout (#6944) via Facundo Menzella (@facumenzella)
5.78.0
RevenueCat SDK
🐞 Bugfixes
- Xcode 27 Beta Compilation Fix (#6949) via Will Taylor (@fire-at-will)
- Fix badge stack shadow not being rendered (#6921) via Monika Mateska (@MonikaMateska)
- Don't log App Store / StoreKit messages when using a Test Store API key (#6906) via Rick (@rickvdl)
RevenueCatUI SDK
Paywallv2
✨ New Features
- [PW-128] Redact text in V2 paywalls while eligibility checks are pending (#6775) via Facundo Menzella (@facumenzella)
🔄 Other Changes
- fix: skip RootView layout snapshot tests on iOS 15 (#6953) via Antonio Pallares (@ajpallares)
- other(workflows): Run workflow detail prefetches on a dedicated concurrent queue (#6916) via Facundo Menzella (@facumenzella)
- [AUTOMATIC][Paywalls V2] Updates commit hash of paywall-preview-resources (#6942) via RevenueCat Git Bot (@RCGitBot)
- Skip Swift Testing predicate tests on Xcode 14/15 (#6937) via Antonio Pallares (@ajpallares)
- Represent ±Infinity in test fixtures via test-only variables (#6936) via Antonio Pallares (@ajpallares)
- Add JSON Logic
minandmaxoperators (#6825) via Antonio Pallares (@ajpallares) - Add JSON Logic iteration operators (
some,all) (#6817) via Antonio Pallares (@ajpallares) - Skip release-or-main when manual snapshot workflows run (#6935) via Antonio Pallares (@ajpallares)
- Migrate base RulesEngineInternal operator unit tests to JSON predicate fixtures (#6885) via Antonio Pallares (@ajpallares)
- docs: add PR sizing and description guidelines to AGENTS.md (#6915) via Antonio Pallares (@ajpallares)
- Update some CI jobs to Xcode 26.5 (#6555) via Antonio Pallares (@ajpallares)
- fix(tuist): add missing test target deps (#6894) via Peter Porfy (@peterporfy)
- Fix flaky tests caused by data races in MockDeviceCache (#6888) via Rick (@rickvdl)
- fix(workflows): Don't serve stale workflows when the backend rejects the request (#6946) via Facundo Menzella (@facumenzella)
- feat(workflows): persist prefetched workflow detail on disk (#6917) via Facundo Menzella (@facumenzella)
- feat(workflows): bridge workflow exit offer into PaywallViewController (#6911) via Facundo Menzella (@facumenzella)
- feat(workflows): synchronously seed workflow paywall from warm cache (#6905) via Facundo Menzella (@facumenzella)
5.77.0
RevenueCat SDK
✨ New Features
🐞 Bugfixes
- Fix: erroneous initializations of the PurchaseHandler from a button (#6827) via Jacob Rakidzich (@JZDesign)
- [Billing Plans]: Use total commitment price for StoreProduct.price when representing a billing plan (#6910) via Will Taylor (@fire-at-will)
🔄 Other Changes
- feat(workflows): fetch workflows list with offerings and clear it on identity changes (#6883) via Facundo Menzella (@facumenzella)
RevenueCatUI SDK
🐞 Bugfixes
- Fix decoded image cache concurrency deadlock (#6907) via Cesar de la Vega (@vegaro)
- fix(workflows): preserve workflow page state across navigation (#6889) via Facundo Menzella (@facumenzella)
🔄 Other Changes
- feat(workflows): Enable workflow resolution for PaywallView (#6887) via Facundo Menzella (@facumenzella)
5.76.0
RevenueCat SDK
✨ New Features
- feat(test-store): Add support for free trials in Test Store (#6884) via Toni Rico (@tonidero)
- Add presented offering context to custom paywall events (#6707) via Rick (@rickvdl)
🐞 Bugfixes
- Fix Paywalls V2 root z-layer stacks not scrolling in bounded containers (#6873) via Monika Mateska (@MonikaMateska)
- fix(tests): add missing iOS 14/15 snapshots for BackendGetWorkflowsListTests (#6861) via Rick (@rickvdl)
Storekit 2
✨ New Features
- [Billing Plans] Support fetching & purchasing products with billing plans (#6783) via Will Taylor (@fire-at-will)
🔄 Other Changes
- feat(workflows): add WorkflowEvent model and wire format serialization (#6858) via Facundo Menzella (@facumenzella)
RevenueCatUI SDK
🔄 Other Changes
- Bump Max Log Count in Tests (#6901) via Will Taylor (@fire-at-will)
- feat(workflows): add WorkflowManager with list fetch, prefetch and offeringId resolution (#6882) via Facundo Menzella (@facumenzella)
- feat(workflows): add WorkflowsCache and disk persistence for workflows list (#6881) via Facundo Menzella (@facumenzella)
- feat(remote-config): add network scaffolding for GET /v2/config endpoint (#6854) via Rick (@rickvdl)
- Add JSON Logic string + array operators (#6793) via Antonio Pallares (@ajpallares)
- Fix flaky metadata-sync & consent-status unit tests (#6876) via Rick (@rickvdl)
- Chore(deps): Bump fastlane-plugin-revenuecat_internal from
af7bb5ctoce6a7ef(#6879) via dependabot[bot] (@dependabot[bot]) - refactor: extract Offering.presentedOfferingContext helper and apply … (#6865) via Rick (@rickvdl)
- feat(ads): add rewarded-ad reward event types and AdTracker methods (#6843) via Pol Miro (@polmiro)
- Bump jwt from 2.10.1 to 3.2.0 in /Tests/InstallationTests/CocoapodsInstallation (#6848) via dependabot[bot] (@dependabot[bot])
- [AUTOMATIC][Paywalls V2] Updates commit hash of paywall-preview-resources (#6871) via RevenueCat Git Bot (@RCGitBot)
- Add JSON Logic comparison operators (<, <=, >, >=) (#6792) via Antonio Pallares (@ajpallares)
- Allow overriding PaywallsTester bundle ID via Tuist env var (#6869) via Facundo Menzella (@facumenzella)
- Add JSON Logic arithmetic operators (+, -, *, /, %) (#6791) via Antonio Pallares (@ajpallares)
- Lint: Enforce no-new-public-enums policy via SwiftLint custom rule (#6778) via Antonio Pallares (@ajpallares)
- RulesEngineInternal: add JSON Logic predicate evaluator (#6789) via Antonio Pallares (@ajpallares)
- Forbid plain
import RulesEngineInternalvia SwiftLint custom rule (#6788) via Antonio Pallares (@ajpallares) - Add presentWorkflow for workflow (#6847) via Cesar de la Vega (@vegaro)
- Add RulesEngine skeleton module (#6787) via Antonio Pallares (@ajpallares)
- fix workflow header transitions (#6880) via Facundo Menzella (@facumenzella)
- fix workflow page transitions (#6877) via Facundo Menzella (@facumenzella)
- feat(networking): add getWorkflows list endpoint (#6853) via Facundo Menzella (@facumenzella)
- Don't send interaction event for workflow trigger button actions (#6771) via Cesar de la Vega (@vegaro)
5.75.0
RevenueCat SDK
🐞 Bugfixes
- Warm intro eligibility cache for all offerings (#6839) via Antonio Pallares (@ajpallares)
🔄 Other Changes
- ci(admob): run revenuecat-admob-tests on every PR push (#6850) via Pol Miro (@polmiro)
- fix(ads/admob): update test fakes for non-optional CapableAd.responseInfo (#6849) via Pol Miro (@polmiro)
- feat(ads/admob): add impression_id to SSV customRewardText payload (#6841) via Pol Miro (@polmiro)
- refactor(ads/admob): propagate FailureReason through poller and dispatcher (#6842) via Pol Miro (@polmiro)
- Bump fastlane from 2.234.0 to 2.235.0 (#6844) via dependabot[bot] (@dependabot[bot])
- Propagate default package across workflow steps (#6790) via Facundo Menzella (@facumenzella)
- Fix workflow paywall safe area clipping (#6816) via Facundo Menzella (@facumenzella)
5.74.0
RevenueCat SDK
✨ New Features
- Dedupe
Purchases.configure(with:)calls with equalConfiguration(#6811) via Antonio Pallares (@ajpallares)
RevenueCatUI SDK
🐞 Bugfixes
Paywallv2
🐞 Bugfixes
- Add conditional visibility to ButtonComponent (#6821) via Facundo Menzella (@facumenzella)
🔄 Other Changes
- Post GitHub PR comment on CI test failure (#6818) via Facundo Menzella (@facumenzella)
- [AUTOMATIC][Paywalls V2] Updates commit hash of paywall-preview-resources (#6823) via RevenueCat Git Bot (@RCGitBot)
- Expand
DangerousSettingsAPI tester coverage (#6810) via Antonio Pallares (@ajpallares)
5.73.1
RevenueCatUI SDK
Paywallv2
🐞 Bugfixes
- Fix workflow exit offer presentation across sheet boundaries (#6804) via Facundo Menzella (@facumenzella)
Customer Center
🐞 Bugfixes
- Filter changePlans path for expired subscriptions in CustomerCenter (#6814) via Facundo Menzella (@facumenzella)
🔄 Other Changes
- Removes
swiftPMImportfrom cinterop package name (#6803) via JayShortway (@JayShortway) - [AUTOMATIC][Paywalls V2] Updates commit hash of paywall-preview-resources (#6819) via RevenueCat Git Bot (@RCGitBot)
- Rename reward verification completion callback (#6800) via Pol Miro (@polmiro)
- Open workflow exit offer as a second workflow (#6756) via Facundo Menzella (@facumenzella)
5.73.0
RevenueCat SDK
✨ New Features
RevenueCatUI SDK
🐞 Bugfixes
Paywall Components
✨ New Features
- Add
close_workflowbutton action (#6753) via Facundo Menzella (@facumenzella)
🔄 Other Changes
- Make
Offering.PaywallComponentsandpaywallComponentspublic (#6742) via Antonio Pallares (@ajpallares) - Fix Custom Entitlement Computation SPM installation test (#6770) via Antonio Pallares (@ajpallares)
- [Billing Plans]: Introduce Xcode 26.5 build job + handle StoreKitError.paymentMethodBindingConfigurationRequired (#6767) via Will Taylor (@fire-at-will)
- Auto-invalidate VC cache for verified rewards (#6765) via Pol Miro (@polmiro)
- Require rewardVerificationResult callback (#6762) via Pol Miro (@polmiro)
- Bump fastlane from 2.233.1 to 2.234.0 (#6764) via dependabot[bot] (@dependabot[bot])
- Fix example app disable controls during reward verification (#6761) via Pol Miro (@polmiro)
- Add reward verification support to AdMobIntegrationSample example app (#6746) via Pol Miro (@polmiro)
- Remove redundant isVerified from AdMob reward verification result (#6760) via Pol Miro (@polmiro)
- Remove unused test plans (#6759) via Facundo Menzella (@facumenzella)
- Bump nokogiri from 1.19.1 to 1.19.3 in /Tests/InstallationTests/CocoapodsInstallation (#6757) via dependabot[bot] (@dependabot[bot])
- Replace RevenueCatUITestsDev with PaywallScreenshotTests Tuist project (#6744) via Facundo Menzella (@facumenzella)
- Resolve exit offer offering ID from workflow singleStepFallbackId (#6755) via Facundo Menzella (@facumenzella)
- Parse exit_offers field on WorkflowScreen (#6754) via Facundo Menzella (@facumenzella)
5.72.0
RevenueCat SDK
✨ New Features
- Add support for intro offer eligibility override in non-cec mode (#6748) via Mark Villacampa (@MarkVillacampa)
RevenueCatUI SDK
Paywallv2
✨ New Features
🔄 Other Changes
- [Billing Plans]: Parse platform_product_plan_identifier in offerings response (#6738) via Will Taylor (@fire-at-will)
- fix for CI - add missing JSON field (#6747) via Jacob Rakidzich (@JZDesign)
- chore: add logging to reward verification (#6745) via Peter Porfy (@peterporfy)
- Add internal reward-verification adapter pipeline (#6663) via Pol Miro (@polmiro)
- Resolve price/period variables on packageless workflow screens (#6737) via Facundo Menzella (@facumenzella)
5.71.0
RevenueCatUI SDK
Paywallsv2
🐞 Bugfixes
- Fix fullscreen paywall overflow for fill-mode videos (#6726) via Monika Mateska (@MonikaMateska)
- Fix: Enforce vertical bounds in RootView (#6708) via Jacob Rakidzich (@JZDesign)
- Fix layout direction override (PWENG-39) (#6723) via Alexander Repty (@alexrepty)
- Fix workflow page transition layering (#6717) via Facundo Menzella (@facumenzella)
🔄 Other Changes
- Bump fastlane-plugin-revenuecat_internal from
21e02ectoaf7bb5c(#6734) via dependabot[bot] (@dependabot[bot]) - Parse single_step_fallback_id in PublishedWorkflow (#6733) via Facundo Menzella (@facumenzella)
- Introduce Tracking namespace and extract delegate stores (#6681) via Pol Miro (@polmiro)
- Add BYPASS_SIMULATED_STORE_RELEASE_CHECK compilation flag (#6710) via Antonio Pallares (@ajpallares)
- Bump fastlane-plugin-revenuecat_internal from
2d11430to21e02ec(#6731) via dependabot[bot] (@dependabot[bot]) - Only run snapshot-bump workflow when
.versionchanged (#6724) via Antonio Pallares (@ajpallares) - Bump shared rerun-danger workflow to pick up missing-workflow guard (#6728) via Rick (@rickvdl)
- Bump fastlane-plugin-revenuecat_internal from
d24ab26to2d11430(#6729) via dependabot[bot] (@dependabot[bot]) - [AUTOMATIC][Paywalls V2] Updates commit hash of paywall-preview-resources (#6730) via RevenueCat Git Bot (@RCGitBot)
- Move deploy-purchase-tester after make-release (#6725) via Antonio Pallares (@ajpallares)
- Bump fastlane from 2.233.0 to 2.233.1 (#6718) via dependabot[bot] (@dependabot[bot])
- Fail PRs when Swift files are missing from RevenueCat.xcodeproj (#6716) via Antonio Pallares (@ajpallares)
- Update sdks-common-config orb to v3.20.0 (#6709) via Rick (@rickvdl)
- Prewarm workflow assets after offerings refresh (#6732) via Facundo Menzella (@facumenzella)