Mobile Web acceptance
The maintainer selected simulator/emulator acceptance for this delivery. These are actual Safari and Chrome interactions with their software keyboards; no synthetic sensor events were sent. The keyboard fixes described here are published in 0.1.0-rc.11.
Keyboard contract
An exposed VirtualKeyboard object with an empty rectangle does not prove an active geometry backend. Unless overlaysContent is enabled by the app or a nonempty rectangle is reported, Jolt uses VisualViewport. It never changes the app’s overlaysContent setting.
When the browser resizes both viewports, visibility is estimated from the resting height while covered height remains zero. This prevents double lifting. Browser panning changes bottom coverage without making an open keyboard disappear. Rotation invalidates the height baseline. VisualViewport estimates cannot distinguish every focused desktop-window resize from a keyboard.
Reproduce and inspect
node benchmarks/web-mobile/server.mjs
python3 benchmarks/web-mobile/android.py YOUR_EMULATOR /tmp/jolt-mobile-android
python3 benchmarks/docs-record-ios.py YOUR_SIMULATOR /tmp/jolt-mobile-ios testMobileBrowser