Fixes double padding in PaywallActivity on Android 15+ when edgeToEdge parameter is false#3227
Conversation
|
actually, I think "15+, edgeToEdge = false" is wrong. It's doing edge to edge after the fix 🤔 |
tonidero
left a comment
There was a problem hiding this comment.
Just a comment about the docs... But I think it makes sense!
| * Only available for original template paywalls. Ignored for v2 Paywalls. | ||
| * @param edgeToEdge Whether to display the paywall in edge-to-edge mode. | ||
| * Default is true for Android 15+, false otherwise. | ||
| * On Android 15+, edge-to-edge is enforced by the system regardless of this setting. |
There was a problem hiding this comment.
I think this is not completely right... On android 15, it's enabled by default, but not enforced. On android 16 it is enforced (same for the other comments).
I guess it's true that with the change here, even if a user disables edge to edge in android 15, however, it wouldn't make it "not edge-to-edge" though... so maybe you're referring to that? But this would be misleading since it's not enforced by the system I guess.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #3227 +/- ##
=======================================
Coverage 79.19% 79.19%
=======================================
Files 356 356
Lines 14272 14272
Branches 1945 1945
=======================================
Hits 11302 11302
Misses 2165 2165
Partials 805 805 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
**This is an automatic release.** ## RevenueCat SDK ### 🐞 Bugfixes * Fix & Standardize Galaxy Date Parsing Edge Cases (#3216) via Will Taylor (@fire-at-will) * Fix addSuccessfullyPostedToken for new purchases in PostPendingTransactionsHelper (#3239) via Facundo Menzella (@facumenzella) * [Galaxy]: Fix race condition when fetching Galaxy products (#3213) via Will Taylor (@fire-at-will) * Fixes double padding in PaywallActivity on Android 15+ when `edgeToEdge` parameter is false (#3227) via Cesar de la Vega (@vegaro) ## RevenueCatUI SDK ### 🐞 Bugfixes * Fix bold text not rendering in Markdown lists (#3228) via Cesar de la Vega (@vegaro) * Fix: Clear in-memory offerings cache on locale override to prevent stale paywall data (#3225) via Antonio Pallares (@ajpallares) ### Paywallv2 #### ✨ New Features * Feature: Update default paywall (#3133) via Jacob Rakidzich (@JZDesign) #### 🐞 Bugfixes * Fix V2 paywall safe area in landscape mode (#3221) via Cesar de la Vega (@vegaro) ### 🔄 Other Changes * Run integration tests on all branches (#3242) via Toni Rico (@tonidero) * Migrate Firebase Test Lab jobs to CircleCI emulators (#3238) via Toni Rico (@tonidero) * Run metalava on galaxy module in test-galaxy job (#3235) via Will Taylor (@fire-at-will) * Add offering_id to custom paywall impression event (#3230) via Rick (@rickvdl) * Cache isAutoRenewing to detect subscription changes without syncPurchases (#3198) via Facundo Menzella (@facumenzella) * Bump fastlane-plugin-revenuecat_internal from `e146447` to `3e8c384` (#3233) via dependabot[bot] (@dependabot[bot]) <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Low Risk** > Low risk release housekeeping: version string bumps and documentation/deployment path updates with no functional runtime logic changes beyond the exposed version constant. > > **Overview** > Publishes the `9.26.0` release by removing `-SNAPSHOT` across build/version metadata (root `VERSION_NAME`, `.version`, `Config.frameworkVersion`, and sample/test app dependency pins). > > Updates release documentation artifacts by adding the `9.26.0` notes to `CHANGELOG.md`/`CHANGELOG.latest.md`, switching docs deployment in CircleCI to sync `docs/9.26.0` to S3, and updating `docs/index.html` to redirect to the new version. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 0a30a45. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY -->
The
Paywallcomposable has always handled its own window insets internally, legacy templates useStatusBarSpacer()and V2 component paywalls usewindowInsetsPadding(systemBars)inStackComponentView. TheScaffoldinPaywallActivitywas also applying inset-basedpaddingValues, doubling the insets.This was originally identified and fixed in 9371b6b, which skipped the
Scaffoldpadding on Android 15+. However, d1904a8 replaced that API-level guard with theedgeToEdgeflag check, re-introducing the double padding on Android 15+ whenedgeToEdge = false.We have to:
contentWindowInsets = WindowInsets(0, 0, 0, 0)on theScaffoldso it doesn't add inset padding. ThePaywallcomposable is the single source of truth for inset handlingpadding(paddingValues)that was causing the duplicationNote
Medium Risk
Adjusts window-inset handling for the paywall activity, which can change visual layout across Android versions (especially 15+). Scoped to UI composition/inset behavior with no data or security impact.
Overview
Fixes double window-inset padding in
PaywallActivityby making theScaffoldapply no insets (contentWindowInsets = WindowInsets(0,0,0,0)) and removing the conditionalpadding(paddingValues)soPaywallis the single source of truth for inset handling.Updates the
edgeToEdgeparameter documentation inPaywallActivityLauncherandPaywallActivityLaunchOptionsto reflect Android 15 default edge-to-edge behavior and Android 16+ enforcement.Written by Cursor Bugbot for commit b7b4807. This will update automatically on new commits. Configure here.