perf(mobile): preserve Markdown views while streaming - #9664
Conversation
Thread transfer impact✅ Thread transfer remains within every enforced ceiling.
Baseline: Scenario and decoded snapshot size10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.
Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed. |
ApprovabilityVerdict: Approved at Macroscope's review found this PR approvable — The PR narrowly stabilizes iOS Markdown component identities during streaming, preserving existing text, code, and block views while still remounting when rendering attributes or node types change. The implementation is covered by focused tests and introduces no schema, deployment, security, billing, or product-default changes. You can add or adjust custom eligibility rules. Learn more. |
|
Superseded by #11211 ( |
|
Closed as superseded by #11211. |
Streaming Markdown used growing end offsets and text in React keys. Each update could replace the active text view, code block, and scroll container.
Keep block keys tied to type and start position. Keep text-run and code-token keys stable as content grows. Formatting and block-type changes still get separate identities.
Checked:
No browser or device testing, as requested. Selection, copy feedback, and horizontal scrolling have source checks only. No native source or configuration changed.
Merge hold: CI detects an iOS fingerprint change because Expo hashes the whole local Markdown module. This needs a native-release merge window under the current fingerprint policy.
Part of the performance audit.
Created with GPT-6 Astra (preview) in Codex.