Repository navigation
fix(app): keep the phone titlebar clear of the iOS status bar blur - #53297
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Issue for this PR
N/A
Type of change
What does this PR do?
In the Home Screen web app on iPhone (iOS 26+), the session title in the top titlebar is blurred and dimmed. iOS composites a blur over the band just below the status bar, above the web layer: the page's own render of that area is sharp. No CSS turns it off; native apps hide it with
scrollView.topEdgeEffect.isHidden, which a web page cannot reach.The titlebar row currently starts right at
env(safe-area-inset-top), which is inside that band. This copies ChatGPT's phone header, which has the same setup (viewport-fit=cover,black-translucent). Its visible header gets this rule on phone widths:I traced this by loading chatgpt.com in headless WebKit with an iPhone profile and listing the rules that apply to the visible header (logged-out home page).
On web at phone width (
max-width: 767px, same breakpoint) with the titlebar at the top, the titlebar now usespadding-top: calc(16px + env(safe-area-inset-top))and grows by the same 16px. The inner row'smax(0px, 8px - inset)top padding is dropped there, because the 16px already covers it. Desktop, wider web, and the bottom-titlebar position are unchanged.Like ChatGPT's, the change also applies to phone-width Safari tabs, where there is no safe area: the titlebar goes from 36px to 44px.
How did you verify your code works?
padding-top/heightassertions to the top-navigation case ine2e/regression/mobile-session.spec.ts. Both positions pass with this change; the top case fails without it (0pxinstead of16px).bun run checkpasses (lint and typecheck).Screenshots / recordings
Before:
After:
Checklist