Skip to main content

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
  • 774 Changelog entries
featured-image
featured-image

Flutter 6.0.0

RevenueCat Flutter SDK v6 is here!! 😻 This latest release updates the SDK to use BillingClient 6 in Android. This version of BillingClient brings little change compared with BillingClient 5 which brought an entire new subscription model which resulted in large changes across the entire SDK. The only modification at the API level involves replacing "ProrationMode" with "ReplacementMode". The specific replacement modes remain unchanged. If your app doesn't currently use DEFERRED replacement modes, then you should be safe to upgrade to this version without changes in behavior. If your app supports product changes using DEFERRED replacement mode, then you can either stick with the previous major version until support for DEFERRED is re-introduced in this major version, or you can remove DEFERRED replacement options from your app. If you are using the SDK in observer mode, you should only use v6 in Android if you're using BillingClient 6. See the Android Native - 6.x to 7.x Migration for more details. If you come from an older version of the RevenueCat SDK, see Android Native - 5.x to 6.x Migration for a more thorough explanation of the new Google subscription model announced with BillingClient 5 and how to take advantage of it. Bumped minimum Android SDK version RevenueCat SDK v7 bumps minimum Android SDK version from Android 4.0 (API level 16) to Android 4.4 (API level 19). Support for InApp Messages We've added new APIs to support InApp messages both in Android and iOS. You can read more about: Google Play InApp Messages which will show users a snackbar message during grace period and account hold once per day and provide them an opportunity to fix their payment without leaving the app. App Store InApp messages which will show a modal during grace period once per subscription. InApp Messages are shown by default in both platforms. If you want to disable this behaviour during configuration of the RevenueCat SDK, setup the shouldShowInAppMessagesAutomatically property during configuration to false: PurchasesConfiguration configuration = PurchasesConfiguration("api_key"); configuration.shouldShowInAppMessagesAutomatically = false; Purchases.configure(configuration); Dependency Updates [AUTOMATIC BUMP] Updates purchases-hybrid-common to 7.0.0 (#828) via RevenueCat Git Bot (@RCGitBot) Android 7.0.0 iOS 4.27.0 iOS 4.26.2 To view new release, visit https://github.com/RevenueCat/purchases-flutter/releases/tag/6.0.0

featured-image

Unity 6.0.0

RevenueCat Unity SDK v6 is here!! 😻 This latest release updates the SDK to use BillingClient 6 in Android. This version of BillingClient brings little change compared with BillingClient 5 which brought an entire new subscription model which resulted in large changes across the entire SDK. The only modification at the API level involves replacing "ProrationMode" with "ReplacementMode". The specific replacement modes remain unchanged. If your app doesn't currently use DEFERRED replacement modes, then you should be safe to upgrade to this version without changes in behavior. If your app supports product changes using DEFERRED replacement mode, then you can either stick with the previous major version until support for DEFERRED is re-introduced in this major version, or you can remove DEFERRED replacement options from your app. If you are using the SDK in observer mode, you should only use v6 in Android if you're using BillingClient 6. See the Android Native - 6.x to 7.x Migration for more details. If you come from an older version of the RevenueCat SDK, see Android Native - 5.x to 6.x Migration for a more thorough explanation of the new Google subscription model announced with BillingClient 5 and how to take advantage of it. Bumped minimum Android SDK version RevenueCat SDK v7 bumps minimum Android SDK version from Android 4.0 (API level 16) to Android 4.4 (API level 19). Support for InApp Messages We've added new APIs to support InApp messages both in Android and iOS. You can read more about: Google Play InApp Messages which will show users a snackbar message during grace period and account hold once per day and provide them an opportunity to fix their payment without leaving the app. App Store InApp messages which will show a modal during grace period once per subscription. InApp Messages are shown by default in both platforms. If you want to disable this behaviour during configuration of the RevenueCat SDK, setup the shouldShowInAppMessagesAutomatically property during configuration to false: Purchases.PurchasesConfiguration.Builder builder = Purchases.PurchasesConfiguration.Builder.Init("api_key"); Purchases.PurchasesConfiguration purchasesConfiguration = builder.SetShouldShowInAppMessagesAutomatically(false) .Build(); purchases.Configure(purchasesConfiguration); New Features Add missing IntroEligibilityStatusNoIntroOfferExists (#335) via NachoSoto (@NachoSoto) Dependency Updates [AUTOMATIC BUMP] Updates purchases-hybrid-common to 7.0.0 (#336) via RevenueCat Git Bot (@RCGitBot) Android 7.0.0 iOS 4.27.0 iOS 4.26.2 To view new release, visit https://github.com/RevenueCat/purchases-unity/releases/tag/6.0.0

