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 Android Paywalls 🐾🧱
RevenueCat's Paywalls allow you 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 Android, simply:
Offering
you intend to serve to your customersRevenueCatUI
dependency to your project:You can find more information in our documentation.
List of changes
Paywalls
: Improve PaywallDialog look on tablets (Paywalls: Improve PaywallDialog look on tablets #1419) via Toni Rico (@tonidero)Paywalls
: disallow Markdown links in PurchaseButton (Paywalls
: disallow Markdown links inPurchaseButton
#1421) via NachoSoto (@NachoSoto)Paywalls
: implemented template 5 (Paywalls
: implemented template 5 #1412) via NachoSoto (@NachoSoto)Paywalls
: Fix wrong view model data after configuration changes (Paywalls: Fix wrong view model data after configuration changes #1417) via Toni Rico (@tonidero)Paywalls
: update template 4 colors (Paywalls
: update template 4 colors #1410) via NachoSoto (@NachoSoto)Paywalls
: Add bundled font to paywall tester (Paywalls: Add bundled font to paywall tester #1415) via Toni Rico (@tonidero)Paywalls
: Fix purchase button text flashing when changing selected package (Paywalls: Fix purchase button text flashing when changing selected package #1416) via Toni Rico (@tonidero)Paywalls
: support text3 and accent3 colors (Paywalls
: supporttext3
andaccent3
colors #1409) via NachoSoto (@NachoSoto)Paywalls
: PaywallData errors shouldn't make Offerings fail to decode (Paywalls
:PaywallData
errors shouldn't makeOffering
s fail to decode #1402) via NachoSoto (@NachoSoto)Paywalls
: convert empty strings to null via NachoSoto (@NachoSoto)Paywalls
: footer view should not render background image via NachoSoto (@NachoSoto)Paywalls
: improve template 4 A11y support via NachoSoto (@NachoSoto)Paywalls
: Add close button option (Paywalls: Add close button option #1390) via Toni Rico (@tonidero)Paywalls
: fix MarkdownText stealing touches from package buttons (Paywalls
: fixMarkdownText
stealing touches from package buttons #1411) via NachoSoto (@NachoSoto)Paywalls
: ignore URL deserialization errors (Paywalls
: ignore URL deserialization errors #1399) via NachoSoto (@NachoSoto)packageInfo.localizedDiscount
(Add test for packageInfo.localizedDiscount #1407) via Cesar de la Vega (@vegaro)Paywalls
: RemoteImage always renders a placeholder on previews via NachoSoto (@NachoSoto)Paywalls
: decode empty images as null via NachoSoto (@NachoSoto)Paywalls
: Allow trigger manual paywall tester release (Paywalls: Allow trigger manual paywall tester release #1406) via Toni Rico (@tonidero)Paywalls
: Add experimental annotation to all public APIs in RevenueCat UI (Paywalls: Add experimental annotation to all public APIs in RevenueCat UI #1400) via Toni Rico (@tonidero)Paywalls
: improve template 2 layout (Paywalls
: improve template 2 layout #1396) via NachoSoto (@NachoSoto)Paywalls
: template 4 (Paywalls
: template 4 #1349) via NachoSoto (@NachoSoto)Paywalls
: fix template 3 offer details color (Paywalls
: fix template 3 offer details color #1394) via NachoSoto (@NachoSoto)Paywalls
: PaywallDialogOptions no longer requires dismissRequest (Paywalls
:PaywallDialogOptions
no longer requiresdismissRequest
#1386) via NachoSoto (@NachoSoto)Paywalls
: fixed accessibility across templates (Paywalls
: fixed accessibility across templates #1392) via NachoSoto (@NachoSoto)Paywalls
: increase PaywallBackground blur radius to match iOS via NachoSoto (@NachoSoto)Paywalls
: use LocalUriHandler for opening links (Paywalls
: useLocalUriHandler
for opening links #1388) via NachoSoto (@NachoSoto)Paywalls
: support for Markdown links (Paywalls
: support for Markdown links #1387) via NachoSoto (@NachoSoto)Paywalls
: display purchase/restore errors (Paywalls
: display purchase/restore errors #1384) via NachoSoto (@NachoSoto)Paywalls
: improve error handling (Paywalls
: improve error handling #1383) via NachoSoto (@NachoSoto)Paywalls
: fixed incorrect background on footer (Paywalls
: fixed incorrect background on footer #1382) via NachoSoto (@NachoSoto)Paywalls
: fix backwards-compatible blurring of default paywall background (Paywalls
: fix backwards-compatible blurring of default paywall background #1380) via NachoSoto (@NachoSoto)Paywalls
: polish template 2 spacing (Paywalls
: polish template 2 spacing #1381) via NachoSoto (@NachoSoto)Paywalls
: optimize backwards compatible blurring (Paywalls
: optimize backwards compatible blurring #1379) via NachoSoto (@NachoSoto)Paywalls
: Predownload offering images if paywalls sdk exists (Paywalls: Predownload offering images if paywalls sdk exists #1372) via Toni Rico (@tonidero)Paywalls
: PurchaseButton supports gradients (Paywalls
:PurchaseButton
supports gradients #1378) via NachoSoto (@NachoSoto)Paywalls
: optimize AdaptiveComposable (Paywalls
: optimizeAdaptiveComposable
#1377) via NachoSoto (@NachoSoto)Paywalls
: improve FooterDialog corner radius (Paywalls
: improveFooterDialog
corner radius #1374) via NachoSoto (@NachoSoto)Paywalls
: optimize PurchaseButton (Paywalls
: optimizePurchaseButton
#1376) via NachoSoto (@NachoSoto)Paywalls
: Enable footer modes in paywall tester paywalls tab (Paywalls: Enable footer modes in paywall tester paywalls tab #1368) via Toni Rico (@tonidero)Paywalls
: Support footer in template 3 (Paywalls: Support footer in template 3 #1367) via Toni Rico (@tonidero)Paywalls
: calculate discountRelativeToMostExpensivePerMonth (Paywalls
: calculatediscountRelativeToMostExpensivePerMonth
#1370) via NachoSoto (@NachoSoto)Paywalls
: Add offer details in template 2 when in condensed form (Paywalls: Add offer details in template 2 when in condensed form #1371) via Toni Rico (@tonidero)Paywalls
: improve handling of lifetime/custom packages (Paywalls
: improve handling of lifetime/custom packages #1363) via NachoSoto (@NachoSoto)Paywalls
: Support footer in template 1 (Paywalls: Support footer in template 1 #1366) via Toni Rico (@tonidero)StoreProduct.pricePerMonth
(AddStoreProduct.pricePerMonth
#1369) via NachoSoto (@NachoSoto)Paywalls
: Support condensed footer presentation in template 2 (Paywalls: Support condensed footer presentation in template 2 #1365) via Toni Rico (@tonidero)Paywalls
: finished localization support (Paywalls
: finished localization support #1362) via NachoSoto (@NachoSoto)Paywalls
: backwards compatible blurring (Paywalls: backwards compatible blurring #1327) via Andy Boedo (@AndyBoedo)Paywalls
: PaywallViewModel tests (Paywalls
:PaywallViewModel
tests #1357) via NachoSoto (@NachoSoto)Paywalls
: improve LoadingPaywall (Paywalls
: improveLoadingPaywall
#1364) via NachoSoto (@NachoSoto)Paywalls
: Fix paywall compose previews (Paywalls: Fix paywall compose previews #1360) via Toni Rico (@tonidero)Paywalls
: Fix proguard rules kotlinx serialization (Paywalls: Fix proguard rules kotlinx serialization #1356) via Toni Rico (@tonidero)Paywalls
: Add custom font example to paywalls screen (Paywalls: Add custom font example to paywalls screen #1358) via Toni Rico (@tonidero)Paywalls
: Support Google fonts and font families with multiple fonts (Paywalls: Support Google fonts and font families with multiple fonts #1338) via Toni Rico (@tonidero)Paywalls
: Support custom fonts through FontProvider (Paywalls: Support custom fonts through FontProvider #1328) via Toni Rico (@tonidero)Paywalls
: fixed Footer padding (Paywalls
: fixedFooter
padding #1354) via NachoSoto (@NachoSoto)Paywalls
: Rename PaywallView to Paywall (Paywalls: RenamePaywallView
toPaywall
#1351) via Toni Rico (@tonidero)Paywalls
: disable PurchaseButton during purchases (Paywalls
: disablePurchaseButton
during purchases #1352) via NachoSoto (@NachoSoto)Paywalls
: enable library publishing (Paywalls
: enable library publishing #1353) via NachoSoto (@NachoSoto)Paywalls
: handle "action in progress" state (Paywalls
: handle "action in progress" state #1346) via NachoSoto (@NachoSoto)Paywalls
: support {{ sub_duration_in_months }} (Paywalls
: support{{ sub_duration_in_months }}
#1348) via NachoSoto (@NachoSoto)Paywalls
: disallow purchasing currently subscribed products (Paywalls
: disallow purchasing currently subscribed products #1334) via NachoSoto (@NachoSoto)Paywalls
: new PaywallActivityLauncher.launchIfNeeded methods (Paywalls
: newPaywallActivityLauncher.launchIfNeeded
methods #1335) via NachoSoto (@NachoSoto)Paywalls
: PaywallColor supports RGBA (Paywalls
:PaywallColor
supports RGBA #1332) via NachoSoto (@NachoSoto)Paywalls
: Make DialogScaffold private (Paywalls: Make DialogScaffold private #1329) via Toni Rico (@tonidero)revenuecatui
gradle.properties
to specify name of dependency (Add revenuecatui gradle.properties to specify name of dependency #1324) via Toni Rico (@tonidero)Paywalls
: log error when failing to load images (Paywalls
: log error when failing to load images #1321) via NachoSoto (@NachoSoto)PaywallData
(Rename packages to packageIds in PaywallData #1309) via Cesar de la Vega (@vegaro)IntroEligibilityStateView
(Add support for multiple intro offers in IntroEligibilityStateView #1319) via Cesar de la Vega (@vegaro)Paywalls
: Add support to launch paywall as activity (Paywalls: Add support to launch paywall as activity #1317) via Toni Rico (@tonidero){{ sub_offer_price_2 }}
and{{ sub_offer_duration_2 }}
variables (Parse{{ sub_offer_price_2 }}
and{{ sub_offer_duration_2 }}
variables #1313) via Cesar de la Vega (@vegaro)Paywalls
: changed PaywallsTester app icon (Paywalls
: changed PaywallsTester app icon #1323) via NachoSoto (@NachoSoto)Paywalls
: fixed PaywallDialog.setRequiredEntitlementIdentifier (Paywalls
: fixedPaywallDialog.setRequiredEntitlementIdentifier
#1322) via NachoSoto (@NachoSoto)Paywalls
: Markdown support (Paywalls
: Markdown support #1312) via NachoSoto (@NachoSoto)PaywallsTester
: added template name to offerings list (PaywallsTester
: added template name to offerings list #1316) via NachoSoto (@NachoSoto)Paywalls
: Update paywall tester to be able to display paywall footer (Paywalls: Update paywall tester to be able to display paywall footer #1315) via Toni Rico (@tonidero)Paywalls
: Add PaywallFooter composable to present a minified paywall UI that allows for custom paywalls (Paywalls: Add PaywallFooter composable to present a minified paywall UI that allows for custom paywalls #1314) via Toni Rico (@tonidero)Paywalls
: use IntroEligibilityStateView (Paywalls
: useIntroEligibilityStateView
#1311) via NachoSoto (@NachoSoto)PaywallData
validation tests (PaywallData validation tests #1310) via Cesar de la Vega (@vegaro)Paywalls
: implemented LoadingPaywallView with placeholder (Paywalls
: implementedLoadingPaywallView
withplaceholder
#1284) via NachoSoto (@NachoSoto)Paywalls
: created LoadingPaywallView (Paywalls
: createdLoadingPaywallView
#1282) via NachoSoto (@NachoSoto)Other Changes
Add
purchases.setOnesignalUserID
(#1304) via Raquel Diez (@Raquel10-RevenueCat)