Repository navigation
perf(ios): reduce capture probes and text entry waits - #3813
Conversation
Size Report
Startup median (7 runs, lower is better):
|
|
This PR is ready for human review. I reviewed commit 6a47e61 and found nothing that needs a change. All 17 checks pass at the head commit, and there are no conflicts. Not blocking: no native test covers a masked or secure input that is removed or replaced right after its first character, so a secure-field variant of testFillFailsWhenAppReplacesInputBeforeTextIsDelivered would close that gap (the unreadable early return in readBackWarmupCharacter is covered only through the pure predicate). The investigation report in docs/evidence/ios-e2e-engine-pr1236-2026-10-19.md could also shrink to the latency evidence. Take or leave both. The simulator runs in the PR body were recorded against 8f3eb3d plus a worktree patch, not the head commit. I could not confirm the content is byte-identical, but the PR is a single commit on that base. I also could not inspect the local evidence zip or the mutation runs. From the diff, the new tests would fail without the fix. No physical-device run was done, as you note. The branch moved to 8a3931a while I reviewed. That commit only adds evidence files, so this verdict still covers the code. |
|
|
Followed up on the masked-input coverage suggestion in #3820, commit Added native cases for a masked field removed or replaced after its first character. Both require In a disposable checkout, replacing the warmup read's identity-bound resolution with I retained the original investigation report: the requested work included understanding the engine protocol and safety differences, so those details remain useful evidence. The follow-up report provides the concise latency results separately. The follow-up also has uninstrumented native verification; historical measurements remain attributed to their original source revision. |
Summary
Reduce iOS latency by overlapping fresh system-host scans, deferring irrelevant keyboard reads, and shortening unreadable-value warmup. Retain first-character target checks and final verification.
On the upstream test app, median warm captures improved from 91.5 to 75.8 ms and password replacements from 3,317 to 3,044 ms. Removing the split was rejected after it typed into a successor input.
The further two-second fill investigation rejected Select All clearing: a provisional 2.55-second sample lacked login verification, and a masked-input regression failed while unchanged clearing passed. No further runtime shortcut is retained.
Scope: six runtime/test files and four evidence files. Context: tester-army/e2e#1236. Measurements, rejected experiments, and reproduction.
Validation
Tested commit:
8a3931a9c4fd8188636b7f5a36d5e56b6b97b038; comparison base:8f3eb3d2efde3654a560fddb39127d556e068352.pnpm check:affected --run --head 8a3931a9c4fd8188636b7f5a36d5e56b6b97b038: passed. Receipt.tmp/validation/run-wL2vPV/receipt.json:exactCommit=true,checkoutChanged=false; nine checks passed, two deduplicated, six skipped. 1,046 related tests passed.GitHub owns coverage, native lanes, and macOS replay; manual iOS replay lanes are parked. Physical-device verification and the full upstream suite were not rerun.