featured-image

Cordova 5.0.0

RevenueCat Cordova SDK v5 is here!! 😻 This latest release updates the SDK to use BillingClient 6 in Android. This version of BillingClient brings little change compared with BillingClient 5 which brought an entire new subscription model which resulted in large changes across the entire SDK. The only modification at the API level involves replacing "ProrationMode" with "ReplacementMode". The specific replacement modes remain unchanged. If your app doesn't currently use DEFERRED replacement modes, then you should be safe to upgrade to this version without changes in behavior. If your app supports product changes using DEFERRED replacement mode, then you can either stick with the previous major version until support for DEFERRED is re-introduced in this major version, or you can remove DEFERRED replacement options from your app. If you are using the SDK in observer mode, you should only use v5 in Android if you're using BillingClient 6. See the Android Native - 6.x to 7.x Migration for more details. If you come from an older version of the RevenueCat SDK, see Android Native - 5.x to 6.x Migration for a more thorough explanation of the new Google subscription model announced with BillingClient 5 and how to take advantage of it. Bumped minimum Android SDK version RevenueCat SDK v5 bumps minimum Android SDK version from Android 4.0 (API level 16) to Android 4.4 (API level 19). Support for InApp Messages We've added new APIs to support InApp messages both in Android and iOS. You can read more about: Google Play InApp Messages which will show users a snackbar message during grace period and account hold once per day and provide them an opportunity to fix their payment without leaving the app. App Store InApp messages which will show a modal during grace period once per subscription. InApp Messages are shown by default in both platforms. If you want to disable this behaviour during configuration of the RevenueCat SDK, setup the shouldShowInAppMessagesAutomatically property during configuration to false: Purchases.configureWith({ apiKey, appUserID, observerMode, userDefaultsSuiteName, useAmazon, shouldShowInAppMessagesAutomatically }); Dependency Updates [AUTOMATIC BUMP] Updates purchases-hybrid-common to 7.0.0 (#429) via RevenueCat Git Bot (@RCGitBot) Android 7.0.0 iOS 4.27.0 iOS 4.26.2 To view new release, visit https://github.com/RevenueCat/cordova-plugin-purchases/releases/tag/5.0.0

featured-image

React Native 7.0.0

RevenueCat React Native SDK v7 is here!! 😻 This latest release updates the SDK to use BillingClient 6 in Android. This version of BillingClient brings little change compared with BillingClient 5 which brought an entire new subscription model which resulted in large changes across the entire SDK. The only modification at the API level involves replacing "ProrationMode" with "ReplacementMode". The specific replacement modes remain unchanged. If your app doesn't currently use DEFERRED replacement modes, then you should be safe to upgrade to this version without changes in behavior. If your app supports product changes using DEFERRED replacement mode, then you can either stick with the previous major version until support for DEFERRED is re-introduced in this major version, or you can remove DEFERRED replacement options from your app. If you are using the SDK in observer mode, you should only use v7 in Android if you're using BillingClient 6. See the Android Native - 6.x to 7.x Migration for more details. If you come from an older version of the RevenueCat SDK, see Android Native - 5.x to 6.x Migration for a more thorough explanation of the new Google subscription model announced with BillingClient 5 and how to take advantage of it. Bumped minimum Android SDK version RevenueCat SDK v7 bumps minimum Android SDK version from Android 4.0 (API level 16) to Android 4.4 (API level 19). Support for InApp Messages We've added new APIs to support InApp messages both in Android and iOS. You can read more about: Google Play InApp Messages which will show users a snackbar message during grace period and account hold once per day and provide them an opportunity to fix their payment without leaving the app. App Store InApp messages which will show a modal during grace period once per subscription. InApp Messages are shown by default in both platforms. If you want to disable this behaviour during configuration of the RevenueCat SDK, setup the shouldShowInAppMessagesAutomatically property during configuration to false: Purchases.configure({ apiKey, appUserID, observerMode, userDefaultsSuiteName, usesStoreKit2IfAvailable, useAmazon, shouldShowInAppMessagesAutomatically }); Dependency Updates [AUTOMATIC BUMP] Updates purchases-hybrid-common to 7.0.0 and temporarily removes DEFERRED proration mode (#747) via RevenueCat Git Bot (@RCGitBot) Android 7.0.0 iOS 4.27.0 iOS 4.26.2 Bump cocoapods from 1.12.1 to 1.13.0 (#740) via dependabot[bot] (@dependabot[bot]) To view new release, visit https://github.com/RevenueCat/react-native-purchases/releases/tag/7.0.0

