Skip to main content
SDK

iOS 4.26.0-beta.1

iOS 4.26.0-beta.1
RC Support
RevenueCat Staff
Forum|alt.badge.img+3

New Features

✨ Introducing RevenueCatUI πŸ“± (beta):

RevenueCat's Paywalls allow you to to remotely configure your entire paywall view without any code changes or app updates.
Our paywall templates use native code to deliver smooth, intuitive experiences to your customers when you’re ready to deliver them an Offering; and you can use our Dashboard to pick the right template and configuration to meet your needs.

To use RevenueCat Paywalls on iOS, simply:

  1. Create a Paywall on the Dashboard for the Offering you intend to serve to your customers
  2. Add the RevenueCatUI SPM dependency to your project
  3. import RevenueCatUI at the point in the user experience when you want to display a paywall:
import RevenueCatUI
import SwiftUI

struct YourApp: View {

    var body: some View {
        YourContent()
            .presentPaywallIfNeeded(requiredEntitlementIdentifier: "pro") { customerInfo in
                print("Purchase completed: \(customerInfo)")
            }
    }

}
List of changes
  • Paywalls: fixed template 2 inconsistent spacing (#3091) via NachoSoto (@NachoSoto)
  • Paywalls: improved test custom paywall (#3089) via NachoSoto (@NachoSoto)
  • Paywalls: avoid warming up cache multiple times (#3068) via NachoSoto (@NachoSoto)
  • Paywalls: added all localization (#3080) via NachoSoto (@NachoSoto)
  • Paywalls: temporarily disable PaywallTemplate.template4 (#3088) via NachoSoto (@NachoSoto)
  • Paywalls: enabled Catalyst support (#3087) via NachoSoto (@NachoSoto)
  • Paywalls: iPad polish (#3061) via NachoSoto (@NachoSoto)
  • Paywalls: added MIT license to all headers (#3084) via NachoSoto (@NachoSoto)
  • Paywalls: improved unselected package background color (#3079) via NachoSoto (@NachoSoto)
  • Paywalls: handle already purchased state (#3046) via NachoSoto (@NachoSoto)
  • Paywalls: only dismiss PaywallView when explicitly presenting it with .presentPaywallIfNeeded (#3075) via NachoSoto (@NachoSoto)
  • Paywalls: add support for generating snapshots on CI (#3055) via NachoSoto (@NachoSoto)
  • Paywalls: removed unnecessary PaywallFooterView (#3064) via NachoSoto (@NachoSoto)
  • Paywalls: new PaywallFooterView to replace modes (#3051) via Josh Holtz (@joshdholtz)
  • Paywalls: rename card to footer (#3049) via Josh Holtz (@joshdholtz)
  • Paywalls: changed total_price_and_per_month to include period (#3044) via NachoSoto (@NachoSoto)
  • Paywalls: finished iOS 15 support (#3043) via NachoSoto (@NachoSoto)
  • Paywalls: validate PaywallData to ensure displayed data is always correct (#3019) via NachoSoto (@NachoSoto)
  • Paywalls: fixed total_price_and_per_month for custom monthly packages (#3027) via NachoSoto (@NachoSoto)
  • Paywalls: tweaking colors on template 2&3 (#3011) via NachoSoto (@NachoSoto)
  • Paywalls: changed snapshots to scale 1 (#3016) via NachoSoto (@NachoSoto)
  • Paywalls: replaced defaultLocale with preferredLocales (#3003) via NachoSoto (@NachoSoto)
  • Paywalls: improved PaywallDisplayMode.condensedCard layout (#3001) via NachoSoto (@NachoSoto)
  • Paywalls: .card and .condensedCard modes (#2995) via NachoSoto (@NachoSoto)
  • Paywalls: prevent multiple concurrent purchases (#2991) via NachoSoto (@NachoSoto)
  • Paywalls: improved variable warning (#2984) via NachoSoto (@NachoSoto)
  • Paywalls: fixed horizontal padding on template 1 (#2987) via NachoSoto (@NachoSoto)
  • Paywalls: changed FooterView to always use text1 color (#2992) via NachoSoto (@NachoSoto)
  • Paywalls: retry test failures (#2985) via NachoSoto (@NachoSoto)
  • Paywalls: send presented PaywallViewMode with purchases (#2859) via NachoSoto (@NachoSoto)
  • Paywalls: added support for custom fonts (#2988) via NachoSoto (@NachoSoto)
  • Paywalls: improved template 2 unselected packages (#2982) via NachoSoto (@NachoSoto)
  • Paywalls: fix template 2 selected text offer details color (#2975) via Josh Holtz (@joshdholtz)
  • Paywalls: warm-up image cache (#2978) via NachoSoto (@NachoSoto)
  • Paywalls: extracted PaywallCacheWarming (#2977) via NachoSoto (@NachoSoto)
  • Paywalls: fixed color in template 3 (#2980) via NachoSoto (@NachoSoto)
  • Paywalls: improved default template (#2973) via NachoSoto (@NachoSoto)
  • Paywalls: added links to documentation (#2974) via NachoSoto (@NachoSoto)
  • Paywalls: updated template names (#2971) via NachoSoto (@NachoSoto)
  • Paywalls: updated variable names (#2970) via NachoSoto (@NachoSoto)
  • Paywalls: added JSON debug screen to debugRevenueCatOverlay (#2972) via NachoSoto (@NachoSoto)
  • Paywalls: multi-package horizontal template (#2949) via NachoSoto (@NachoSoto)
  • Paywalls: fixed template 3 icon aspect ratio (#2969) via NachoSoto (@NachoSoto)
  • Paywalls: iOS 17 tests on CI (#2955) via NachoSoto (@NachoSoto)
  • Paywalls: deploy debug sample app (#2966) via NachoSoto (@NachoSoto)
  • Paywalls: sort offerings list in sample app (#2965) via NachoSoto (@NachoSoto)
  • Paywalls: initial iOS 15 support (#2933) via NachoSoto (@NachoSoto)
  • Paywalls: changed default PaywallData to display available packages (#2964) via NachoSoto (@NachoSoto)
  • Paywalls: changed offerDetails to be optional (#2963) via NachoSoto (@NachoSoto)
  • Paywalls: markdown support (#2961) via NachoSoto (@NachoSoto)
  • Paywalls: updated icon set to match frontend (#2962) via NachoSoto (@NachoSoto)
  • Paywalls: added support for PackageType.custom (#2959) via NachoSoto (@NachoSoto)
  • Paywalls: fixed tvOS compilation by making it explicitly unavailable (#2956) via NachoSoto (@NachoSoto)
  • Paywalls: fix crash when computing localization with duplicate packages (#2958) via NachoSoto (@NachoSoto)
  • Paywalls: UIKit PaywallViewController (#2934) via NachoSoto (@NachoSoto)
  • Paywalls: presentPaywallIfNecessary -> presentPaywallIfNeeded (#2953) via NachoSoto (@NachoSoto)
  • Paywalls: added support for custom and lifetime products (#2941) via NachoSoto (@NachoSoto)
  • Paywalls: changed SamplePaywallsList to work offline (#2937) via NachoSoto (@NachoSoto)
  • Paywalls: fixed header image mask on first template (#2936) via NachoSoto (@NachoSoto)
  • Paywalls: removed mode parameter from presentPaywallIfNecessary (#2940) via NachoSoto (@NachoSoto)
  • Paywalls: improved RemoteImage error layout (#2939) via NachoSoto (@NachoSoto)
  • Paywalls: added default close button when using presentPaywallIfNecessary (#2935) via NachoSoto (@NachoSoto)
  • Paywalls: added ability to preview templates in a .sheet (#2938) via NachoSoto (@NachoSoto)
  • Paywalls: avoid recomputing variable Regex (#2944) via NachoSoto (@NachoSoto)
  • Paywalls: improved FooterView scaling (#2948) via NachoSoto (@NachoSoto)
  • Paywalls: added ability to calculate and localize subscription discounts (#2943) via NachoSoto (@NachoSoto)
  • Offering: improved description (#2912) via NachoSoto (@NachoSoto)
  • Paywalls: fixed FooterView color in template 1 (#2951) via NachoSoto (@NachoSoto)
  • Paywalls: fixed View.scrollableIfNecessary (#2947) via NachoSoto (@NachoSoto)
  • Paywalls: improved IntroEligibilityStateView to avoid layout changes (#2946) via NachoSoto (@NachoSoto)
  • Paywalls: updated offerings snapshot with new asset base URL (#2950) via NachoSoto (@NachoSoto)
  • Paywalls: extracted TemplateBackgroundImageView (#2945) via NachoSoto (@NachoSoto)
  • Paywalls: more polish from design feedback (#2932) via NachoSoto (@NachoSoto)
  • Paywalls: more unit tests for purchasing state (#2931) via NachoSoto (@NachoSoto)
  • Paywalls: new .onPurchaseCompleted modifier (#2930) via NachoSoto (@NachoSoto)
  • Paywalls: fixed LoadingPaywallView displaying a progress view (#2929) via NachoSoto (@NachoSoto)
  • Paywalls: added default template to SamplePaywallsList (#2928) via NachoSoto (@NachoSoto)
  • Paywalls: added a few more logs (#2927) via NachoSoto (@NachoSoto)
  • Paywalls added individual previews for templates (#2924) via NachoSoto (@NachoSoto)
  • Paywalls: improved default paywall configuration (#2926) via NachoSoto (@NachoSoto)
  • Paywalls: moved purchasing state to PurchaseHandler (#2923) via NachoSoto (@NachoSoto)
  • Paywalls: pre-warm intro eligibility in background thread (#2925) via NachoSoto (@NachoSoto) via NachoSoto (@NachoSoto)
  • Paywalls: improved template accessibility support (#2920) via NachoSoto (@NachoSoto)
  • Paywalls: some basic polish from design feedback (#2917) via NachoSoto (@NachoSoto)
  • Paywalls: added OfferingsList to preview all paywalls (#2916) via NachoSoto (@NachoSoto)
  • Paywalls: fixed tappable area for a couple of buttons (#2915) via NachoSoto (@NachoSoto)
  • Paywalls: new text1 and text2 colors (#2903) via NachoSoto (@NachoSoto)
  • Paywalls: updated multi-package bold template design (#2908) via NachoSoto (@NachoSoto)
  • Paywalls: added sample paywalls to SimpleApp (#2907) via NachoSoto (@NachoSoto)
  • Paywalls: one package with features template (#2902) via NachoSoto (@NachoSoto)
  • Paywalls: initial support for icons (#2882) via NachoSoto (@NachoSoto)
  • Paywalls: extracted intro eligibility out of templates (#2901) via NachoSoto (@NachoSoto)
  • Paywalls: changed subtitle to be optional (#2900) via NachoSoto (@NachoSoto)
  • Paywalls: added "features" to LocalizedConfiguration (#2899) via NachoSoto (@NachoSoto)
  • Paywalls: fixed {{ total_price_and_per_month }} (#2881) via NachoSoto (@NachoSoto)
  • Paywalls: updated template names (#2878) via NachoSoto (@NachoSoto)
  • Paywalls: added accent colors (#2883) via NachoSoto (@NachoSoto)
  • Paywalls: changed images representation to an object (#2875) via NachoSoto (@NachoSoto)
  • Paywalls: added offerName parameter (#2877) via NachoSoto (@NachoSoto)
  • Paywalls: new {{ period }} variable (#2876) via NachoSoto (@NachoSoto)
  • Paywalls: disabled PaywallViewModes for now (#2874) via NachoSoto (@NachoSoto)
  • Paywalls: added new defaultPackage configuration (#2871) via NachoSoto (@NachoSoto)
  • Paywalls: fixed tests on CI (#2872) via NachoSoto (@NachoSoto)
  • Paywalls: pre-fetch intro eligibility for paywalls (#2860) via NachoSoto (@NachoSoto)
  • Paywalls: clean up the error view (#2873) via Andy Boedo (@aboedo)
  • Paywalls: new API for easily displaying PaywallView with just one line (#2869) via NachoSoto (@NachoSoto)
  • Paywalls: handle missing paywalls gracefully (#2855) via NachoSoto (@NachoSoto)
  • Paywalls: temporarily disable non-fullscreen PaywallViews (#2868) via NachoSoto (@NachoSoto)
  • Paywalls: added test to ensure package selection maintains order (#2853) via NachoSoto (@NachoSoto)
  • Paywalls: added new blurredBackgroundImage configuration (#2852) via NachoSoto (@NachoSoto)
  • Paywalls: fuzzy Locale lookups (#2847) via NachoSoto (@NachoSoto)
  • Paywalls: basic localization support (#2851) via NachoSoto (@NachoSoto)
  • Paywalls: added FooterView (#2850 via NachoSoto (@NachoSoto)
  • Paywalls: multi-package template (#2840) via NachoSoto (@NachoSoto)
  • Paywalls: disable animations during unit tests (#2848) via NachoSoto (@NachoSoto)
  • Paywalls: TrialOrIntroEligibilityChecker.eligibility(for packages:) (#2846) via NachoSoto (@NachoSoto)
  • Paywalls: added new total_price_and_per_month variable (#2845) via NachoSoto (@NachoSoto)
  • Paywalls: extracted PurchaseButton (#2839) via NachoSoto (@NachoSoto)
  • Paywalls: extracted IntroEligibilityStateView (#2837) via NachoSoto (@NachoSoto)
  • Paywalls: support for multiple PaywallViewModes (#2834) via NachoSoto (@NachoSoto)
  • Paywalls: add support for multiple images in template configuration (#2832) via NachoSoto (@NachoSoto)
  • Paywalls: extracted configuration processing into a new TemplateViewConfiguration (#2830) via NachoSoto (@NachoSoto)
  • Paywalls: disable macOS/macCatalyst/watchOS for now (#2821) via NachoSoto (@NachoSoto)
  • Paywalls: using new color information in template (#2823) via NachoSoto (@NachoSoto)
  • Paywalls: set up CI tests and API Tester (#2816) via NachoSoto (@NachoSoto)
  • Paywalls: added support for decoding colors (#2822) via NachoSoto (@NachoSoto)
  • Paywalls: ignore empty strings in LocalizedConfiguration (#2818) via NachoSoto (@NachoSoto)
  • Paywalls: updated PaywallData field names (#2817) via NachoSoto (@NachoSoto)
  • Paywalls: added support for purchasing (#2812) via NachoSoto (@NachoSoto)
  • Paywalls: added tests for PackageType filtering (#2810) via NachoSoto (@NachoSoto)
  • Paywalls: changed variable handling to use Swift Regex (#2811) via Andy Boedo (@aboedo)
  • Paywalls: added price variable (#2809) via NachoSoto (@NachoSoto)
  • Paywalls: determine intro eligibility (#2808) via NachoSoto (@NachoSoto)
  • Paywalls: added header image to configuration (#2800) via NachoSoto (@NachoSoto)
  • Paywalls: added packages to configuration (#2798) via NachoSoto (@NachoSoto)
  • Paywalls: add support for displaying StoreProductDiscounts (#2796) via NachoSoto (@NachoSoto)
  • Paywalls: added support for variables (#2793) via NachoSoto (@NachoSoto)
  • Paywalls: using PaywallData and setting up basic template loading (#2781) via NachoSoto (@NachoSoto)
  • Paywalls: initial configuration types (#2780) via NachoSoto (@NachoSoto)
  • Paywalls: initial RevenueCatUI target setup (#2776) via NachoSoto (@NachoSoto)

To view new release, visit https://github.com/RevenueCat/purchases-ios/releases/tag/4.26.0-beta.1

This post has been closed for comments

Cookie policy

We use cookies to enhance and personalize your experience. If you accept you agree to our full cookie policy. Learn more about our cookies.

 
Cookie settings