You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Android test-IME fill commits into a stale InputConnection session after focus moves to a new field #3052
On an API 36 emulator under CPU load, fill into a freshly mounted, autofocused React Native TextInput sometimes fails with Android fill verification failed. The trigger is a wizard step change: Continue unmounts one field and mounts the next. The field keeps showing its hint: failureReason: text_mismatch, actual: "e.g. Jane", hintShowing: true, focused: true, and target and actual are the same node.
The test IME does commit, and logs commitText length=4. The app drops the text:
W/RemoteInputConnectionImpl: Session id mismatch header.sessionId: 0 currentSessionId: 1 while calling ...commitText
The helper's retry refocuses 2 s later and hits the same mismatch, so the IME was still on the previous connection session that long after focus moved.
Seen
e2e mobile benchmark CI: 4 of 45 Android runs (sequential onboarding echoes the exact values).
Locally: about 1 in 30 under load, 0 in 30 idle.
Tried
Waiting, before the commit, for dumpsys input_method's curEditorInfo.hintText to match the target's placeholder did not help (1/60 vs 1/30 baseline). The system-side editor info is already current when the IME's connection is stale.
Likely direction
Detect "text never landed" (hint still showing after the commit) and force a fresh startInput for the IME before the retry, e.g. by moving focus off the field and back, instead of re-tapping the already focused field. The check would live in fillAndroidImeHelper in packages/platform-android/src/text-input.ts.
I ran into this too: agent-device 0.21.11, an API 35 emulator (Pixel 7, Google APIs, arm64), entering a one-time code into a React Native TextInput with press then type. type returns ok and AgentDeviceTestIME logs commitText length=5, but the field stays empty, and typing again goes the same way while the field keeps focus. About 3 in 40 logins with screen recording running.
type has the same exposure and checks nothing, so the rebind on the fill path doesn't reach it. We now do the same ime disable / enable / set rebind ourselves before typing again.
On API 35 the app logs no Session id mismatch line, so the drop is silent there.
In each of our captures, the snapshot helper's instrumentation finished about 80 ms before the commit (accessibility off) and started again right after.
We're carrying #3061 (6622d34) as a local patch on 0.21.20 until it ships.
Activity
harrisrobin commentedon Oct 4, 2026
I ran into this too: agent-device 0.21.11, an API 35 emulator (Pixel 7, Google APIs, arm64), entering a one-time code into a React Native
TextInputwithpressthentype.typereturns ok andAgentDeviceTestIMElogscommitText length=5, but the field stays empty, and typing again goes the same way while the field keeps focus. About 3 in 40 logins with screen recording running.Three things that may help with #3061:
typehas the same exposure and checks nothing, so the rebind on the fill path doesn't reach it. We now do the sameime disable/enable/setrebind ourselves before typing again.Session id mismatchline, so the drop is silent there.We're carrying #3061 (6622d34) as a local patch on 0.21.20 until it ships.