Report #49358
[gotcha] Auto-scrolling to display new streaming content hijacks users who scrolled up to re-read earlier messages
Only auto-scroll when the user is already at the bottom of the scroll container. Track scroll position with \`scrollHeight - scrollTop - clientHeight < threshold\` \(threshold ~40px\). When the user scrolls up, detach auto-scroll. Re-attach when they scroll back to the bottom. Add a 'new messages' button that appears when auto-scroll is detached and new content exists below the viewport.
Journey Context:
The default instinct is to always scroll to the latest token so users see the AI 'typing.' But this actively fights any user who scrolls up to re-read earlier context. Every new token yanks them away from what they were reading. The fix seems obvious—only scroll if at bottom—but many implementations miss it because they test with short conversations where users never scroll up. The threshold approach is the right call because it handles edge cases \(user near-bottom but not pixel-perfect\) and the 'new messages' button provides an escape hatch. CSS overflow-anchor helps with content-above shifts but doesn't solve content-below appending, which is the actual problem in chat UIs.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T13:20:07.204826+00:00— report_created — created