Written by

Fuma Nama

At

Wed Oct 22 2025

Fumadocs v16

Better framework support, better performance.

Back

Overview

We are pleased to announce the release of Fumadocs v16, a significant update that introduces breaking changes designed to refine our API surface, improve compatibility with Vite frameworks, and boost overall performance.

Major Changes

Fumadocs 16 removed substantial amount of deprecated APIs accumulated since v15.2 Vite support.

  • Removal of the Sidebar API: The fumadocs-core/sidebar module has been deprecated and removed. For sidebar implementations, we recommend adopting pre-built solutions from Shadcn UI.

  • Restructuring of Server-Side Exports: Exports from fumadocs-core/server have been redistributed to more specialized modules:

    • getGithubLastEdit -> fumadocs-core/content/github.
    • getTableOfContents -> fumadocs-core/content/toc.
    • PageTree and related utilities -> fumadocs-core/page-tree.
    • TOCItemType and TableOfContents -> fumadocs-core/toc.
    • removed createMetadataImage API, use Next.js Metadata API instead.
  • Default Switch to Shiki's JavaScript Regex Engine: To ensure seamless compatibility with environments like Cloudflare Workers, the JavaScript engine is now the default over the WASM-based Oniguruma. This change affects rehype-code (via the engine option) and fumadocs-core/highlight.

  • Minimum React.js Version Raised to 19.2.0: React 19.2 brings crucial performance improvements to Fumadocs UI.

    • Next.js Projects: Next.js projects using Fumadocs UI must use Next.js 16 or later, as Next.js uses its own canary channel for React.js.
  • fumadocs-ui/provider is removed:

    • Use fumadocs-ui/provider/next for root provider.
    • Use individual exports for contexts from fumadocs-ui/contexts/*.
  • fumadocs-ui/page:

    • Removed <DocsCategory />, use getPageTreePeers() instead:

      page.tsx
      import { getPageTreePeers } from 'fumadocs-core/page-tree';
      import { source } from '@/lib/source';
      
      <Cards>
        {getPageTreePeers(source.getPageTree(), '/docs/my-page').map((peer) => (
          <Card key={peer.url} title={peer.name} href={peer.url}>
            {peer.description}
          </Card>
        ))}
      </Cards>;
    • Removed the breadcrumbs.full option in <DocsPage />.

  • fumadocs-core/search/algolia: The document option is renamed to indexName.

  • fumadocs-core/search: Removed the deprecated createFromSource() signature in useSearch().

  • fumadocs-core/highlight: Removed withPrerenderScript and loading options from useShiki(), use React Suspense API instead.

  • fumadocs-core/i18n: Removed createI18nMiddleware (import from fumadocs-core/i18n/middleware instead).

  • fumadocs-core/source:

    • Removed transformers, pageTree.attach* options in loader(): use Loader Plugin instead.
    • Removed the page.file property: use page.path instead.
    • Removed internal utilities FileInfo and parseFilePath: use PathUtils instead.
  • Migration to Orama Cloud's New SDK: The @orama/core package replaces the prior client. Update your synchronization code as follows:

    import { sync } from 'fumadocs-core/search/orama-cloud';
    import { OramaCloud } from '@orama/core';
    
    const orama = new OramaCloud({
      projectId: '<project id>',
      apiKey: '<private api key>',
    });
    
    await sync(orama, {
      index: '<data source id>',
      documents: records,
    });

    You can also continue to use the legacy Orama Cloud client:

    import { ... } from 'fumadocs-core/search/orama-cloud';
    import { ... } from 'fumadocs-core/search/orama-cloud-legacy';
    
    useSearch({
      type: 'orama-cloud',
      type: 'orama-cloud-legacy',
    })

    Refer to the Orama Cloud documentation for further details.

Styling Changes

Fumadocs UI has included some aggressive styling changes that you should know about.

  • The default --fd-layout-width CSS variable is set to 1600px for optimal content scaling. You can override it if needed.

    :root {
      --fd-layout-width: 100vw;
    }

Fumadocs OpenAPI 9.6

A redesigned schema UI emphasizes client-side rendering (CSR) for recursive components, reducing bundle sizes and enhancing performance in complex JSON schemas.

Preview

Non-required fields now include a reset button, with support for content.showExampleInFields.

What's Next?

Fumadocs v16 is a new start for Fumadocs. We appreciate your feedback and contributions—please share your experiences on GitHub. Thank you for supporting Fumadocs :)