Skip to content

fix(dashboard): Keep the mobile composer above the iOS keyboard - #2658

Draft
sentry-junior[bot] wants to merge 1 commit into
mainfrom
fix/ios-keyboard-composer-offset
Draft

sentry-junior[bot] wants to merge 1 commit into
mainfrom
fix/ios-keyboard-composer-offset

Conversation

@sentry-junior

@sentry-junior sentry-junior Bot commented Nov 4, 2026 •

Copy link
Copy Markdown
Contributor

Draft: blocked on real iPhone measurements. Review showed the original root-cause claim is wrong, so this diff most likely does not fix the reported bug. Do not merge as is.

Bug

On iPhone Safari (iOS 26), with the reply composer focused on a conversation page, the shell is drawn shifted up. The composer sits at the top of the screen, the top of the transcript is cut off, and there is a black gap about the keyboard's height between the composer and the keyboard.

Why the current diff is not the fix

The diff assumed iOS Safari shrinks window.innerHeight with the keyboard while documentElement.clientHeight stays tall. WebKit's own test LayoutTests/fast/visual-viewport/ios/interactive-widget/dynamic-inner-height.html shows the opposite. With the default resizes-visual, innerHeight stays at its keyboard-less value. With resizes-content, innerHeight, visualViewport.height, and the layout viewport all shrink together. In both modes the new cap equals the old behavior. The new unit and e2e cases stub a geometry that iOS does not produce.

In a Chromium repro of the resizes-content geometry (390×844 → 390×388 with the composer focused), the current shell lays out correctly. The hook sets --dashboard-viewport-height: 388px and the dock sits at the bottom.

Remaining candidates (unverified):

  • visualViewport.offsetTop is smaller than the real pan (WebKit bug 311821, iOS 26.4.1).
  • iOS 26 fixed-position regressions (WebKit bug 300523).
  • The mobile hook not running on the device.

Next step

Capture viewport and shell geometry on the affected iPhone (not desktop) with the composer focused and the bug visible. Then rewrite the fix and its tests against those numbers.

CI is green. The 5 Frameshift screenshot changes are baseline noise: 4 are desktop, where this hook is a no-op, and #2647, #2648, and #2650 report similar changes without touching the dashboard.

via @MathurAditya724.

--

View Session in Sentry

iOS Safari shrinks window.innerHeight with the keyboard but keeps the
layout viewport tall and pans the visual viewport inside it. The shell
read innerHeight as the layout height, so it zeroed the visual offset
and the fixed shell slid up off screen, leaving a gap above the keyboard.

Cap the offset by documentElement.clientHeight, the box fixed elements
position in. resizes-content still yields offset 0 because that box
shrinks with the keyboard.

Co-Authored-By: Aditya Mathur <57684218+MathurAditya724@users.noreply.github.com>
@vercel

vercel Bot commented Nov 4, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
junior-docs Ready Ready Preview Nov 4, 2026 2:36pm UTC

Request Review

@github-actions

github-actions Bot commented Nov 4, 2026

Copy link
Copy Markdown
Contributor

5 screenshot changes — 5 changed · 0 added · 0 removed

Review screenshots in Frameshift

Conversation Attachment · Desktop
Conversation Attachment · Desktop
Changed
Conversation Attachment · Mobile
Conversation Attachment · Mobile
Changed
Conversation Attachment Modal · Desktop
Conversation Attachment Modal · Desktop
Changed
Memories · Desktop
Memories · Desktop
Changed
Settings Mcp · Desktop
Settings Mcp · Desktop
Changed

@sentry-junior
sentry-junior Bot marked this pull request as draft November 4, 2026 16:11

This branch was successfully deployed

1 active deployment
Preview – junior-docs — 72f8e56c Deployed Nov 4, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

risk: high PR risk score: high

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant