Add default paywall UI components#3133
Add default paywall UI components#3133JZDesign wants to merge 1 commit intojzdesign/fallback-paywall-2-color-helpersfrom
Conversation
Adds the composable UI for the fallback paywall: - DefaultPaywallView: main fallback paywall with app icon, color extraction, package list, purchase and restore buttons - DefaultPaywallWarning: debug-only warning panel with RC branding and help links - DefaultProductCell: selectable product row with animated color transitions - RevenueCat branding image and string resources Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Generated by 🚫 Danger |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 2 potential issues.
Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.
| } | ||
| } | ||
|
|
||
| Spacer(modifier = Modifier.height(16.dp)) |
There was a problem hiding this comment.
Scrollable content hidden behind overlapping footer buttons
Medium Severity
The footer buttons are absolutely positioned at the bottom of the Box via Alignment.BottomCenter, overlaying the scrollable Column. The scrollable content only has ~32dp of clearance at the bottom (16dp spacer + 16dp padding), but the footer is approximately 140dp tall. When there are enough packages to require scrolling, the last product item(s) will be permanently obscured behind the purchase and restore buttons, making them unselectable.
Additional Locations (1)
| OutlinedButton( | ||
| onClick = { | ||
| val intent = Intent(Intent.ACTION_VIEW, url.toUri()) | ||
| context.startActivity(intent) |
There was a problem hiding this comment.
Missing ActivityNotFoundException handling for URL intent launch
Low Severity
Calling context.startActivity(intent) without catching ActivityNotFoundException can crash on devices with no browser installed. The codebase already provides Context.openUriOrElse in Uris.kt for exactly this purpose, and all other URL-opening code paths use it. Though this only affects debug builds, it's still an unhandled crash.
2 builds increased size
TestPurchasesUIAndroidCompatibility 1.0 (1)
|
| Item | Install Size Change | Download Size Change |
|---|---|---|
| 📝 visual_ob_create_paywall.png | ⬆️ 77.6 kB | ⬆️ 77.2 kB |
| 📝 com.revenuecat.purchases.ui.revenuecatui.defaultpaywall.DefaultPa... | ⬆️ 13.9 kB | ⬆️ 4.8 kB |
| 📝 com.revenuecat.purchases.ui.revenuecatui.defaultpaywall.DefaultPa... | ⬆️ 3.6 kB | ⬆️ 1.2 kB |
| 📝 com.revenuecat.purchases.ui.revenuecatui.defaultpaywall.DefaultPr... | ⬆️ 2.9 kB | ⬆️ 999 B |
| 📝 com.revenuecat.purchases.ui.revenuecatui.helpers.AppStyleExtracto... | ⬆️ 2.7 kB | ⬆️ 812 B |
SDKSizeTesting 1.0 (1)
com.revenuecat.testapps.sdksizetesting
⚖️ Compare build
⏱️ Analyze build performance
Total install size change: ⬆️ 121.1 kB (0.35%)
Total download size change: ⬆️ 86.1 kB (0.73%)
Largest size changes
| Item | Install Size Change | Download Size Change |
|---|---|---|
| 📝 visual_ob_create_paywall.png | ⬆️ 66.3 kB | ⬆️ 66.3 kB |
| 📝 com.revenuecat.purchases.ui.revenuecatui.defaultpaywall.DefaultPa... | ⬆️ 7.6 kB | ⬆️ 2.5 kB |
| 📝 com.revenuecat.purchases.ui.revenuecatui.defaultpaywall.DefaultPa... | ⬆️ 2.2 kB | ⬆️ 708 B |
| 📝 com.revenuecat.purchases.ui.revenuecatui.defaultpaywall.DefaultPr... | ⬆️ 2.0 kB | ⬆️ 657 B |
| 📝 com.revenuecat.purchases.ui.revenuecatui.helpers.AppStyleExtracto... | ⬆️ 1.7 kB | ⬆️ 553 B |
🛸 Powered by Emerge Tools
Comment trigger: Size diff threshold of 100.00kB exceeded




Summary
Part 3 of the fallback paywall feature breaking up #2945. Stacked on #3132.
Note
Medium Risk
Adds new purchase/restore UI and debug-only warning flows; while mostly UI, it can impact purchase triggering and link launching if wired incorrectly.
Overview
Introduces a new fallback paywall UI in
defaultpaywall/viaDefaultPaywallView, rendering an app-branded paywall (colors derived from the app icon), a selectable package list, and footerPurchase/Restore Purchasesactions.Adds
DefaultPaywallWarning, a debug-build-only warning panel (RevenueCat-branded, optional “Go to Dashboard” deep link) shown when paywall validation fails, plusDefaultProductCellfor animated selection styling. Updatesstrings.xmlwith new default paywall copy.Written by Cursor Bugbot for commit 10f55d9. This will update automatically on new commits. Configure here.