A drop-in replacement for react-markdown, designed for AI-powered streaming.
npm install @phaserjs/streamdown-litereact-markdown
bash
npm i @phaserjs/streamdown-lite
`
Then, update your Tailwind globals.css to include the following.
`css
@source "../node_modules/@phaserjs/streamdown-lite/dist/index.js";
`
Make sure the path matches the location of the node_modules folder in your project. This will ensure that the Streamdown styles are applied to your project.
Usage
$3
`tsx
import { Streamdown } from '@phaserjs/streamdown-lite';
export default function Page() {
const markdown = "# Hello World\n\nThis is streaming markdown!";
return {markdown} ;
}
`
$3
`tsx
'use client';
import { useChat } from '@ai-sdk/react';
import { useState } from 'react';
import { Streamdown } from '@phaserjs/streamdown-lite';
export default function Page() {
const { messages, sendMessage, status } = useChat();
const [input, setInput] = useState('');
return (
<>
{messages.map(message => (
{message.parts.filter(part => part.type === 'text').map((part, index) => (
{part.text}
))}
))}
onSubmit={e => {
e.preventDefault();
if (input.trim()) {
sendMessage({ text: input });
setInput('');
}
}}
>
value={input}
onChange={e => setInput(e.target.value)}
disabled={status !== 'ready'}
placeholder="Say something..."
/>
>
);
}
`
Props
Streamdown accepts all the same props as react-markdown, plus additional streaming-specific options:
| Prop | Type | Default | Description |
|------|------|---------|-------------|
| children | string | - | The Markdown content to render |
| parseIncompleteMarkdown | boolean | true | Parse and style unterminated Markdown blocks |
| className | string | - | CSS class for the container |
| components | object | - | Custom component overrides |
| remarkPlugins | array | [remarkGfm] | Remark plugins to use |
| rehypePlugins | array | [rehypeKatex] | Rehype plugins to use |
| allowedImagePrefixes | array | ['*'] | Allowed image URL prefixes |
| allowedLinkPrefixes | array | ['*'] | Allowed link URL prefixes |
| defaultOrigin | string | - | Default origin to use for relative URLs in links and images |
Note: Streamdown-lite also accepts all props from react-markdown through inheritance.
Architecture
Streamdown-lite is built as a monorepo with:
- packages/streamdown-lite - The core React component library
- apps/website - Documentation and demo site
Development
`bash
Install dependencies
pnpm install
Build the streamdown-lite package
pnpm --filter streamdown-lite build
Run development server
pnpm dev
Run tests
pnpm test
Build packages
pnpm build
``