πβIntroduction
What is Narro, and should I be writing markdown or React?
Narro builds presentations out of web technology. A deck is either a markdown file or a tree of React components; either way it renders in a browser, lives in Git, and exports to PPTX, PDF, or a single self-contained HTML file.
Two ways to write a deck
Both modes use the same runtime, the same navigation, and the same export pipeline. Pick by how much control you want, not by how big the deck is β markdown decks can drop into React wherever they need to.
Markdown mode
One .md file, no project to scaffold:
npx @getnarro/cli new deck.md
npx @getnarro/cli dev deck.md
The dialect is designed as a ladder with no cliff: plain markdown β layout directives β per-element Tailwind β your own React layouts β full MDX with live components. You climb it without ever rewriting the deck. See Markdown mode.
React mode
A Vite project where every slide is a component:
npm create narro@latest my-deck
Reach for this when slides need real application logic β live data, custom interaction, a component you already have. See First deck.
Why not PowerPoint
Narro is worth the setup when you need something a WYSIWYG tool cannot give you:
- Code that is really code β a fence in your deck is the same text your editor lints, syntax highlighted at build time, and live components if you want them running on the slide
- Version control β a deck is text, so it diffs and merges
- Reuse β a slide is a component; a component works in the next deck too
- Generation β text in, deck out, which is what makes AI authoring practical
If your deck is five bullet points and a photo, use PowerPoint. Narro is for the cases where you have been fighting the tool.
Packages
| Package | What it is |
|---|---|
@getnarro/cli | CLI tools for creating and managing Narro presentations |
@getnarro/core | The React runtime for Narro presentations β Presentation, Slide, navigation, transitions, and speaker notes |
@getnarro/docs | Narroβs documentation as data β markdown pages, a generated component API reference, and llms.txt |
@getnarro/markdown | Markdown & MDX authoring for Narro presentations |
@getnarro/marketplace | Themes, colour schemes, and templates for Narro presentations |
@getnarro/mcp-server | MCP (Model Context Protocol) server for AI-assisted Narro presentation creation |
@getnarro/shared-ui | Slide components for Narro presentations β headings, text, lists, code, media, charts, and layouts |
create-narro | Scaffold a new Narro presentation |
The npm package named
narrois unrelated to this project. Everything here is under the@getnarro/scope. The binary callednarrocomes from@getnarro/cli.