Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[DO NOT MERGE] Release/4.26.0-beta.1 #3102

Closed
wants to merge 3 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
4.25.7
4.26.0-beta.1
181 changes: 174 additions & 7 deletions CHANGELOG.latest.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,174 @@
### Other Changes
* `Integration Tests`: test that `checkTrialOrIntroDiscountEligibility` makes no API requests (#3054) via NachoSoto (@NachoSoto)
* `visionOS`: changed CI job to Release (#3042) via NachoSoto (@NachoSoto)
* `StoreKit 2`: added warning to paywall constructors (#3045) via NachoSoto (@NachoSoto)
* `README`: added `visionOS` to list of supported platforms (#3052) via NachoSoto (@NachoSoto)
* `Tests`: added tests for `ClockType` (#3029) via NachoSoto (@NachoSoto)
* `HTTPClient`: also parse errors with `application/json;charset=utf8` (#3041) via NachoSoto (@NachoSoto)
### 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:

```swift
import RevenueCatUI
import SwiftUI

struct YourApp: View {

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

}
```

<details>

<summary>List of changes</summary>

* `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 `PaywallViewMode`s 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 `PaywallView`s (#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 `PaywallViewMode`s (#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 `StoreProductDiscount`s (#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)

</details>
Loading