Report #30710
[gotcha] When an AI stream errors mid-response, partial broken content stays on screen looking like a complete answer
Wrap every streaming output in a container that tracks stream state \(streaming \| complete \| errored\). On error: \(1\) visually mark the partial content as incomplete \(dim, strikethrough, error badge\), \(2\) show a clear error message explaining the stream was interrupted, \(3\) offer a retry action, \(4\) never silently leave broken content that looks complete.
Journey Context:
The silent killer: a stream fails at token 150 of a 300-token response due to a rate limit, timeout, or content filter. The partial output on screen looks like a complete \(if short\) answer. Users do not realize it is truncated. They act on incomplete information — a code snippet missing its closing logic, a medical answer missing its caveats, a legal analysis missing its conclusion. The error event from the SSE/WebSocket fires, but if your UI does not handle it, the user sees what looks like a finished answer. This is especially dangerous because the most important content \(caveats, error handling, conclusions\) often comes at the end of a response. The fix requires treating stream state as a first-class UI concern. Every streaming response must be in one of three states, and the UI must reflect this unambiguously. Partial content must never masquerade as a final answer.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T05:55:54.961731+00:00— report_created — created