OrbitDocs packages are coming to npm soon. Until then, run it from the GitHub repo →
Customize

All Fumadocs options

Every Fumadocs customization option and where to set it in OrbitDocs, in the config, in lib/overrides.tsx, or in a docs app file.

OrbitDocs guides are a Fumadocs site. Options that are plain data (text, numbers, switches) have a key in orbitdocs.config.ts. Options that take React (components, elements, functions) go in lib/overrides.tsx of the docs app, which every layout and page in app/ reads. A few are set elsewhere in the docs app, because that app is yours.

How to read the tables:

  • Config: a key in orbitdocs.config.ts.
  • Override: a key of the overrides object in lib/overrides.tsx (root, layout or page), merged over the config. See Override React-only options.
  • App file: change the named file in the docs app.
  • Content: meta.json, frontmatter or code fence meta.
lib/overrides.tsx
import type { OrbitOverrides } from '@orbitdocs/next';

export const overrides: OrbitOverrides = {
  root: {},   // RootProvider: search dialog, theme, banner content
  layout: {}, // Every layout and the top bar: nav, links, slots, sidebar, tabs
  page: {},   // Guide pages: TOC header and footer, previous / next, page slots
};

Layout and navbar

Fumadocs optionWhereKey or prop
Layout (docs, notebook, flux, glass, home)Configlayout.type. See Layouts.
Notebook navbar mode (nav.mode)Configlayout.navMode
Transparent navbar (nav.transparentMode)Configlayout.transparentNav
Nav titleConfigsite.logo or site.title. See Branding.
Nav title URL (nav.url)Confignavigation.titleUrl
Custom nav title (nav.title, nav.children)Overridelayout.nav
Links: main, icon, button, menuConfignavigation.header. See Navigation bar.
Link on (navbar or mobile menu)Configon: 'nav' | 'menu' | 'all' on a header item
Link active matchingConfigactive: 'url' | 'nested-url' | 'none' on a header item
Custom link items (type: 'custom')Overridelayout.links (an array is added after the config's; a function returns the final list)
GitHub link (githubUrl)Configsite.github
Theme switch on/off and modeConfigtheme.switch.enabled, theme.switch.mode
Search button (searchToggle)Configsearch.enabled; its props in layout.searchToggle (Override)
Layout slots (navTitle, themeSwitch, searchTrigger, sidebar, header, …)Overridelayout.slots
containerPropsOverridelayout.containerProps (docs, notebook, flux)
Fumadocs optionWhereKey or prop
sidebar.enabledConfiglayout.sidebar.enabled (every layout; notebook and glass through sidebar slots)
sidebar.collapsibleConfiglayout.sidebar.collapsible
sidebar.defaultOpenLevelConfiglayout.sidebar.defaultOpenLevel
sidebar.prefetchConfiglayout.sidebar.prefetch
sidebar.bannerConfig / Overridelayout.sidebar.banner (text), or layout.sidebar.banner in overrides (React)
sidebar.footerConfig / Overridenavigation.sidebar links, or layout.sidebar.footer in overrides (React)
sidebar.components (custom page tree items)Overridelayout.sidebar.components
Root folders as tabs ("root": true)Contentmeta.json. See Sidebar.
tabModeConfiglayout.tabMode
tabs (a custom list, or none)Configlayout.tabs (false or a list of { title, url, description, icon })
tabs with React icons, or { transform }Overridelayout.tabs
Page tree order, separators, iconsContentmeta.json and frontmatter. See Navigation.

The glass layout's sidebar takes no banner, footer or components.

Page

Fumadocs optionWhereKey or prop
fullConfiglayout.full, or full: true in a page's frontmatter
Breadcrumb enabled, includeRoot, includePage, includeSeparatorConfiglayout.breadcrumb
Footer (previous / next)Configlayout.footer
Footer items (custom previous / next)Overridepage.footer.items; page can be a function of the page
Last updatedConfiglayout.lastUpdated (from git)
Edit on GitHubConfiglayout.editOnGithub
Page actions (copy Markdown, open in ChatGPT / Claude)Configlayout.pageActions. OrbitDocs uses its own buttons.
Fumadocs ViewOptionsPopover / MarkdownCopyButtonNot usedReplaced by layout.pageActions
Page slots (container, footer, breadcrumb, toc)Overridepage.slots

Table of contents

Fumadocs optionWhereKey or prop
tableOfContent.enabled (and the mobile popover)Configlayout.toc.enabled
style: normal, clerk, blockConfiglayout.toc.style (default clerk). See Table of contents.
singleConfiglayout.toc.single
TOC header / footer contentOverridepage.tableOfContent, page.tableOfContentPopover
TOC style and single in the glass layoutNot possibleGlass's page takes no TOC style or single option (Fumadocs 16.15); orbitdocs check warns
Inline TOC (InlineTOC)App fileRegister it. See MDX components.

Theme and colors

Fumadocs optionWhereKey or prop
Color presets (neutral, black, vitepress, dusk, catppuccin, ocean, purple, solar, emerald, ruby, aspen, shadcn)Configtheme.preset. See Themes and colors.
Primary colorConfigtheme.accent
Any --color-fd-* colorApp fileapp/global.css
Layout widths (--fd-layout-width, --fd-sidebar-width, --fd-toc-width)Configtheme.widths
Default theme, system themeConfigtheme.defaultMode
Theme hotkey (D toggles light and dark)Configtheme.hotKey (one key, or false)
Other next-themes optionsOverrideroot.theme
FontsApp fileapp/layout.tsx and app/global.css. See Branding.
RTL (dir="rtl")Configsite.dir (sets <html dir> and Fumadocs' dir)
FaviconConfigsite.favicon (default public/icon.png)
Fumadocs optionWhereKey or prop
Enable searchConfigsearch.enabled
HotkeyConfigsearch.hotKey (one key)
Suggested linksConfigsearch.links
delayMsConfigsearch.delayMs
Tags and tag filters, allowClearConfigsearch.tags (Guides and one per API), search.allowClear
Static (Orama) searchBuilt inapp/api/search/route.ts
Dialog footer, other dialog propsOverrideroot.search.options
Algolia, Orama Cloud, server-side search (SearchDialog)Overrideroot.search.SearchDialog, plus the index it needs. See Search.
Fumadocs optionWhereKey or prop
Banner content and linkConfigbanner.content, banner.url
React contentOverrideroot.banner
variant (normal, rainbow)Configbanner.variant
Dismissible idConfigbanner.id, banner.dismissible
height, rainbowColors, changeLayoutConfigbanner.height, banner.rainbowColors, banner.changeLayout (default true)

Code blocks and MDX

Fumadocs optionWhereKey or prop
Titles, language icons, tab, lineNumbers, noCopy, notation comments, npm tabsContentCode fence meta. See Code blocks.
Shiki themes, default languageConfigcodeBlocks.themes, codeBlocks.defaultLanguage
Other rehypeCodeOptions (langs, langAlias, transformers, …)App fileorbitMdxOptions({ rehypeCodeOptions }) in lib/source.ts, merged over codeBlocks
Remark and rehype plugins (math, Mermaid, admonitions, Twoslash)App fileorbitMdxOptions({ remarkPlugins, rehypePlugins }) in lib/source.ts. See Add MDX plugins.
Heading anchors and custom ids ([#id])Built in
Default MDX components (callouts, cards, steps, tabs, accordions, type table)Built inSee MDX components.
Files, ImageZoom, InlineTOC, GithubInfo, DynamicCodeBlockApp fileRegister in app/(guides)/[...slug]/page.tsx
Tabs groupId, persist, updateAnchorContentProps on <Tabs>

Not supported yet

  • Internationalization (i18n): one language per site. There is no language switch and no translated routes.
  • Open Graph images (fumadocs-ui/og) and a sitemap.
  • TOC style and single in the glass layout (Fumadocs' glass page has no such options).

Next steps

Last updated on

On this page