fix(pwa): keep the top of the installed app clear of iOS 26's edge blur - #398
Conversation
Installed on the home screen (black-translucent + viewport-fit=cover), iOS 26 draws a Liquid Glass blur over the top of the app, about 40pt past the status bar: the top bar and the landing nav looked like they slid under the clock (reported on an iPhone 14). iOS leaves the edge alone when a fixed box with a background covers the top edge, so StatusBarBackdrop is that box, as tall as env(safe-area-inset-top) (0 in a Safari tab and on desktop). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
There was a problem hiding this comment.
Sorry @thierryvm, you've used your own review budget of 250,000 diff characters for the last 7 days.
You can request another review in 6 hours and 53 minutes by commenting @sourcery-ai review. Upgrade to get a review now.
Guide du réviseurLa PR contourne le flou Liquid Glass d’iOS 26 dans les PWA autonomes en montant une bande fixe, colorée comme l’arrière-plan, au niveau de la zone sûre à la racine de l’application ; elle est volontairement inactive et absente des environnements dépourvus d’un encart supérieur de zone sûre. La couverture unitaire vérifie les classes clés et les attributs d’accessibilité de l’élément, tandis que des tests sur un véritable iPhone restent nécessaires, car ce comportement ne peut pas être reproduit dans l’émulation d’un navigateur. Modifications au niveau des fichiers
Conseils et commandesInteragir avec Sourcery
Personnaliser votre expérienceAccédez à votre tableau de bord pour :
Obtenir de l’aide
Original review guide in EnglishReviewer's GuideThe PR works around iOS 26 Liquid Glass blur in standalone PWAs by mounting a fixed, background-colored safe-area strip at the app root; it is intentionally inert and absent outside environments with a top safe-area inset. Unit coverage validates the element’s key classes and accessibility attributes, while real iPhone testing remains necessary because the behavior cannot be reproduced in browser emulation. File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
…411) The opaque strip of #398, as tall as the status bar, did not stop the Liquid Glass edge blur on the reporter's iPhone 14 (retested 1 October 2026). The fix confirmed on devices elsewhere keeps content out of the blur: --inset-top (theme.css) is the safe-area inset, plus 2.5rem in the installed app on iOS in portrait, and every top edge uses it (app layout, sidebar, landing, privacy/changelog/story navs, login, PWA install and support modals, AI tutor drawer). The strip fills that band at z-25, under the sidebar overlay. Modal overlays scroll and center their card with my-auto, so a card taller than the screen is never cut at the top. Nothing changes in a browser tab or on desktop. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Summary
@Thierry reported this on an iPhone 14 after #397. With the app installed on the home screen, the top bar slid into a blur under the clock: the menu, GitHub and login controls on both the landing nav and the app top bar.
Cause. Since iOS 26, installed web apps (
black-translucent+viewport-fit=cover) get a Liquid Glass edge blur that iOS draws over the top of the page, about 40pt past the status bar. It is system chrome, so no CSS or meta tag turns it off. Our headers are only padded byenv(safe-area-inset-top), which leaves them inside the blur band.Fix. iOS skips that blur when a fixed box with a background covers the top edge, and shows the box's color instead.
StatusBarBackdropis that box. It is mounted once inApp.tsxand has these properties:aria-hiddenandpointer-events-none;z-[45]: above the sidebar, below the modals;env(safe-area-inset-top), which is 0 in a Safari tab and on desktop, so nothing changes there.Honest limit. The behaviour comes from other PWA projects' reports, not from Apple documentation, and Chrome emulation cannot reproduce it. It must be confirmed on the real iPhone. If the blur remains, the documented fallback is to push the header content down by
env(safe-area-inset-top) + 2.5remindisplay-mode: standalone.References:
Test plan
tsc,eslint, fullvitest,vite build.statusBarBackdrop.test.tsx🤖 Generated with Claude Code
Résumé par Sourcery
Gardez le haut de l’application iOS installée dégagé en ajoutant un arrière-plan opaque à la barre d’état, derrière l’interface de l’application.
Corrections de bugs :
Améliorations :
Tests :
Original summary in English
Summary by Sourcery
Keep the top of the installed iOS app clear by adding an opaque status-bar backdrop behind the application chrome.
Bug Fixes:
Enhancements:
Tests: