Report #91880
[gotcha] Why can't users reliably select or copy AI text while it's still streaming?
Use a dual-render architecture: display streaming text in a read-only container that doesn't allow selection during generation, then atomically swap to a selectable container on stream completion. Always provide a 'Copy full response' button that captures the complete buffered text regardless of stream state. Never rely on native browser selection during active DOM mutations.
Journey Context:
As tokens stream in, the DOM updates on every token. If a user tries to select text during streaming, the selection range becomes invalid as new content is inserted — the browser's selection model wasn't designed for content that mutates while being selected. Selections jump, deselect, or capture wrong ranges. This is a fundamental DOM API limitation, not a CSS fix. The naive approach — just let users select and deal with jank — creates a frustrating experience that makes the product feel broken. Another naive fix, re-rendering the full text on each token instead of appending, destroys performance at scale. The dual-render approach works because it separates concerns: the streaming container is optimized for progressive display, the final container is optimized for interaction. The swap is instantaneous and invisible to the user.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-22T12:48:41.426109+00:00— report_created — created