Migrations

Migrating from Fumadocs

Move Fumadocs MDX content and meta.json files into Shiso.

Fumadocs and Shiso both build docs from MDX with title / description frontmatter, so content moves with little editing. The meta.json files and source.config.ts are replaced by docs.json, and fumadocs-ui components map to Shiso built-ins.

What carries over#

  • Content: .mdx pages with title, description, and icon frontmatter (icon moves to the page object in docs.json)
  • Structure: nested folders become nested routes
  • Static assets: files from public/ stay in public/
  • Components: callouts, tabs, steps, cards, and accordions have direct equivalents

Migration steps#

1
Create a Shiso project
2
Copy content

Move your content/docs tree into Shiso's content/docs, keeping the folder structure.

3
Replace meta.json files with navigation

Fumadocs orders the sidebar with per-folder meta.json files. Shiso declares the whole tree in docs.json:

Folders with meta.json become groups; pages order replaces the pages array in each meta.json. Root folders (tab-like sections) become tabs.

4
Move layout configuration

Map layout.config.tsx / app options into docs.json: site title → name, logo → logo, links → navbar.links, GitHub URL → a navbar.links icon entry. Delete source.config.ts and the Next.js scaffolding — Shiso needs neither.

5
Remove imports and validate

Delete fumadocs-ui component imports — Shiso injects its components into every page — then:

Component mapping#

FumadocsShiso
<Callout> (default)<Info>
<Callout type="warn"><Warning>
<Callout type="error"><Danger>
<Tabs items={[...]}> + <Tab value><Tabs> + <Tab title>
<Steps> + <Step><Steps> + <Step title> — headings inside steps become title props
<Cards> + <Card><Columns> + <Card>
<Accordions> + <Accordion><AccordionGroup> + <Accordion title>
<TypeTable><ParamField> / <ResponseField> lists
<Files> / <File> / <Folder>No equivalent — use a fenced code block
<Banner>banner in docs.json

Frontmatter differences#

Fumadocs fieldShiso equivalent
title, descriptionSame
iconicon on the page object in docs.json (lucide names in both)
fullNo equivalent
indexNot needed — list the page in navigation

Not carried over#

  • Next.js runtime features — route handlers, loader() / source APIs, and OpenAPI integration have no equivalent
  • Custom MDX components — anything from your own codebase needs a built-in replacement or plain Markdown
  • Orama / hosted search — replaced by built-in client-side search (⌘K / Ctrl K)

After the move#

Last updated on