finds.dev← search

// the find

Simon-He95/markstream-vue

★ 3,021 · Vue · MIT · updated Sep 2026

Multi-framework streaming Markdown renderers for AI apps: Vue/Nuxt, React/Next.js, Svelte, and Angular, with Mermaid, KaTeX, stream-diffs code blocks, safe HTML, and low-jitter updates.

A Vue 3/Nuxt streaming Markdown renderer aimed at AI chat UIs — it's built specifically to handle Markdown that's still arriving token-by-token (SSE/websocket) without the flicker or re-render cost of feeding partial text into a normal renderer like markdown-it. It's one of six parallel framework packages (Vue, React, Svelte, Angular, Octane, Vue2) from the same author, so this is really one node of a bigger renderer family.

Two real render strategies for two real problems: virtual windowing for long docs (steady memory, no skeleton flashes) and incremental batching for a typewriter effect on live chat — most streaming-markdown libraries only do one of these. Mermaid renders progressively as syntax becomes available instead of blocking until the diagram is complete, and code blocks hand off from a raw `<pre>` to a diff-aware surface (`stream-diffs`) once streaming settles. Safe HTML is a first-class prop (`htmlPolicy="escape"`) rather than something you bolt on for untrusted content. There's also a real SSR/worker path — pre-parse to typed nodes on the server, hydrate with `:nodes`, keep streaming client-side — which a lot of streaming renderers skip entirely.

The README is close to 500 lines of badges, sponsor QR codes, roadmap, video links, and 'choose your path' tables before you hit the actual props reference — for a library this is unusually promotional. The docs tree backs that up: it's full of keyword-shaped pages (use-cases/llm-token-stream-markdown.md, use-cases/mobile-webview.md, compare/streamdown.md, compare/react-markdown.md) that read more like programmatic SEO than documentation someone would actually navigate to, which makes the 3k stars worth taking with a grain of salt. Version 2.0 dropped the built-in Monaco and stream-markdown code-block runtimes and moved that functionality behind the optional `stream-diffs` peer — from the same maintainer, so it's not real decoupling, just a second package to install and a breaking change to migrate through. Six framework ports from what looks like a single maintainer (Simon-He95) is a lot of surface area to keep at parity — check the React/Svelte/Angular package's own issues before assuming they match the Vue package's maturity.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →