[DO NOT MERGE] Release/4.26.0-beta.2 #3127
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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:
Offering
you intend to serve to your customersRevenueCatUI
SPM dependency to your projectimport RevenueCatUI
at the point in the user experience when you want to display a paywall:List of changes
Paywalls
: update snapshot generation with new separate git repo (Paywalls
: update snapshot generation with new separate git repo #3116) via NachoSoto (@NachoSoto)Purchases
: don't clear intro eligibility / purchased products cache on first launch (Purchases
: don't clear intro eligibility / purchased products cache on first launch #3067) via NachoSoto (@NachoSoto)CI
: add workaround forCarthage
timing out (CI
: add workaround forCarthage
timing out #3119) via NachoSoto (@NachoSoto)Paywalls
: add support for CTA button gradients (Paywalls
: add support for CTA button gradients #3121) via NachoSoto (@NachoSoto)Paywalls
: template 5 (Paywalls
: template 5 #3095) via NachoSoto (@NachoSoto)Paywalls
: replaced submodule withgitignore
d reference (Paywalls
: replaced submodule withgitignore
d reference #3125) via NachoSoto (@NachoSoto)Catalyst
: fixed a couple of Catalyst build warnings (Catalyst
: fixed a couple of Catalyst build warnings #3120) via NachoSoto (@NachoSoto)Paywalls
: reference test snapshots from submodule (Paywalls
: reference test snapshots from submodule #3115) via NachoSoto (@NachoSoto)Paywalls
: removedpresentedPaywallViewMode
(Paywalls
: removedpresentedPaywallViewMode
#3109) via NachoSoto (@NachoSoto)Paywalls
: fixed template 2 inconsistent spacing (Paywalls
: fixed template 2 inconsistent spacing #3091) via NachoSoto (@NachoSoto)Paywalls
: improved test custom paywall (Paywalls
: improved test custom paywall #3089) via NachoSoto (@NachoSoto)Paywalls
: avoid warming up cache multiple times (Paywalls
: avoid warming up cache multiple times #3068) via NachoSoto (@NachoSoto)Paywalls
: added all localization (Paywalls
: added all localization #3080) via NachoSoto (@NachoSoto)Paywalls
: temporarily disablePaywallTemplate.template4
(Paywalls
: temporarily disablePaywallTemplate.template4
#3088) via NachoSoto (@NachoSoto)Paywalls
: enabledCatalyst
support (Paywalls
: enabledCatalyst
support #3087) via NachoSoto (@NachoSoto)Paywalls
: iPad polish (Paywalls
: iPad polish #3061) via NachoSoto (@NachoSoto)Paywalls
: added MIT license to all headers (Paywalls
: added MIT license to all headers #3084) via NachoSoto (@NachoSoto)Paywalls
: improved unselected package background color (Paywalls
: improved unselected package background color #3079) via NachoSoto (@NachoSoto)Paywalls
: handle already purchased state (Paywalls
: handle already purchased state #3046) via NachoSoto (@NachoSoto)Paywalls
: only dismissPaywallView
when explicitly presenting it with.presentPaywallIfNeeded
(Paywalls
: only dismissPaywallView
when explicitly presenting it with.presentPaywallIfNeeded
#3075) via NachoSoto (@NachoSoto)Paywalls
: add support for generating snapshots on CI (Paywalls
: add support for generating snapshots on CI #3055) via NachoSoto (@NachoSoto)Paywalls
: removed unnecessaryPaywallFooterView
(Paywalls
: removed unnecessaryPaywallFooterView
#3064) via NachoSoto (@NachoSoto)Paywalls
: newPaywallFooterView
to replacemodes
(Paywalls
: newPaywallFooterView
to replacemodes
#3051) via Josh Holtz (@joshdholtz)Paywalls
: rename card to footer (Paywalls
: rename card to footer #3049) via Josh Holtz (@joshdholtz)Paywalls
: changedtotal_price_and_per_month
to include period (Paywalls
: changedtotal_price_and_per_month
to include period #3044) via NachoSoto (@NachoSoto)Paywalls
: finishediOS 15
support (Paywalls
: finishediOS 15
support #3043) via NachoSoto (@NachoSoto)Paywalls
: validatePaywallData
to ensure displayed data is always correct (Paywalls
: validatePaywallData
to ensure displayed data is always correct #3019) via NachoSoto (@NachoSoto)Paywalls
: fixedtotal_price_and_per_month
for custom monthly packages (Paywalls
: fixedtotal_price_and_per_month
for custom monthly packages #3027) via NachoSoto (@NachoSoto)Paywalls
: tweaking colors on template 2&3 (Paywalls
: tweaking colors on template 2&3 #3011) via NachoSoto (@NachoSoto)Paywalls
: changed snapshots to scale 1 (Paywalls
: changed snapshots to scale 1 #3016) via NachoSoto (@NachoSoto)Paywalls
: replaceddefaultLocale
withpreferredLocales
(Paywalls
: replaceddefaultLocale
withpreferredLocales
#3003) via NachoSoto (@NachoSoto)Paywalls
: improvedPaywallDisplayMode.condensedCard
layout (Paywalls
: improvedPaywallDisplayMode.condensedCard
layout #3001) via NachoSoto (@NachoSoto)Paywalls
:.card
and.condensedCard
modes (Paywalls
:.card
and.condensedCard
modes #2995) via NachoSoto (@NachoSoto)Paywalls
: prevent multiple concurrent purchases (Paywalls
: prevent multiple concurrent purchases #2991) via NachoSoto (@NachoSoto)Paywalls
: improved variable warning (Paywalls
: improved variable warning #2984) via NachoSoto (@NachoSoto)Paywalls
: fixed horizontal padding on template 1 (Paywalls
: fixed horizontal padding on template 1 #2987) via NachoSoto (@NachoSoto)Paywalls
: changedFooterView
to always usetext1
color (Paywalls
: changedFooterView
to always usetext1
color #2992) via NachoSoto (@NachoSoto)Paywalls
: retry test failures (Paywalls
: retry test failures #2985) via NachoSoto (@NachoSoto)Paywalls
: send presentedPaywallViewMode
with purchases (Paywalls
: send presentedPaywallViewMode
with purchases #2859) via NachoSoto (@NachoSoto)Paywalls
: added support for custom fonts (Paywalls
: added support for custom fonts #2988) via NachoSoto (@NachoSoto)Paywalls
: improved template 2 unselected packages (Paywalls
: improved template 2 unselected packages #2982) via NachoSoto (@NachoSoto)Paywalls
: fix template 2 selected text offer details color (Paywalls
: fix template 2 selected text offer details color #2975) via Josh Holtz (@joshdholtz)Paywalls
: warm-up image cache (Paywalls
: warm-up image cache #2978) via NachoSoto (@NachoSoto)Paywalls
: extractedPaywallCacheWarming
(Paywalls
: extractedPaywallCacheWarming
#2977) via NachoSoto (@NachoSoto)Paywalls
: fixed color in template 3 (Paywalls
: fixed color in template 3 #2980) via NachoSoto (@NachoSoto)Paywalls
: improved default template (Paywalls
: improved default template #2973) via NachoSoto (@NachoSoto)Paywalls
: added links to documentation (Paywalls
: added links to documentation #2974) via NachoSoto (@NachoSoto)Paywalls
: updated template names (Paywalls
: updated template names #2971) via NachoSoto (@NachoSoto)Paywalls
: updated variable names (Paywalls
: updated variable names #2970) via NachoSoto (@NachoSoto)Paywalls
: added JSON debug screen todebugRevenueCatOverlay
(Paywalls
: added JSON debug screen todebugRevenueCatOverlay
#2972) via NachoSoto (@NachoSoto)Paywalls
: multi-package horizontal template (Paywalls
: multi-package horizontal template #2949) via NachoSoto (@NachoSoto)Paywalls
: fixed template 3 icon aspect ratio (Paywalls
: fixed template 3 icon aspect ratio #2969) via NachoSoto (@NachoSoto)Paywalls
: iOS 17 tests on CI (Paywalls
: iOS 17 tests on CI #2955) via NachoSoto (@NachoSoto)Paywalls
: deploydebug
sample app (Paywalls
: deploydebug
sample app #2966) via NachoSoto (@NachoSoto)Paywalls
: sort offerings list in sample app (Paywalls
: sort offerings list in sample app #2965) via NachoSoto (@NachoSoto)Paywalls
: initial iOS 15 support (Paywalls
: initial iOS 15 support #2933) via NachoSoto (@NachoSoto)Paywalls
: changed defaultPaywallData
to display available packages (Paywalls
: changed defaultPaywallData
to display available packages #2964) via NachoSoto (@NachoSoto)Paywalls
: changedofferDetails
to be optional (Paywalls
: changedofferDetails
to be optional #2963) via NachoSoto (@NachoSoto)Paywalls
: markdown support (Paywalls
: markdown support #2961) via NachoSoto (@NachoSoto)Paywalls
: updated icon set to match frontend (Paywalls
: updated icon set to match frontend #2962) via NachoSoto (@NachoSoto)Paywalls
: added support forPackageType.custom
(Paywalls
: added support forPackageType.custom
#2959) via NachoSoto (@NachoSoto)Paywalls
: fixedtvOS
compilation by making it explicitly unavailable (Paywalls
: fixedtvOS
compilation by making it explicitly unavailable #2956) via NachoSoto (@NachoSoto)Paywalls
: fix crash when computing localization with duplicate packages (Paywalls
: fix crash when computing localization with duplicate packages #2958) via NachoSoto (@NachoSoto)Paywalls
: UIKitPaywallViewController
(Paywalls
: UIKitPaywallViewController
#2934) via NachoSoto (@NachoSoto)Paywalls
:presentPaywallIfNecessary
->presentPaywallIfNeeded
(Paywalls
:presentPaywallIfNecessary
->presentPaywallIfNeeded
#2953) via NachoSoto (@NachoSoto)Paywalls
: added support for custom and lifetime products (Paywalls
: added support for custom and lifetime products #2941) via NachoSoto (@NachoSoto)Paywalls
: changedSamplePaywallsList
to work offline (Paywalls
: changedSamplePaywallsList
to work offline #2937) via NachoSoto (@NachoSoto)Paywalls
: fixed header image mask on first template (Paywalls
: fixed header image mask on first template #2936) via NachoSoto (@NachoSoto)Paywalls
: removedmode
parameter frompresentPaywallIfNecessary
(Paywalls
: removedmode
parameter frompresentPaywallIfNecessary
#2940) via NachoSoto (@NachoSoto)Paywalls
: improvedRemoteImage
error layout (Paywalls
: improvedRemoteImage
error layout #2939) via NachoSoto (@NachoSoto)Paywalls
: added default close button when usingpresentPaywallIfNecessary
(Paywalls
: added default close button when usingpresentPaywallIfNecessary
#2935) via NachoSoto (@NachoSoto)Paywalls
: added ability to preview templates in a.sheet
(Paywalls
: added ability to preview templates in a.sheet
#2938) via NachoSoto (@NachoSoto)Paywalls
: avoid recomputing variableRegex
(Paywalls
: avoid recomputing variableRegex
#2944) via NachoSoto (@NachoSoto)Paywalls
: improvedFooterView
scaling (Paywalls
: improvedFooterView
scaling #2948) via NachoSoto (@NachoSoto)Paywalls
: added ability to calculate and localize subscription discounts (Paywalls
: added ability to calculate and localize subscription discounts #2943) via NachoSoto (@NachoSoto)Offering
: improved description (Offering
: improved description #2912) via NachoSoto (@NachoSoto)Paywalls
: fixedFooterView
color in template 1 (Paywalls
: fixedFooterView
color in template 1 #2951) via NachoSoto (@NachoSoto)Paywalls
: fixedView.scrollableIfNecessary
(Paywalls
: fixedView.scrollableIfNecessary
#2947) via NachoSoto (@NachoSoto)Paywalls
: improvedIntroEligibilityStateView
to avoid layout changes (Paywalls
: improvedIntroEligibilityStateView
to avoid layout changes #2946) via NachoSoto (@NachoSoto)Paywalls
: updated offerings snapshot with new asset base URL (Paywalls
: updated offerings snapshot with new asset base URL #2950) via NachoSoto (@NachoSoto)Paywalls
: extractedTemplateBackgroundImageView
(Paywalls
: extractedTemplateBackgroundImageView
#2945) via NachoSoto (@NachoSoto)Paywalls
: more polish from design feedback (Paywalls
: more polish from design feedback #2932) via NachoSoto (@NachoSoto)Paywalls
: more unit tests for purchasing state (Paywalls
: more unit tests for purchasing state #2931) via NachoSoto (@NachoSoto)Paywalls
: new.onPurchaseCompleted
modifier (Paywalls
: new.onPurchaseCompleted
modifier #2930) via NachoSoto (@NachoSoto)Paywalls
: fixedLoadingPaywallView
displaying a progress view (Paywalls
: fixedLoadingPaywallView
displaying a progress view #2929) via NachoSoto (@NachoSoto)Paywalls
: added default template toSamplePaywallsList
(Paywalls
: added default template toSamplePaywallsList
#2928) via NachoSoto (@NachoSoto)Paywalls
: added a few more logs (Paywalls
: added a few more logs #2927) via NachoSoto (@NachoSoto)Paywalls
added individual previews for templates (Paywalls
added individual previews for templates #2924) via NachoSoto (@NachoSoto)Paywalls
: improved default paywall configuration (Paywalls
: improved default paywall configuration #2926) via NachoSoto (@NachoSoto)Paywalls
: moved purchasing state toPurchaseHandler
(Paywalls
: moved purchasing state toPurchaseHandler
#2923) via NachoSoto (@NachoSoto)Paywalls
: pre-warm intro eligibility in background thread (Paywalls
: pre-warm intro eligibility in background thread #2925) via NachoSoto (@NachoSoto) via NachoSoto (@NachoSoto)Paywalls
: improved template accessibility support (Paywalls
: improved template accessibility support #2920) via NachoSoto (@NachoSoto)Paywalls
: some basic polish from design feedback (Paywalls
: some basic polish from design feedback #2917) via NachoSoto (@NachoSoto)Paywalls
: addedOfferingsList
to preview all paywalls (Paywalls
: addedOfferingsList
to preview all paywalls #2916) via NachoSoto (@NachoSoto)Paywalls
: fixed tappable area for a couple of buttons (Paywalls
: fixed tappable area for a couple of buttons #2915) via NachoSoto (@NachoSoto)Paywalls
: newtext1
andtext2
colors (Paywalls
: newtext1
andtext2
colors #2903) via NachoSoto (@NachoSoto)Paywalls
: updated multi-package bold template design (Paywalls
: updated multi-package bold template design #2908) via NachoSoto (@NachoSoto)Paywalls
: added sample paywalls toSimpleApp
(Paywalls
: added sample paywalls toSimpleApp
#2907) via NachoSoto (@NachoSoto)Paywalls
: one package with features template (Paywalls
: one package with features template #2902) via NachoSoto (@NachoSoto)Paywalls
: initial support for icons (Paywalls
: initial support for icons #2882) via NachoSoto (@NachoSoto)Paywalls
: extracted intro eligibility out of templates (Paywalls
: extracted intro eligibility out of templates #2901) via NachoSoto (@NachoSoto)Paywalls
: changedsubtitle
to be optional (Paywalls
: changedsubtitle
to be optional #2900) via NachoSoto (@NachoSoto)Paywalls
: added "features" toLocalizedConfiguration
(Paywalls
: added "features" toLocalizedConfiguration
#2899) via NachoSoto (@NachoSoto)Paywalls
: fixed{{ total_price_and_per_month }}
(Paywalls
: fixed{{ total_price_and_per_month }}
#2881) via NachoSoto (@NachoSoto)Paywalls
: updated template names (Paywalls
: updated template names #2878) via NachoSoto (@NachoSoto)Paywalls
: added accent colors (Paywalls
: added accent colors #2883) via NachoSoto (@NachoSoto)Paywalls
: changed images representation to an object (Paywalls
: changed images representation to an object #2875) via NachoSoto (@NachoSoto)Paywalls
: addedofferName
parameter (Paywalls
: addedofferName
parameter #2877) via NachoSoto (@NachoSoto)Paywalls
: new{{ period }}
variable (Paywalls
: new{{ period }}
variable #2876) via NachoSoto (@NachoSoto)Paywalls
: disabledPaywallViewMode
s for now (Paywalls
: disabledPaywallViewMode
s for now #2874) via NachoSoto (@NachoSoto)Paywalls
: added newdefaultPackage
configuration (Paywalls
: added newdefaultPackage
configuration #2871) via NachoSoto (@NachoSoto)Paywalls
: fixed tests on CI (Paywalls
: fixed tests on CI #2872) via NachoSoto (@NachoSoto)Paywalls
: pre-fetch intro eligibility for paywalls (Paywalls
: pre-fetch intro eligibility for paywalls #2860) via NachoSoto (@NachoSoto)Paywalls
: clean up the error view (Paywalls
: clean up the error view #2873) via Andy Boedo (@aboedo)Paywalls
: new API for easily displayingPaywallView
with just one line (Paywalls
: new API for easily displayingPaywallView
with just one line #2869) via NachoSoto (@NachoSoto)Paywalls
: handle missing paywalls gracefully (Paywalls
: handle missing paywalls gracefully #2855) via NachoSoto (@NachoSoto)Paywalls
: temporarily disable non-fullscreenPaywallView
s (Paywalls
: temporarily disable non-fullscreenPaywallView
s #2868) via NachoSoto (@NachoSoto)Paywalls
: added test to ensure package selection maintains order (Paywalls
: added test to ensure package selection maintains order #2853) via NachoSoto (@NachoSoto)Paywalls
: added newblurredBackgroundImage
configuration (Paywalls
: added newblurredBackgroundImage
configuration #2852) via NachoSoto (@NachoSoto)Paywalls
: fuzzyLocale
lookups (Paywalls
: fuzzyLocale
lookups #2847) via NachoSoto (@NachoSoto)Paywalls
: basic localization support (Paywalls
: basic localization support #2851) via NachoSoto (@NachoSoto)Paywalls
: addedFooterView
(Paywalls
: addedFooterView
#2850 via NachoSoto (@NachoSoto)Paywalls
: multi-package template (Paywalls
: multi-package template #2840) via NachoSoto (@NachoSoto)Paywalls
: disable animations during unit tests (Paywalls
: disable animations during unit tests #2848) via NachoSoto (@NachoSoto)Paywalls
:TrialOrIntroEligibilityChecker.eligibility(for packages:)
(Paywalls
:TrialOrIntroEligibilityChecker.eligibility(for packages:)
#2846) via NachoSoto (@NachoSoto)Paywalls
: added newtotal_price_and_per_month
variable (Paywalls
: added newtotal_price_and_per_month
variable #2845) via NachoSoto (@NachoSoto)Paywalls
: extractedPurchaseButton
(Paywalls
: extractedPurchaseButton
#2839) via NachoSoto (@NachoSoto)Paywalls
: extractedIntroEligibilityStateView
(Paywalls
: extractedIntroEligibilityStateView
#2837) via NachoSoto (@NachoSoto)Paywalls
: support for multiplePaywallViewMode
s (Paywalls
: support for multiplePaywallViewMode
s #2834) via NachoSoto (@NachoSoto)Paywalls
: add support for multiple images in template configuration (Paywalls
: add support for multiple images in template configuration #2832) via NachoSoto (@NachoSoto)Paywalls
: extracted configuration processing into a newTemplateViewConfiguration
(Paywalls
: extracted configuration processing into a newTemplateViewConfiguration
#2830) via NachoSoto (@NachoSoto)Paywalls
: disablemacOS
/macCatalyst
/watchOS
for now (Paywalls
: disablemacOS
/macCatalyst
/watchOS
for now #2821) via NachoSoto (@NachoSoto)Paywalls
: using new color information in template (Paywalls
: using new color information in template #2823) via NachoSoto (@NachoSoto)Paywalls
: set up CI tests and API Tester (Paywalls
: set up CI tests and API Tester #2816) via NachoSoto (@NachoSoto)Paywalls
: added support for decoding colors (Paywalls
: added support for decoding colors #2822) via NachoSoto (@NachoSoto)Paywalls
: ignore empty strings inLocalizedConfiguration
(PaywallData
: ignore empty strings inLocalizedConfiguration
#2818) via NachoSoto (@NachoSoto)Paywalls
: updatedPaywallData
field names (Paywalls
: updatedPaywallData
field names #2817) via NachoSoto (@NachoSoto)Paywalls
: added support for purchasing (Paywalls
: added support for purchasing #2812) via NachoSoto (@NachoSoto)Paywalls
: added tests forPackageType
filtering (Paywalls
: added tests forPackageType
filtering #2810) via NachoSoto (@NachoSoto)Paywalls
: changed variable handling to use SwiftRegex
(Paywalls
: changed variable handling to use SwiftRegex
#2811) via Andy Boedo (@aboedo)Paywalls
: addedprice
variable (Paywalls
: addedprice
variable #2809) via NachoSoto (@NachoSoto)Paywalls
: determine intro eligibility (Paywalls
: determine intro eligibility #2808) via NachoSoto (@NachoSoto)Paywalls
: added header image to configuration (Paywalls
: added header image to configuration #2800) via NachoSoto (@NachoSoto)Paywalls
: addedpackages
to configuration (Paywalls
: addedpackages
to configuration #2798) via NachoSoto (@NachoSoto)Paywalls
: add support for displayingStoreProductDiscount
s (Paywalls
: add support for displayingStoreProductDiscount
s #2796) via NachoSoto (@NachoSoto)Paywalls
: added support for variables (Paywalls
: added support for variables #2793) via NachoSoto (@NachoSoto)Paywalls
: usingPaywallData
and setting up basic template loading (Paywalls
: usingPaywallData
and setting up basic template loading #2781) via NachoSoto (@NachoSoto)Paywalls
: initial configuration types (Paywalls
: initial configuration types #2780) via NachoSoto (@NachoSoto)Paywalls
: initialRevenueCatUI
target setup (Paywalls
: initialRevenueCatUI
target setup #2776) via NachoSoto (@NachoSoto)