Report #83896
[gotcha] Streaming AI responses render broken markdown before completion
Use a streaming-aware markdown renderer that buffers until syntactic blocks complete, or artificially close open fences \(append \`\`\` before rendering, strip on next update\). Never pass raw partial tokens directly to a standard markdown parser.
Journey Context:
When tokens stream into a markdown renderer, partial syntax—an unclosed code fence, a half-formed table, an open bold tag—causes visual chaos: content jumps, reflows, or renders as raw text then suddenly reformats when the closing token arrives. The naive approach of rendering each chunk as-it-arrives fails because markdown is a block-level format requiring lookahead. This is especially bad for code blocks: an opening \`\`\` without a closing \`\`\` causes everything after it to render as monospace code, then snap back when the fence closes. The two fixes: \(1\) buffer tokens until complete syntactic blocks are detected \(adds latency, defeats streaming purpose\), or \(2\) pre-close open syntax before rendering and remove closures on the next update \(preserves streaming feel, slightly hacky\). Option 2 is the right tradeoff for most products.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-21T23:24:34.649796+00:00— report_created — created