Streamdown: a react-markdown replacement built for AI streaming
A drop-in replacement for react-markdown, designed for AI-powered streaming.
At a glance
- What is it?
- Streamdown is a Vercel-published drop-in replacement for react-markdown, designed to render Markdown as it streams token by token from an AI model, handling incomplete syntax and animating text without the flicker a general renderer produces. Its license metadata is unrecognized, so check the LICENSE file.
- Who is it for?
- Adopt Streamdown if you build AI chat or assistant UIs in React and want Markdown that renders cleanly while it streams token by token, as a drop-in replacement for react-markdown. Do not switch if you only render static, complete Markdown, where react-markdown is the proven default, and do not skip reading the LICENSE file, since the repository's license metadata is unrecognized.
- Can I use it commercially?
- Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
- Is it still maintained?
- Yes. The repository last received commits 3 days ago.
- What is it written in?
- Mainly TypeScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
What Streamdown fixes
When an AI model streams a Markdown answer token by token, a general-purpose renderer struggles: half-arrived syntax renders wrong, code fences and lists flicker as they complete, and the text jumps as it settles. Streamdown, published by Vercel, is a drop-in replacement for react-markdown built specifically for that case. It renders Markdown that is still streaming, handling incomplete syntax gracefully and animating the text smoothly as it arrives, so a chat interface reads well while the model is still typing. The audience is React developers building AI chat and assistant UIs who currently use react-markdown and see it misbehave mid-stream. Being a drop-in replacement is the pitch: you swap the component and get streaming-aware rendering without rewriting your UI, which is why it targets the exact API surface react-markdown already occupies.
Streaming-aware rendering and animation
The mechanism is rendering that expects incomplete input. Where react-markdown assumes a complete Markdown string, Streamdown is built to parse and render partial Markdown as more tokens arrive, so an unfinished code block or list does not render as broken text and then snap into place. It also handles animation across the stream: the changelog describes serializing streaming animation across blocks so word stagger runs on a shared timeline and sibling sections do not fade in on top of each other, which is the kind of detail that separates a purpose-built streaming renderer from a general one. It is designed to work with AI streaming setups such as the ones Vercel's AI tooling produces. The core idea is that streaming is the primary case, not an afterthought, so the component is engineered around progressively arriving, sometimes syntactically incomplete, Markdown rather than a finished document.
Installing Streamdown
Streamdown is an npm package, installed like any React dependency:
npm i streamdownBecause it is a drop-in replacement, you import its component in place of react-markdown and pass the streaming Markdown string as it grows, and the README notes practical setup details, such as adjusting a relative path in a monorepo where dependencies are hoisted to the root node_modules. The first real use is swapping react-markdown for Streamdown in a component that renders an AI response and feeding it the model's output as it streams, then watching how incomplete syntax and block transitions render compared with the old renderer. That side-by-side is the quickest way to see whether it solves the flicker and broken-syntax problems you had, which is the reason to adopt it.
Where Streamdown is scoped
The limitations are those of a focused component. It is React-specific, so it does not help Vue, Svelte or other frameworks, which the related searches show people asking about. It is aimed at the streaming case, so if you only ever render complete, static Markdown, its streaming machinery is not what you need and a general renderer is fine. As a rendering layer it inherits the usual Markdown concerns, sanitizing untrusted content, handling code highlighting and math, which you still configure and secure. And there is a licensing note: the repository's license metadata is unrecognized rather than a clear standard license, so read the LICENSE file to confirm the exact terms before depending on it, even though it is a Vercel project. These are narrow boundaries; within its purpose, streaming Markdown in React, it is doing one job deliberately.
Streamdown versus react-markdown
The direct comparison is react-markdown itself, which Streamdown replaces. react-markdown is the established, general-purpose Markdown renderer for React, mature and widely used, but it was built to render complete documents, so streaming input, incomplete syntax arriving token by token, is not its design point and it can flicker or mis-render mid-stream. Streamdown keeps a compatible, drop-in API but re-engineers the rendering for progressive input and adds streaming animation. The choice is about your use. If you render static or fully-formed Markdown, react-markdown is the proven default and there is no need to switch; if you render live AI output as it streams and have hit its rough edges there, Streamdown is purpose-built for that and swapping is low-effort by design. It is a specialization of the same job, not a broader tool.
License to verify and active development
Streamdown's repository shows an unrecognized license in its metadata, so despite being a Vercel-published project you should open the LICENSE file to confirm the terms before building on or redistributing it, rather than assuming. The last push was on 2026-09-15, and the changelog shows active refinement of the streaming animation behavior, such as serializing animation across blocks, which is exactly the kind of streaming-specific work that justifies a dedicated component. It is a TypeScript monorepo published on npm with a docs site. Adopt it when you build AI chat or assistant UIs in React and want streaming-aware Markdown rendering as a drop-in for react-markdown, install it with npm i streamdown, swap it into a streaming response component to compare rendering, and check the LICENSE file to confirm the terms fit your intended use.
Editorial conclusion
Adopt Streamdown if you build AI chat or assistant UIs in React and want Markdown that renders cleanly while it streams token by token, as a drop-in replacement for react-markdown. Do not switch if you only render static, complete Markdown, where react-markdown is the proven default, and do not skip reading the LICENSE file, since the repository's license metadata is unrecognized. Install it with npm i streamdown, swap it into a streaming response component to compare rendering against react-markdown, and confirm the license fits your use.
Frequently asked questions
What is Streamdown?
Streamdown is a Vercel-published drop-in replacement for react-markdown, built to render Markdown as it streams token by token from an AI model, handling incomplete syntax and animating text smoothly rather than flickering.
How do I install it?
Install the npm package with npm i streamdown and import its component in place of react-markdown, passing the streaming Markdown string as it grows. In a monorepo you may need to adjust the relative path for hoisted dependencies.
What license is Streamdown under?
The repository's license metadata is unrecognized rather than a clear standard license, so despite being a Vercel project you should read the LICENSE file to confirm the exact terms before depending on or redistributing it.
Community notes