Written by

Hanzo AI

At

Wed Oct 22 2025

Fumadocs v16

Better framework support, better performance.

Back

Overview

We are pleased to announce the release of Hanzo Docs 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 @hanzo/docs-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 @hanzo/docs-core/server have been redistributed to more specialized modules:

    • getGithubLastEdit -> @hanzo/docs-core/content/github.
    • getTableOfContents -> @hanzo/docs-core/content/toc.
    • PageTree and related utilities -> @hanzo/docs-core/page-tree.
    • TOCItemType and TableOfContents -> @hanzo/docs-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 @hanzo/docs-core/highlight.

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

    • Next.js Projects: Next.js projects using Hanzo Docs UI must use Next.js 16 or later, as Next.js uses its own canary channel for React.js.
  • @hanzo/docs-base-ui/provider is removed:

    • Use @hanzo/docs-base-ui/provider/next for root provider.
    • Use individual exports for contexts from @hanzo/docs-base-ui/contexts/*.
  • @hanzo/docs-base-ui/page:

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

      page.tsx
      import { getPageTreePeers } from '@hanzo/docs-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 />.

  • @hanzo/docs-core/search/algolia: The document option is renamed to indexName.

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

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

  • @hanzo/docs-core/i18n: Removed createI18nMiddleware (import from @hanzo/docs-core/i18n/middleware instead).

  • @hanzo/docs-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 '@hanzo/docs-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 '@hanzo/docs-core/search/orama-cloud';
    import { ... } from '@hanzo/docs-core/search/orama-cloud-legacy';
    
    useSearch({
      type: 'orama-cloud',
      type: 'orama-cloud-legacy',
    })

    Refer to the Orama Cloud documentation for further details.

Styling Changes

Hanzo Docs 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 Hanzo Docs. We appreciate your feedback and contributions—please share your experiences on GitHub. Thank you for supporting Fumadocs :)