Problem
ChatThread.tsx maps the full items array (plus history) into the DOM. For long sessions with many tool cards this can grow large and cause scroll/stream jank on mobile devices.
Suggested fix
Virtualize the thread (windowed rendering) so only on-screen rows are mounted, preserving the auto-scroll/pinned behavior.
Filed from a UI research sweep of the Helm mobile app (landing + live demo session) using Playwright + full source review, cross-referenced against Claude, ChatGPT, GitHub Copilot Chat, and Codex/Claude Code UIs.
Problem
ChatThread.tsxmaps the fullitemsarray (plus history) into the DOM. For long sessions with many tool cards this can grow large and cause scroll/stream jank on mobile devices.Suggested fix
Virtualize the thread (windowed rendering) so only on-screen rows are mounted, preserving the auto-scroll/pinned behavior.
Filed from a UI research sweep of the Helm mobile app (landing + live demo session) using Playwright + full source review, cross-referenced against Claude, ChatGPT, GitHub Copilot Chat, and Codex/Claude Code UIs.