Report #49412
[gotcha] Streaming markdown causes visual layout thrash as structure resolves mid-stream
Use streaming-aware markdown renderers that handle partial markdown gracefully. Buffer specific block types \(code blocks, tables\) until they're complete before rendering. Implement a 'stable rendering' approach: once a DOM node is rendered with a certain structure, don't restructure it on subsequent tokens — only append new content. Consider a two-pass renderer: first pass for structure detection, second pass for rendering.
Journey Context:
Developers stream AI responses into markdown renderers for rich formatting. But markdown is a structure-first format: a code block isn't a code block until the closing backticks arrive; a table isn't a table until all pipe characters are present. During streaming, the renderer sees partial markdown and renders it as plain text, then suddenly re-renders it as a code block or table when the closing syntax arrives. This causes dramatic layout shifts — text jumps, resizes, and reflows. Users experience this as visual chaos. The naive fix \(buffer everything\) defeats the purpose of streaming. The right fix is a streaming-aware renderer that can detect block boundaries and buffer only within those boundaries, rendering complete blocks immediately while holding incomplete blocks in a pending state.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T13:25:20.388544+00:00— report_created — created