Skip to main content

Render Markdown. Add editing. Personalize it.

Three React packages that share one Markdown model, so an app can grow from displaying Markdown to authoring and personalizing it without changing how anything is stored.

npm i @react-markdown-kit/renderer
Start here

One component

No provider, no stylesheet, no configuration, no design system. Edit the Markdown on the left and watch the output follow, or open the renderer demo to try every option and copy the code.

import Markdown from '@react-markdown-kit/renderer'

<Markdown>{content}</Markdown>
Markdown (edit me)
Rendered

Release 1.4

Ships today. See the changelog.

  • Faster cold render
  • compileMarkdown is now public
MetricBeforeAfter
Cold render12.4 ms9.1 ms
Then, when you need it

The same document, personalized

Switch customer. The output changes and the authored source does not. That is the whole idea: it stays Markdown at every step.

Authored template never changes
# Account review for {{customer.name}}

Your plan renews on {{renewsAt | date:"medium"}}.

| Item | Amount |
| --- | ---: |
| Subscription | {{amounts.subscription \| currency:"USD"}} |
| Overage | {{amounts.overage \| currency:"USD"}} |
Resolved for Acme changes

Account review for Acme Industrial

Your plan renews on Nov 1, 2026.

ItemAmount
Subscription$4,800.00
Overage$312.50
Data passed to template()
{
  "customer": {
    "name": "Acme Industrial"
  },
  "renewsAt": "2026-11-01",
  "amounts": {
    "subscription": 4800,
    "overage": 312.5
  }
}
Resolution runs here in your browser with the same engine a Node service, an email job or a PDF pipeline would use. Resolving never calls React.

Two packages, and two plugin packages that work in both

The renderer never requires the editor. Templates and Mermaid diagrams install separately and are used only through the extension system.

Renderer

Markdown to React. Safe by default, unstyled by default, server-ready. Matches react-markdown on every compared prop.

Read more

Editor

Rich, source and preview authoring that reads and writes plain Markdown. Opening and closing a document does not change a byte of it.

Read more · Demo

Templates

template({ data }) resolves typed variables while the renderer parses; templateVariables() edits them as chips. A plugin package: no engine to call, and no React needed to resolve.

Read more

Diagrams

mermaid() turns a ```mermaid flowchart into static SVG in the renderer and a drawing canvas in the editor. A plugin package with one export.

Read more · Live editor

Evidence, not adjectives

We do not claim “drop-in replacement” or “fastest”. Every number here has a test behind it.

39/39
prop comparisons matching react-markdown 10.1.0
96%
CommonMark examples, counting raw HTML dropped by design
22/22
editor round trips that are byte-identical
0
styling dependencies in any package