Fumadocs

Static Export

Enable static export with Fumadocs

Overview

Fumadocs is fully compatible with Next.js static export, allowing you to export the app as a static HTML site without a Node.js server.

next.config.mjs
/**
 * @type {import('next').NextConfig}
 */
const nextConfig = {
  output: 'export',
 
  // Optional: Change links `/me` -> `/me/` and emit `/me.html` -> `/me/index.html`
  // trailingSlash: true,
 
  // Optional: Prevent automatic `/me` -> `/me/`, instead preserve `href`
  // skipTrailingSlashRedirect: true,
};

See Next.js docs for limitations and details.

Cloud Solutions

Since the search functionality is powered by remote servers, static export works without configuration.

You need to:

  1. Build the search indexes statically using staticGET.

  2. Enable static mode on search client from Root Provider:

    app/layout.tsx
    import { RootProvider } from 'fumadocs-ui/provider';
    import type { ReactNode } from 'react';
     
    export default function RootLayout({ children }: { children: ReactNode }) {
      return (
        <html lang="en" suppressHydrationWarning>
          <body>
            <RootProvider
              search={{
                options: {
                  type: 'static',
                },
              }}
            >
              {children}
            </RootProvider>
          </body>
        </html>
      );
    }

This allows the route handler to be statically cached into a single file, and search will be computed on browser instead.

How is this guide?

On this page