Skip to content

fix: keep iPad PWA in standalone mode#1576

Open
gigq wants to merge 1 commit intopingdotgg:mainfrom
gigq:fix/ipados-pwa-chrome
Open

fix: keep iPad PWA in standalone mode#1576
gigq wants to merge 1 commit intopingdotgg:mainfrom
gigq:fix/ipados-pwa-chrome

Conversation

@gigq
Copy link
Copy Markdown

@gigq gigq commented Mar 30, 2026

What Changed

Improves the iPad/iOS PWA shell so the app stays in standalone mode more reliably and does not expose Safari chrome during normal use.

This change:

  • adds a manifest.webmanifest with display: "standalone"
  • adds the Apple/mobile web app meta tags in index.html
  • updates the viewport meta to use viewport-fit=cover
  • pins the root app shell to 100dvh in standalone/fullscreen display modes and fixes the body to the viewport in that mode

Why

On iPadOS, the installed PWA could still reveal browser chrome during scroll or certain interactions, which breaks the standalone-app feel.

This approach keeps the fix focused at the app-shell level instead of changing individual screens:

  • it makes the app explicitly installable as a standalone web app
  • it enables the Apple-specific standalone behavior Safari expects
  • it constrains the root layout only when the app is actually running in standalone/fullscreen mode

UI Changes

Behavior change only. In installed PWA mode on iPad/iOS, the app shell should remain in standalone presentation more consistently instead of allowing Safari chrome to appear.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Before:
IMG_0169

After:
IMG_0170


Note

Low Risk
Low risk: changes are limited to PWA metadata and CSS app-shell sizing/scroll behavior, with the main risk being unintended layout/scroll regressions in standalone/fullscreen modes.

Overview
Improves iPad/iOS installed-PWA behavior by making the app explicitly standalone-capable and reducing cases where Safari chrome appears.

Adds a manifest.webmanifest (with display: "standalone") and wires it up via new mobile/Apple meta tags (including viewport-fit=cover) in index.html. Updates the global shell CSS to use 100dvh and fix the body to the viewport only in standalone/fullscreen display modes, preventing overscroll/scroll-induced chrome.

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

Note

Keep iPad PWA running in standalone mode

  • Adds a web app manifest defining name, icons, colors, and display: standalone so browsers can install the app correctly.
  • Adds Apple PWA meta tags to index.html (apple-mobile-web-app-capable, status bar style, title) to keep the app in standalone mode on iOS/iPadOS.
  • Updates index.css with a display-mode: standalone media query that locks the body to the full dynamic viewport height and disables scroll bounce.
  • Updates the viewport meta to include viewport-fit=cover so content extends into safe areas on notched devices.

Macroscope summarized 00c4f3e.

@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Mar 30, 2026

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 8fa31300-2487-4a9e-951b-cd2dcc75e4ad

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions github-actions bot added size:M 30-99 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list. labels Mar 30, 2026
Copy link
Copy Markdown
Contributor

@cursor cursor bot left a comment

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
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.

viewport-fit=cover added without safe area inset padding

Medium Severity

Adding viewport-fit=cover tells the browser to extend the layout viewport into device safe areas (home indicator, rounded corners), but no env(safe-area-inset-*) padding is applied anywhere in the app's CSS. Previously, without viewport-fit=cover, the browser automatically constrained the viewport to avoid these regions. Now content at the screen edges—especially the bottom home indicator area on modern iPads—can be obscured or hard to interact with in standalone mode.

Additional Locations (1)
Fix in Cursor Fix in Web

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M 30-99 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant