Repository navigation
Description
Steps to reproduce
On iOS, with semantics enabled, tapping a TextField zooms the whole page to about 1.45x and leaves it there. The user has to pinch back out manually, and typing continues at the zoomed scale.
The cause is that Flutter's semantic <input> never sets a font-size, so it inherits the browser's default, which is 11px on iOS. iOS Safari auto-zooms whenever it focuses an input whose font size is under 16px.
This is WebKit-only behavior, and it became reachable only after #190486. Before that fix the semantic input was about one viewport off-screen and could never be focused, so it never triggered a zoom.
Steps to reproduce
- Create a Flutter web app that calls
SemanticsBinding.instance.ensureSemantics(). A real screen reader enables semantics on its own; this forces it for a deterministic repro. - Add a
TextField(see the code sample). flutter build web, deploy, and open on a physical iPhone in Safari.- Tap the text field.
Demo, no fix applied: https://flutter-demo-50-before.web.app
Related issues
ensureSemantics()makes TextField font related properties in dev tools empty #129233 — "ensureSemantics()makes TextField font related properties in dev tools empty." The same missing font size, but reported as a DevTools annoyance on desktop Chrome, so it has sat at P2 since 2023. The suggested fix above does not close it: a flat 16px still would not report a 24pxTextField's real size, and it changes nothing on desktop. A complete fix would propagate the framework's font size with a 16px floor on iOS, which would close both this issue and that one.- [web] Anchor flt-semantics-host at 0,0 to fix WebKit semantics offset #190486 — anchored
flt-semantics-hostat 0,0. This is what made the input focusable, and therefore what made this zoom reachable. Not a regression in that fix; a pre-existing latent bug it exposed. - [Web] Unable to type in TextField when ensureSemantics is enabled for accessibility #129324 — "Unable to type in TextField when
ensureSemanticsis enabled." The bug family this came from. - Embedding flutter web app using an iframe causes zoom issues with keyboard input in IOS Safari #119085 — iframe-scoped iOS zoom with keyboard input. Similar symptom, but scoped to iframes and assumes the direct app is fine, which this issue disproves.
Expected results
Tapping the field focuses it and opens the keyboard without changing the page zoom.
Actual results
The page zooms to about 1.45x and stays zoomed. Because iOS only auto-zooms when the focused input is effectively under 16px at the current scale, re-tapping does nothing further until the user pinches back to visualViewport.scale = 1.0, at which point the next tap zooms again.
Code sample
Screenshots or Video
Screenshots / Video demonstration
[Upload media here]
Logs
Logs
[Paste your logs here]Flutter Doctor output
Flutter 3.48.0-1.0.pre-635 • channel [user-branch] • [email protected]:flutter/flutter.git
Framework • revision 2d39b7da70 • 2026-09-04
Engine • hash e9027840f8346ec5cec796b494f03097cc2edfa1 (revision 04d081abd8) • 2026-09-04
Tools • Dart 3.14.0 (build 3.14.0-194.0.dev) • DevTools 2.61.0-dev.0
- Reproduces on any WebKit browser on iOS: Safari, Chrome, Firefox.
- Not reproducible on Android Chrome (device tested) or desktop Chrome.
- Requires [web] Anchor flt-semantics-host at 0,0 to fix WebKit semantics offset #190486 to be present, otherwise the input is off-screen and cannot be focused at all.
Activity
flutter-triage-bot commentedon Sep 5, 2026
The
triaged-weblabel is irrelevant if there is noteam-weblabel orfyi-weblabel.[web] Stop iOS auto-zoom by sizing semantic inputs at 16px (flutter#1…
github-actions commentedon Sep 24, 2026
This thread has been automatically locked since there has not been any recent activity after it was closed. If you are still experiencing a similar issue, please open a new bug, including the output of
flutter doctor -vand a minimal reproduction of the issue.