MDX

Default MDX Components

Usage

The default MDX components include Cards, Callouts, Code Blocks and Headings.

import defaultMdxComponents from 'fumadocs-ui/mdx';

To support links with relative file path in href, override the default a component with:

import { createRelativeLink } from 'fumadocs-ui/mdx';
import { source } from '@/lib/source';

const page = source.getPage(['...']);

return (
  <MdxContent
    components={{
      // override the `a` tag
      a: createRelativeLink(source, page),
    }}
  />
);
[My Link](./file.mdx)

Server Component only.

Default Components

The following components are included by default:

Headings

All headings (h1 - h6) are automatically given an ID based on their content, which allows for linking directly to sections.

Code Blocks

Syntax highlighting is enabled by default with support for:

  • Line highlighting
  • Word highlighting
  • Line numbers
  • Copy button
  • Title/filename display

Internal links use next/link for client-side navigation. External links are automatically marked with target="_blank" and rel="noreferrer noopener".

Images

Images are optimized using next/image when using built-in content sources.

Customizing Components

You can override any default component by passing your own implementation:

import defaultMdxComponents from 'fumadocs-ui/mdx';

<MDX
  components={{
    ...defaultMdxComponents,
    // Override the heading component
    h1: ({ children }) => (
      <h1 className="text-4xl font-bold">{children}</h1>
    ),
  }}
/>

Adding Custom Components

You can add any React component to be used in your MDX files:

import defaultMdxComponents from 'fumadocs-ui/mdx';
import { MyCustomComponent } from '@/components/my-custom';

<MDX
  components={{
    ...defaultMdxComponents,
    MyCustomComponent,
  }}
/>

Then use it in your MDX:

<MyCustomComponent prop="value" />

On this page