Skip to content

Releases: RevenueCat/purchases-ios

5.7.0

24 Oct 09:49
Compare
Choose a tag to compare

RevenueCat SDK

📦 Dependency Updates

  • Bump danger from 9.5.0 to 9.5.1 (#4388) via dependabot[bot] (@dependabot[bot])
  • Bump fastlane from 2.224.0 to 2.225.0 (#4387) via dependabot[bot] (@dependabot[bot])

RevenueCatUI SDK

Customer Center

✨ New Features

  • [CustomerCenter] Add default info to support emails (#4397) via Toni Rico (@tonidero)
  • Support custom URL paths in ManageSubscriptionsView (#4382) via Toni Rico (@tonidero)

🐞 Bugfixes

  • Default URL to nil in CustomerCenter HelpPaths (#4401) via Cesar de la Vega (@vegaro)
  • Add default values to enums in Customer Center config response (#4386) via Cesar de la Vega (@vegaro)
  • Fixes SubscriptionDetailsView background color in dark mode (#4371) via JayShortway (@JayShortway)
  • Better spacing in PromotionalOfferView (#4369) via Cesar de la Vega (@vegaro)

🔄 Other Changes

  • Fix integration tests simulator (#4396) via Cesar de la Vega (@vegaro)
  • adds callout to SPM installation tip for visibility (#4398) via rglanz-rc (@rglanz-rc)
  • Fix iOS 15, 14 tests using wrong version of swift-snapshot-testing and API tests (#4394) via Cesar de la Vega (@vegaro)
  • Fixes broken references in project.pbxproj. (#4385) via JayShortway (@JayShortway)
  • Fix PaywallsTester compilation (#4389) via Cesar de la Vega (@vegaro)
  • Fixes macOS snapshots for X-Is-Debug-Build header (#4383) via JayShortway (@JayShortway)
  • Paywall component containers are all stacks (#4380) via Josh Holtz (@joshdholtz)
  • Remove Storefront from PaymentWrapperQueue (#4377) via Will Taylor (@fire-at-will)
  • Select package and purchase (#4332) via Josh Holtz (@joshdholtz)
  • Added new individual corner radius and border modifier (#4328) via Josh Holtz (@joshdholtz)
  • Render packages, package, and purchase button views for paywall components (#4324) via Josh Holtz (@joshdholtz)
  • ButtonComponent can show the Customer Center (#4373) via JayShortway (@JayShortway)
  • Added scaffolding for paywall components, view models, and views (#4321) via Josh Holtz (@joshdholtz)
  • Adds actionlint to lint GitHub Actions workflows (#4326) via JayShortway (@JayShortway)
  • Local.xcconfig is read by Package.swift (#4368) via JayShortway (@JayShortway)
  • ButtonComponent can restore purchases (#4372) via JayShortway (@JayShortway)
  • ButtonComponent can dismiss the paywall (#4365) via JayShortway (@JayShortway)
  • ButtonComponent can handle URL destinations (#4360) via JayShortway (@JayShortway)
  • Models the Action for the ButtonComponent (#4353) via JayShortway (@JayShortway)
  • Adds scaffolding for the ButtonComponent. (#4348) via JayShortway (@JayShortway)
  • Local.xcconfig is read by PurchaseTester and PaywallsTester (#4367) via JayShortway (@JayShortway)
  • Adds X-Is-Debug-Build header (#4364) via JayShortway (@JayShortway)
  • Adds .index-build to .gitignore. (#4366) via JayShortway (@JayShortway)

5.6.0

08 Oct 17:28
Compare
Choose a tag to compare

RevenueCat SDK

🐞 Bugfixes

  • Fix hasFeature(RetroactiveAttribute) check in iOS 14 (#4359) via Cesar de la Vega (@vegaro)
  • Only Treat Deferred StoreKit Messages as Shown When They are Shown (#4344) via Will Taylor (@fire-at-will)

📦 Dependency Updates

  • Bump fastlane from 2.223.1 to 2.224.0 (#4354) via dependabot[bot] (@dependabot[bot])
  • Bump fastlane-plugin-revenuecat_internal from 5b2e35c to 3b1e7cf (#4347) via dependabot[bot] (@dependabot[bot])

Win-back Offers

✨ New Features

  • CAT-1726: Support Deferring Win-Back StoreKit Messages (#4343) via Will Taylor (@fire-at-will)

RevenueCatUI SDK

🐞 Bugfixes

  • Fixes double callbacks when using PaywallViewController (#4333) via Cesar de la Vega (@vegaro)

Customer Center

🐞 Bugfixes

  • Fix setting accent color in Customer Center (#4358) via Cesar de la Vega (@vegaro)
  • Improve promotional offer button when pressed (#4342) via Cesar de la Vega (@vegaro)
  • [CustomerCenter] Hide unknown paths (#4350) via Toni Rico (@tonidero)
  • Remove access to Localization env variable in ManageSubscriptionsViewModel (#4339) via Cesar de la Vega (@vegaro)

🔄 Other Changes

  • Update MagicWeather sample app (#4337) via nyeu (@nyeu)
  • Allows enabling PAYWALL_COMPONENTS using a Local.xcconfig file. (#4341) via JayShortway (@JayShortway)
  • Better logs for promotional offer view (#4336) via Cesar de la Vega (@vegaro)
  • Fix Xcode 16 warnings (#4334) via Mark Villacampa (@MarkVillacampa)
  • Run CI tests on iOS18/watchOS11 & Use Xcode 16 (#4295) via Will Taylor (@fire-at-will)

4.43.3

03 Oct 08:59
Compare
Choose a tag to compare

Other Changes

  • Remove usage of adServicesToken in syncPurchases via Mark Villacampa (@MarkVillacampa)
  • Update RevenueCat-Swift.h for version 4.43.2 via RCGitBot (@RCGitBot)
  • Version bump for 4.43.2 via RCGitBot (@RCGitBot)

5.5.0

30 Sep 12:07
Compare
Choose a tag to compare

🫂 Customer Center Beta 🫂

This release adds public beta support for the new Customer Center on iOS 15.0+.

This central hub is a self-service section that can be added to your app to help your users manage their subscriptions on their own, reducing the support burden on developers
like you so you can spend more time building apps and less time dealing with support issues. We are hoping adding this new section to your app can help you reduce customer support
interactions, obtain feedback from your users and ultimately reduce churn by retaining them as subscribers, helping you make more money.

See our Customer Center documentation for more information.

Features currently available

  • Users can cancel current subscriptions
  • Users can ask for refunds
  • Users can change their subscription plans
  • Users can restore previous purchases and contact your support email if they have trouble restoring
  • Users will be asked to update their app if they are on an older version before being able to contact your support email
  • Developers can ask for reasons for cancellations or refunds, and automatically offer promo offers to retain users
  • Configuration is done in the RevenueCat dashboard, and advanced configuration is available via JSON

Limitations

  • Only available on iOS 15+
  • Limited visual configuration options in the dashboard. It is possible to configure the Customer Center via JSON.
  • We are exposing a SwiftUI view and a modifier at the moment. We haven't built a UIKit wrapper to help integrating on UIKit apps, but it's in the roadmap.

How to enable

You can use the CustomerCenterView view directly:

var body: some View {
    Group {
        NavigationStack {
            HomeView()
                .navigationTitle("Home")
                .navigationBarTitleDisplayMode(.inline)
                .toolbar {
                    ToolbarItem(placement: .topBarLeading) {
                        Button {
                        } label: {
                            Image(systemName: "line.3.horizontal")
                        }
                    }
                    ToolbarItem(placement: .topBarTrailing) {
                        Button {
                            self.isCustomerCenterPresented = true
                        } label: {
                            Image(systemName: "person.crop.circle")
                        }
                    }
                }
        }
    }
    .foregroundColor(.white)
    .sheet(isPresented: $isCustomerCenterPresented) {
        CustomerCenterView()
    }
}

Or you can use the modifier:

VStack {
    Button {
        self.presentingCustomerCenter = true
    } label: {
        TemplateLabel(name: "Customer Center", icon: "person.fill")
    }
}
.presentCustomerCenter(isPresented: self.$presentingCustomerCenter) {
    self.presentingCustomerCenter = false
}

Listening to events

You can listen to events in the Customer Center using the customerCenterActionHandler closure:

CustomerCenterView { customerCenterAction in
    switch customerCenterAction {
    case .restoreStarted:
    case .restoreFailed(_):
    case .restoreCompleted(_):
    case .showingManageSubscriptions:
    case .refundRequestStarted(_):
    case .refundRequestCompleted(_):
    }
}

or if using the modifier:

.presentCustomerCenter(
    isPresented: self.$presentingCustomerCenter,
    customerCenterActionHandler: { action in
        switch action {
        case .restoreCompleted(let customerInfo):
        case .restoreStarted:
        case .restoreFailed(let error):
        case .showingManageSubscriptions:
        case .refundRequestStarted(let productId):
        case .refundRequestCompleted(let status):
        case .feedbackSurveyCompleted(let surveyOptionID):
        }
    }
) {
    self.presentingCustomerCenter = false
}

Release Notes

RevenueCatUI SDK

Paywall Components

🐞 Bugfixes
  • Match text, image, and stack properties and behaviors from dashboard (#4261) via Josh Holtz (@joshdholtz)

Customer Center

🐞 Bugfixes
  • More customer center docs and fix init (#4304) via Cesar de la Vega (@vegaro)
  • Remove background from FeedbackSurveyView (#4300) via Cesar de la Vega (@vegaro)

🔄 Other Changes

  • Fix iOS 15 tests (#4320) via Cesar de la Vega (@vegaro)
  • Generating new test snapshots for main - watchos (#4323) via RevenueCat Git Bot (@RCGitBot)
  • Generating new test snapshots for main - macos (#4322) via RevenueCat Git Bot (@RCGitBot)
  • Adds an onDismiss callback to ErrorDisplay (#4312) via JayShortway (@JayShortway)
  • Added previews for text component, image component, and paywall for template 1 (#4306) via Josh Holtz (@joshdholtz)
  • Remove CUSTOMER_CENTER_ENABLED (#4305) via Cesar de la Vega (@vegaro)
  • [Diagnostics] Refactor diagnostics track methods to handle background work automatically (#4270) via Toni Rico (@tonidero)
  • [Diagnostics] Add apple_products_request event (#4247) via Toni Rico (@tonidero)
  • Bump webrick from 1.7.0 to 1.8.2 in /Tests/InstallationTests/CocoapodsInstallation (#4313) via dependabot[bot] (@dependabot[bot])
  • Bump fastlane from 2.222.0 to 2.223.1 (#4309) via dependabot[bot] (@dependabot[bot])
  • Bump fastlane-plugin-revenuecat_internal from 55a0455 to 5b2e35c (#4310) via dependabot[bot] (@dependabot[bot])

5.4.0

26 Sep 08:08
Compare
Choose a tag to compare

RevenueCat SDK

✨ New Features

RevenueCatUI SDK

Customer Center

🐞 Bugfixes

  • Cleanup of strings in Customer Center (#4294) via Cesar de la Vega (@vegaro)

🔄 Other Changes

  • [Diagnostics] Add apple_purchase_attempt event (#4253) via Cesar de la Vega (@vegaro)
  • Temporarily set SWIFT_TREAT_WARNINGS_AS_ERRORS as NO (#4292) via Cesar de la Vega (@vegaro)

5.3.4

18 Sep 16:55
Compare
Choose a tag to compare

RevenueCat SDK

🐞 Bugfixes

  • Replace withCheckedThrowingContinuation Calls With withUnsafeThrowingContinuation (#4286) via Will Taylor (@fire-at-will)
  • Round price per period calculations to nearest 2-decimal (#4275) via Toni Rico (@tonidero)

📦 Dependency Updates

  • Bump fastlane-plugin-revenuecat_internal from 5140dbc to 55a0455 (#4277) via dependabot[bot] (@dependabot[bot])

RevenueCatUI SDK

🐞 Bugfixes

  • [Paywalls] Use store product for {{ sub_period }} duration (#4273) via Josh Holtz (@joshdholtz)

Customer Center

🐞 Bugfixes

  • Stateobject instantiation fix (#4271) via James Borthwick (@jamesrb1)

🔄 Other Changes

  • Update allowSharingAppStoreAccount deprecation message (#4272) via Will Taylor (@fire-at-will)
  • Update StoreKit Version Info in GitHub Issues Template (#4254) via Will Taylor (@fire-at-will)

5.3.3

12 Sep 10:17
dabbf50
Compare
Choose a tag to compare

Bugfixes

  • Remove usage of adServicesToken in syncPurchases (#4257) via Mark Villacampa (@MarkVillacampa)
  • Fixes a Paywall Template 7 crash when none of the tiers have any available products. (#4243) via JayShortway (@JayShortway)
  • [SK2] send unsynced attributes when syncing purchases (#4245) via Mark Villacampa (@MarkVillacampa)

Other Changes

  • Do not embed RevenueCat.framework in RevenueCatUI (#4256) via Cesar de la Vega (@vegaro)
  • Add warnings and clarifications to v5 migration docs (#4231) via Mark Villacampa (@MarkVillacampa)
  • Fixes SwiftLint violation of rule optional_data_string_conversion (#4252) via JayShortway (@JayShortway)
  • Paywall Components Localized Strings (#4237) via James Borthwick (@jamesrb1)
  • Update fastlane-plugin-revenuecat_internal (#4244) via Cesar de la Vega (@vegaro)
  • Add missing #if PAYWALL_COMPONENTS (#4241) via James Borthwick (@jamesrb1)
  • Paywalls Components Viewmodels + partial localization support (#4230) via James Borthwick (@jamesrb1)

5.3.2

05 Sep 11:28
Compare
Choose a tag to compare

Caution

When upgrading to v5, you must configure your In-App Purchase Key in the RevenueCat dashboard. Purchases will fail if the key is not configured.

Bugfixes

  • [Customer Center] Build WrongPlatformView from JSON (#4234) via Cesar de la Vega (@vegaro)
  • Add feedbackSurveyCompleted event to Customer Center events (#4194) via Cesar de la Vega (@vegaro)

Other Changes

5.3.1

30 Aug 16:08
Compare
Choose a tag to compare

Caution

When upgrading to v5, you must configure your In-App Purchase Key in the RevenueCat dashboard. Purchases will fail if the key is not configured.

Bugfixes

  • Fix compatibleTopBarTrailing in MacOS and api tests (#4226) via Cesar de la Vega (@vegaro)
  • [Paywall] Fix restoreStarted not being called on presentPaywallIfNeeded when using requiredEntitlementIdentifier (#4223) via Josh Holtz (@joshdholtz)
  • [CustomerCenter] Move sheet and restore alert creation to ManageSubscriptionsView (#4220) via Cesar de la Vega (@vegaro)
  • [EXTERNAL] Custom Entitlements Computation: fix support display on debug screen (#4215) by @NachoSoto (#4218) via Toni Rico (@tonidero)
  • [Customer Center] Add padding to No thanks in promotional offer screen (#4221) via Cesar de la Vega (@vegaro)
  • Fix version number in plist files (#4213) via Cesar de la Vega (@vegaro)
  • fix mac os sandbox check slowness (#3879) via Andy Boedo (@aboedo)
  • [Customer Center] Fix FeedbackSurveyView not opening (#4208) via Cesar de la Vega (@vegaro)
  • Remove unneeded_override disable to fix linter (#4209) via Cesar de la Vega (@vegaro)

Dependency Updates

  • Bump rexml from 3.3.3 to 3.3.6 in /Tests/InstallationTests/CocoapodsInstallation (#4210) via dependabot[bot] (@dependabot[bot])
  • Bump rexml from 3.3.3 to 3.3.6 (#4211) via dependabot[bot] (@dependabot[bot])

Other Changes

  • Update readme wording (#3914) via James Borthwick (@jamesrb1)
  • Set a maximum duration for iOS 15 tests (#4229) via Cesar de la Vega (@vegaro)
  • Paywall Components Initial Commit (#4224) via James Borthwick (@jamesrb1)
  • [CustomerCenter] Open App Store when the user wants to update their app (#4199) via JayShortway (@JayShortway)
  • [Customer Center] Shows a warning when the app is not the latest version (#4193) via JayShortway (@JayShortway)
  • Fix integration tests simulator version (#4219) via Cesar de la Vega (@vegaro)
  • Pin swift-docc-plugin to 1.3.0 (#4216) via James Borthwick (@jamesrb1)

5.3.0-customercenter.alpha.4

27 Aug 17:34
Compare
Choose a tag to compare
Pre-release
  • Open App Store when the user wants to update their app (#4199) via JayShortway (@JayShortway)
  • Move sheet and restore alert creation to ManageSubscriptionsView (#4220) via Cesar de la Vega (@vegaro)
  • Shows a warning when the app is not the latest version (#4193) via JayShortway (@JayShortway)
  • Add padding to No thanks in promotional offer screen (#4221) via Cesar de la Vega (@vegaro)
  • Fix FeedbackSurveyView not opening (#4208) via Cesar de la Vega (@vegaro)
  • Migrate to List style (#4190) via Cody Kerns (@codykerns)
  • Hide Contact Support button if URL can't be created (#4192) via Cesar de la Vega (@vegaro)
  • Improving customer center buttons (#4165) via Cody Kerns (@codykerns)
  • Clean up colors in WrongPlatformView and NoSubscriptionsView (#4204) via Cesar de la Vega (@vegaro)
  • CustomerCenterViewModel checks whether the app is the latest version (#4169) via JayShortway (@JayShortway)
  • Corrects references from ManageSubscriptionsButtonStyle to ButtonsStyle. (#4186) via JayShortway (@JayShortway)
  • Customer center improvements (#4166) via James Borthwick (@jamesrb1)
  • replace color(from colorInformation:) global with extension (#4183) via Andy Boedo (@aboedo)
  • Enable customer center tests (#4171) via James Borthwick (@jamesrb1)