featured-image
featured-image
featured-image
featured-image

iOS 4.26.2

RevenueCatUI Paywalls: polished template 4 layout math (#3249) via NachoSoto (@NachoSoto) Paywalls: improved template 1 iPad layout and iOS 15 fix (#3241) via NachoSoto (@NachoSoto) Paywalls: polished PurchaseButton on iPad (#3240) via NachoSoto (@NachoSoto) Dependency Updates Bump cocoapods from 1.12.1 to 1.13.0 (#3251) via dependabot[bot] (@dependabot[bot]) Other Changes Paywalls: added previews for IntroEligibilityStateView (#3248) via NachoSoto (@NachoSoto) debugRevenueCatOverlay: added list of active entitlements (#3247) via NachoSoto (@NachoSoto) PaywallsTester: allow easy testing of paywall modes for All Offerings tab (#3254) via Andy Boedo (@aboedo) PaywallsTester: allow resizing on macOS (#3258) via Andy Boedo (@aboedo) PaywallsTester: replace opening default paywall automatically with button (#3256) via Andy Boedo (@aboedo) PaywallsTester: fix StoreKit Configuration scheme (#3257) via Andy Boedo (@aboedo) PaywallsTester: improve navigation on macOS and iPadOS (#3255) via Andy Boedo (@aboedo) PrivacyInfo.xcprivacy: changed NSPrivacyCollectedDataTypePurchaseHistory to false (#3242) via NachoSoto (@NachoSoto) Paywalls: changed PaywallsTester to allow not configuring API key (#3244) via NachoSoto (@NachoSoto) Paywalls: renamed SimpleApp to PaywallsTester (#3243) via NachoSoto (@NachoSoto) Make revisionID private in PaywallData+Default (#3239) via Cesar de la Vega (@vegaro) To view new release, visit https://github.com/RevenueCat/purchases-ios/releases/tag/4.26.2

featured-image

Android 7.0.0

RevenueCat Android SDK v7 is here!! 😻 This latest release updates the SDK to use BillingClient 6. This version of BillingClient brings little change compared with BillingClient 5 which brought an entire new subscription model which resulted in large changes across the entire SDK. The only modification at the API level involves replacing "ProrationMode" with "ReplacementMode". The specific replacement modes remain unchanged. If your app doesn't currently use DEFERRED replacement modes, then you should be safe to upgrade to this version without changes in behavior. If your app supports product changes using DEFERRED replacement mode, then you can either stick with the previous major version until support for DEFERRED is re-introduced in this major version, or you can remove DEFERRED replacement options from your app. See the Android Native - 6.x to 7.x Migration for more details. If you come from an older version of the RevenueCat SDK, see Android Native - 5.x to 6.x Migration for a more thorough explanation of the new Google subscription model announced with BillingClient 5 and how to take advantage of it. Bumped minimum Android SDK version RevenueCat SDK v7 bumps minimum Android SDK version from Android 4.0 (API level 14) to Android 4.4 (API level 19). Support for Google Play InApp Messages We've added support for Google Play InApp Messages which will show users a snackbar message during grace period and account hold once per day and provide them an opportunity to fix their payment without leaving the app. InApp Messages are shown by default. If you want to disable this behaviour during configuration of the RevenueCat SDK: Purchases.configure( PurchasesConfiguration.Builder(applicationContext, apiKey) .showInAppMessagesAutomatically(false) .build() ) Bugfixes Add awaitRestore to customEntitlementComputation library (#1275) via Toni Rico (@tonidero) To view new release, visit https://github.com/RevenueCat/purchases-android/releases/tag/7.0.0

featured-image
featured-image
featured-image
featured-image
featured-image

iOS 4.26.0

New Features ✨ Introducing RevenueCatUI 📱 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: Create a Paywall on the Dashboard for the Offering you intend to serve to your customers Add the RevenueCatUI SPM dependency to your project 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", purchaseCompleted: { customerInfo in print("Purchase completed: \(customerInfo)") }, restoreCompleted: { customerInfo in print("Purchases restored: \(customerInfo)") } ) } } You can find more information in our documentation. List of changes * NachoSoto: `Paywalls`: renamed `PaywallEvent.view` to `.impression` (#3212) * NachoSoto: `Paywalls`: loading indicator for in-progress purchases (#3217) * NachoSoto: `Paywalls`: fixed template 4 bottom padding (#3211) * NachoSoto: `Paywalls`: only pre-warm images/intro-eligibility for `Offerings.current` (#3210) * NachoSoto: `Paywalls`: fixed mock intro eligibility on snapshot tests (#3205) * NachoSoto: `Paywalls`: fixed SimpleApp release build (#3203) * NachoSoto: `Paywalls`: improved `DebugErrorView` layout (#3204) * NachoSoto: `Paywalls`: refactored `PurchaseHandler` extracting protocol (#3196) * NachoSoto: `Paywalls`: automatically flush events (#3177) * NachoSoto: `Paywalls`: fixed `TemplateBackgroundImageView` aspect ratio (#3201) * NachoSoto: `Paywalls`: fixed broken layout on template 4 (#3202) * NachoSoto: `Paywalls`: events unit and integration tests (#3169) * NachoSoto: `Paywalls`: send events to `Purchases` (#3164) * NachoSoto: `Paywalls`: convert empty images into `nil` (#3195) * NachoSoto: `Paywalls`: new `onRestoreCompleted` handler (#3190) * NachoSoto: `Paywalls`: fixed `IntroEligibilityViewModel` data lifetime (#3194) * NachoSoto: `Paywalls`: test plan for running non-snapshot tests (#3188) * NachoSoto: `Paywalls`: polish template 4 (#3183) * NachoSoto: `Paywalls`: fixed data flow resulting in multiple `PurchaseHandler` instances (#3187) * Cesar de la Vega: `Paywalls`: update `blurred_background_image` key in `PaywallData` test fixture (#3186) * NachoSoto: `Paywalls`: added `Purchases.track(paywallEvent:)` (#3160) * NachoSoto: `Paywalls`: don't apply dark appearance with no dark mode colors (#3184) * NachoSoto: `Paywalls`: fixed template 2 + `.condensedFooter` + iPad (#3185) * NachoSoto: `Paywalls`: new `{{ sub_duration_in_months }}` variable (#3173) * NachoSoto: `Paywalls`: created `PaywallEventsManager` (#3159) * NachoSoto: `Paywalls`: implemented `PostPaywallEventsOperation` (#3158) * NachoSoto: `Paywalls`: new `{{ sub_relative_discount }}` variable (#3131) * Charlie Chapman: `Paywalls`: improved `FooterView` (#3171) * NachoSoto: `Paywalls`: fixed `FooterView` horizontal centering (#3172) * NachoSoto: `Paywalls`: created `PaywallEventStore` (#3157) * NachoSoto: `Paywalls`: add `PaywallEvent` model (#3156) * NachoSoto: `Paywalls`: add `PaywallData.revision` (#3155) * NachoSoto: `Paywalls`: support fuzzy-Locale search in `iOS 15` (#3162) * NachoSoto: `PaywallData`: added `@NonEmptyString` to `subtitle` and `offerName` (#3150) * NachoSoto: `Paywalls`: add paywall for Load Shedder integration tests (#3151) * NachoSoto: `Paywalls`: fixed error view being displayed on release builds (#3141) * NachoSoto: `Paywalls`: improved `{{ total_price_and_per_month }}` to include period (#3136) * NachoSoto: `Paywalls`: `{{ price_per_period }}` now takes `SubscriptionPeriod.value` into account (#3133) * NachoSoto: `Paywalls`: add Arabic to SimpleApp for testing (#3132) * NachoSoto: `Paywalls`: update snapshot generation with new separate git repo (#3116) * NachoSoto: `Paywalls`: add support for CTA button gradients (#3121) * NachoSoto: `Paywalls`: template 5 (#3095) * NachoSoto: `Paywalls`: replaced submodule with `gitignore`d reference (#3125) * NachoSoto: `Catalyst`: fixed a couple of Catalyst build warnings (#3120) * NachoSoto: `Paywalls`: reference test snapshots from submodule (#3115) * NachoSoto: `Paywalls`: removed `presentedPaywallViewMode` (#3109) * NachoSoto: `Paywalls`: remove duplicate `RevenueCat` scheme to fix Carthage (#3105) * NachoSoto: `Paywalls`: fixed iOS 12 build (#3104) * NachoSoto: `Paywalls`: fixed template 2 inconsistent spacing (#3091) * NachoSoto: `Paywalls`: improved test custom paywall (#3089) * NachoSoto: `Paywalls`: avoid warming up cache multiple times (#3068) * NachoSoto: `Paywalls`: added all localization (#3080) * NachoSoto: `Paywalls`: temporarily disable `PaywallTemplate.template4` (#3088) * NachoSoto: `Paywalls`: enabled `Catalyst` support (#3087) * NachoSoto: `Paywalls`: iPad polish (#3061) * NachoSoto: `Paywalls`: added MIT license to all headers (#3084) * NachoSoto: `Paywalls`: improved unselected package background color (#3079) * NachoSoto: `Paywalls`: handle already purchased state (#3046) * NachoSoto: `Paywalls`: only dismiss `PaywallView` when explicitly presenting it with `.presentPaywallIfNeeded` (#3075) * NachoSoto: `Paywalls`: add support for generating snapshots on CI (#3055) * NachoSoto: `Paywalls`: removed unnecessary `PaywallFooterView` (#3064) * Josh Holtz: `Paywalls`: new `PaywallFooterView` to replace `modes` (#3051) * Josh Holtz: `Paywalls`: rename card to footer (#3049) * NachoSoto: `Paywalls`: changed `total_price_and_per_month` to include period (#3044) * NachoSoto: `Paywalls`: internal documentation for implementing templates (#3053) * NachoSoto: `Paywalls`: finished `iOS 15` support (#3043) * NachoSoto: `Paywalls`: validate `PaywallData` to ensure displayed data is always correct (#3019) * NachoSoto: `Paywalls`: fixed `total_price_and_per_month` for custom monthly packages (#3027) * NachoSoto: `Paywalls`: tweaking colors on template 2&3 (#3011) * NachoSoto: `Paywalls`: changed snapshots to scale 1 (#3016) * NachoSoto: `Paywalls`: replaced `defaultLocale` with `preferredLocales` (#3003) * NachoSoto: `Paywalls`: improved `PaywallDisplayMode.condensedCard` layout (#3001) * NachoSoto: `Paywalls`: `.card` and `.condensedCard` modes (#2995) * NachoSoto: `Paywalls`: prevent multiple concurrent purchases (#2991) * NachoSoto: `Paywalls`: improved variable warning (#2984) * NachoSoto: `Paywalls`: fixed horizontal padding on template 1 (#2987) * NachoSoto: `Paywalls`: changed `FooterView` to always use `text1` color (#2992) * NachoSoto: `Paywalls`: retry test failures (#2985) * NachoSoto: `Paywalls`: send presented `PaywallViewMode` with purchases (#2859) * NachoSoto: `Paywalls`: added support for custom fonts (#2988) * NachoSoto: `Paywalls`: improved template 2 unselected packages (#2982) * Josh Holtz: `Paywalls`: fix template 2 selected text offer details color (#2975) * NachoSoto: `Paywalls`: warm-up image cache (#2978) * NachoSoto: `Paywalls`: extracted `PaywallCacheWarming` (#2977) * NachoSoto: `Paywalls`: fixed color in template 3 (#2980) * NachoSoto: `Paywalls`: improved default template (#2973) * NachoSoto: `Paywalls`: added links to documentation (#2974) * NachoSoto: `Paywalls`: updated template names (#2971) * NachoSoto: `Paywalls`: updated variable names (#2970) * NachoSoto: `Paywalls`: added JSON debug screen to `debugRevenueCatOverlay` (#2972) * NachoSoto: `Paywalls`: multi-package horizontal template (#2949) * NachoSoto: `Paywalls`: fixed template 3 icon aspect ratio (#2969) * NachoSoto: `Paywalls`: iOS 17 tests on CI (#2955) * NachoSoto: `Paywalls`: deploy `debug` sample app (#2966) * NachoSoto: `Paywalls`: sort offerings list in sample app (#2965) * NachoSoto: `Paywalls`: initial iOS 15 support (#2933) * NachoSoto: `Paywalls`: changed default `PaywallData` to display available packages (#2964) * NachoSoto: `Paywalls`: changed `offerDetails` to be optional (#2963) * NachoSoto: `Paywalls`: markdown support (#2961) * NachoSoto: `Paywalls`: updated icon set to match frontend (#2962) * NachoSoto: `Paywalls`: added support for `PackageType.custom` (#2959) * NachoSoto: `Paywalls`: fixed `tvOS` compilation by making it explicitly unavailable (#2956) * NachoSoto: `Paywalls`: fix crash when computing localization with duplicate packages (#2958) * NachoSoto: `Paywalls`: UIKit `PaywallViewController` (#2934) * NachoSoto: `Paywalls`: `presentPaywallIfNecessary` -> `presentPaywallIfNeeded` (#2953) * NachoSoto: `Paywalls`: added support for custom and lifetime products (#2941) * NachoSoto: `Paywalls`: changed `SamplePaywallsList` to work offline (#2937) * NachoSoto: `Paywalls`: fixed header image mask on first template (#2936) * NachoSoto: `Paywalls`: new `subscription_duration` variable (#2942) * NachoSoto: `Paywalls`: removed `mode` parameter from `presentPaywallIfNecessary` (#2940) * NachoSoto: `Paywalls`: improved `RemoteImage` error layout (#2939) * NachoSoto: `Paywalls`: added default close button when using `presentPaywallIfNecessary` (#2935) * NachoSoto: `Paywalls`: added ability to preview templates in a `.sheet` (#2938) * NachoSoto: `Paywalls`: avoid recomputing variable `Regex` (#2944) * NachoSoto: `Paywalls`: improved `FooterView` scaling (#2948) * NachoSoto: `Paywalls`: added ability to calculate and localize subscription discounts (#2943) * NachoSoto: `Offering`: improved description (#2912) * NachoSoto: `Paywalls`: fixed `FooterView` color in template 1 (#2951) * NachoSoto: `Paywalls`: fixed `View.scrollableIfNecessary` (#2947) * NachoSoto: `Paywalls`: improved `IntroEligibilityStateView` to avoid layout changes (#2946) * NachoSoto: `Paywalls`: updated offerings snapshot with new asset base URL (#2950) * NachoSoto: `Paywalls`: extracted `TemplateBackgroundImageView` (#2945) * NachoSoto: `Paywalls`: more polish from design feedback (#2932) * NachoSoto: `Paywalls`: more unit tests for purchasing state (#2931) * NachoSoto: `Paywalls`: new `.onPurchaseCompleted` modifier (#2930) * NachoSoto: `Paywalls`: fixed `LoadingPaywallView` displaying a progress view (#2929) * NachoSoto: `Paywalls`: added default template to `SamplePaywallsList` (#2928) * NachoSoto: `Paywalls`: added a few more logs (#2927) * NachoSoto: `Paywalls` added individual previews for templates (#2924) * NachoSoto: `Paywalls`: improved default paywall configuration (#2926) * NachoSoto: `Paywalls`: moved purchasing state to `PurchaseHandler` (#2923) * NachoSoto: `Paywalls`: updated Integration Test snapshot (#2921) * NachoSoto: `Paywalls`: pre-warm intro eligibility in background thread (#2925) * NachoSoto: `Paywalls`: removed "couldn't find package" log (#2922) * NachoSoto: `Paywalls`: SimpleApp reads API key from Xcode Cloud environment (#2919) * NachoSoto: `Paywalls`: improved template accessibility support (#2920) * NachoSoto: `Paywalls`: work around SwiftUI bug to allow embedding `PaywallView` inside `NavigationStack` (#2918) * NachoSoto: `Paywalls`: some basic polish from design feedback (#2917) * NachoSoto: `Paywalls`: added `OfferingsList` to preview all paywalls (#2916) * NachoSoto: `Paywalls`: fixed tappable area for a couple of buttons (#2915) * NachoSoto: `Paywalls`: new `text1` and `text2` colors (#2903) * NachoSoto: `Paywalls`: updated multi-package bold template design (#2908) * NachoSoto: `Paywalls`: added sample paywalls to `SimpleApp` (#2907) * NachoSoto: `Paywalls`: one package with features template (#2902) * NachoSoto: `Paywalls`: initial support for icons (#2882) * NachoSoto: `Paywalls`: extracted intro eligibility out of templates (#2901) * NachoSoto: `Paywalls`: changed `subtitle` to be optional (#2900) * NachoSoto: `Paywalls`: added "features" to `LocalizedConfiguration` (#2899) * NachoSoto: `Paywalls`: fixed `{{ total_price_and_per_month }}` (#2881) * NachoSoto: `Paywalls`: updated template names (#2878) * NachoSoto: `Paywalls`: added accent colors (#2883) * NachoSoto: `Paywalls`: changed images representation to an object (#2875) * NachoSoto: `Paywalls`: added `offerName` parameter (#2877) * NachoSoto: `Paywalls`: new `{{ period }}` variable (#2876) * NachoSoto: `Paywalls`: disabled `PaywallViewMode`s for now (#2874) * NachoSoto: `Paywalls`: added new `defaultPackage` configuration (#2871) * NachoSoto: `Paywalls`: fixed tests on CI (#2872) * NachoSoto: `Paywalls`: pre-fetch intro eligibility for paywalls (#2860) * Andy Boedo: `Paywalls`: clean up the error view (#2873) * NachoSoto: `Paywalls`: new API for easily displaying `PaywallView` with just one line (#2869) * NachoSoto: `Paywalls`: handle missing paywalls gracefully (#2855) * NachoSoto: `Paywalls`: temporarily disable non-fullscreen `PaywallView`s (#2868) * NachoSoto: `Paywalls`: added test to ensure package selection maintains order (#2853) * NachoSoto: `Paywalls`: added new `blurredBackgroundImage` configuration (#2852) * NachoSoto: `Paywalls`: fuzzy `Locale` lookups (#2847) * NachoSoto: `Paywalls`: basic localization support (#2851) * NachoSoto: `Paywalls`: added `FooterView` (#2850) * NachoSoto: `Paywalls`: multi-package template (#2840) * NachoSoto: `Paywalls`: disable animations during unit tests (#2848) * NachoSoto: `Paywalls`: `TrialOrIntroEligibilityChecker.eligibility(for packages:)` (#2846) * NachoSoto: `Paywalls`: added new `total_price_and_per_month` variable (#2845) * NachoSoto: `Paywalls`: extracted `PurchaseButton` (#2839) * NachoSoto: `Paywalls`: extracted `IntroEligibilityStateView` (#2837) * NachoSoto: `Paywalls`: support for multiple `PaywallViewMode`s (#2834) * NachoSoto: `Paywalls`: add support for multiple images in template configuration (#2832) * NachoSoto: `Paywalls`: extracted configuration processing into a new `TemplateViewConfiguration` (#2830) * NachoSoto: `Paywalls`: improved support for dynamic type with snapshots (#2827) * NachoSoto: `Paywalls`: disable `macOS`/`macCatalyst`/`watchOS` for now (#2821) * NachoSoto: `Paywalls`: using new color information in template (#2823) * NachoSoto: `Paywalls`: set up CI tests and API Tester (#2816) * NachoSoto: `Paywalls`: added support for decoding colors (#2822) * NachoSoto: `Paywalls`: ignore empty strings in `LocalizedConfiguration` (#2818) * NachoSoto: `Paywalls`: updated `PaywallData` field names (#2817) * NachoSoto: `Paywalls`: added support for purchasing (#2812) * NachoSoto: `Paywalls`: added tests for `PackageType` filtering (#2810) * Andy Boedo: `Paywalls`: changed variable handling to use Swift `Regex` (#2811) * NachoSoto: `Paywalls`: added `price` variable (#2809) * NachoSoto: `Paywalls`: determine intro eligibility (#2808) * NachoSoto: `Paywalls`: added header image to configuration (#2800) * NachoSoto: `Paywalls`: added `packages` to configuration (#2798) * NachoSoto: `Paywalls`: add support for displaying `StoreProductDiscount`s (#2796) * NachoSoto: `Paywalls`: added support for variables (#2793) * NachoSoto: `Paywalls`: using `PaywallData` and setting up basic template loading (#2781) * NachoSoto: `Paywalls`: initial configuration types (#2780) * NachoSoto: `Paywalls`: initial `RevenueCatUI` target setup (#2776) Other Changes Debug: add Offering metadata to debug screen (#3137) via NachoSoto (@NachoSoto) TestStoreProduct: new locale parameter (#3134) via NachoSoto (@NachoSoto) Integration Tests: fixed more flaky failures (#3218) via NachoSoto (@NachoSoto) To view new release, visit https://github.com/RevenueCat/purchases-ios/releases/tag/4.26.0

featured-image
featured-image
featured-image