Skip to content

Fix V2 paywall safe area in landscape mode#3221

Merged
vegaro merged 1 commit into
mainfrom
cesar/safearea
Mar 12, 2026
Merged

Fix V2 paywall safe area in landscape mode#3221
vegaro merged 1 commit into
mainfrom
cesar/safearea

Conversation

@vegaro

@vegaro vegaro commented Mar 11, 2026

Copy link
Copy Markdown
Member

Summary

  • Fixes V2 paywalls not respecting safe areas in landscape mode, causing content to render behind camera cutouts/display notches.
  • Uses WindowInsets.safeDrawing instead of WindowInsets.systemBars: safeDrawing includes displayCutout insets that systemBars does not.
  • Adds applyHorizontalWindowInsets flag to StackComponentStyle/StackComponentState so horizontal safe area padding is applied to root stacks, sticky footers, and bottom sheet destinations.

These screenshots were taken on Android 15, so enableEdgeToEdge is enabled by default

Before:
image

After:
image


Note

Medium Risk
Adjusts window-inset handling for V2 paywalls, which can shift layout/padding across devices and entry points (full-screen, dialog, sheets). Risk is mainly visual regressions or double-padding if inset assumptions differ across Android/Compose versions.

Overview
Fixes V2 paywalls rendering under display cutouts in landscape by switching stack inset padding from WindowInsets.systemBars to WindowInsets.safeDrawing.

Adds an applyHorizontalWindowInsets flag to StackComponentStyle/StackComponentState and applies start/end safe-area padding at the stack root (including sticky footers and sheet destinations). StyleFactory.create(...) and the offering-to-state mapping are updated to propagate and enable this new horizontal-insets behavior.

Written by Cursor Bugbot for commit 0562af2. This will update automatically on new commits. Configure here.

@codecov

codecov Bot commented Mar 11, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 79.19%. Comparing base (56d8a66) to head (0562af2).
⚠️ Report is 9 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #3221   +/-   ##
=======================================
  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.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@tonidero tonidero left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tested it out and seems to work great. Thank you!!

overlay: (@Composable BoxScope.() -> Unit)? = null,
) {
val systemBarInsets = WindowInsets.systemBars
val safeDrawingInsets = WindowInsets.safeDrawing

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I was just checking whether this included some horizontal insets in portrait mode with gesture-based navigation, but seems it doesn't from my tests, so I think we should be good 🙌

@vegaro vegaro added this pull request to the merge queue Mar 12, 2026
Merged via the queue into main with commit 5ad1d55 Mar 12, 2026
31 checks passed
@vegaro vegaro deleted the cesar/safearea branch March 12, 2026 14:15
github-merge-queue Bot pushed a commit that referenced this pull request Mar 16, 2026
**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 -->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants