#15841 · @BYK · opened Mar 3, 2026 at 1:03 PM UTC · last updated Mar 21, 2026 at 10:24 AM UTC
fix(app): resize layout viewport when mobile keyboard appears
Score breakdown
Impact
Clarity
Urgency
Ease Of Review
Guidelines
Readiness
Size
Trust
Traction
Summary
This PR addresses a critical mobile UX bug where the virtual keyboard obstructs the input composer. It introduces a viewport meta tag change to resize the layout viewport, but also includes unrelated API client changes.
Description
Issue for this PR
Closes #15842
Type of change
- [x] Bug fix
- [ ] New feature
- [ ] Refactor / code improvement
- [ ] Documentation
What does this PR do?
The viewport meta tag defaults to interactive-widget=resizes-visual, which means the virtual keyboard overlays the visual viewport without resizing the layout viewport. Since the root element uses h-dvh and dvh tracks the layout viewport, the full flex layout stays at its original height behind the keyboard — pushing the composer (shrink-0 at the bottom of a flex-col) under it.
Adding interactive-widget=resizes-content tells the browser to resize the layout viewport (and thus the ICB) when the keyboard appears. dvh then shrinks to the space above the keyboard, the message timeline (flex-1) absorbs the reduction, and the composer stays visible.
Desktop is unaffected (no virtual keyboard = no viewport change). Browser support: Chrome 108+, Safari 15+, Edge 108+.
How did you verify your code works?
Tested on iOS Safari and Chrome Android — the composer stays visible above the keyboard after the change.
Screenshots / recordings
N/A
Checklist
- [x] I have tested my changes locally
- [x] I have not included unrelated changes in this PR
Linked Issues
#15842 Mobile keyboard covers prompt input in web UI
View issueComments
PR comments
BYK
@adamdotdevin any luck?
Changed Files
packages/app/index.html
+1−1packages/app/src/components/dialog-connect-provider.tsx
+1−1packages/app/src/components/dialog-custom-provider.tsx
+1−1packages/opencode/src/cli/cmd/tui/component/dialog-provider.tsx
+1−1