Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
54 KiB
fumadocs-core
16.9.3
Patch Changes
42f0255: Supportinvalidate&revalidateon dynamic loadera807798: Improve source API utils & types
16.9.2
Patch Changes
16.9.1
Patch Changes
e77b9b3: IntroducepagesIndexproperty to explicitly define the index page for folder334c8fd: [i18n] support different orders ofpreset()calls
16.9.0
Minor Changes
214d5b0: Introduce new translations API
Patch Changes
818ed21: supportsortoption in page tree builder3b66725: Supportsort.byin loader page tree option
16.8.12
Patch Changes
768b676: StandardizestructuredDatain page data
16.8.11
Patch Changes
1dc86c7: loosen the range for waku
16.8.10
Patch Changes
16.8.9
Patch Changes
2ca3eab: Supporttab-groupin codeblock tabs
16.8.8
16.8.7
16.8.6
16.8.5
Patch Changes
79d3209: Narrow schema type for private OpenAPI properties
16.8.4
Patch Changes
61b15e9: fix Shiki languages not loaded under lazy mode1a5433c: Support$in locale for page tree generation
16.8.3
16.8.2
16.8.1
16.8.0
Minor Changes
68c2b49: Support multi-source natively inloader()API92a1204: IntroducedynamicLoader()API,loader()with revalidation supported out-of-the-box
Patch Changes
b60fa32: Support function for loader option in Search APIa744f9f: Support frontmatter parsing at core-level
16.7.16
Patch Changes
16.7.15
Patch Changes
e1567e2: use local fork of Shiki rehype integration9a200c8: fix multi-line in remark-npmc731a92: Implement selective re-render for TOCa4189ce: Improve AST plugins
16.7.14
Patch Changes
2d8f596: fixnpm packskipping nestednode_modules
16.7.13
Patch Changes
690ddb9: bundle more deps
16.7.12
16.7.11
Patch Changes
5524927: extend page tree root scoped47c4f1: LLMs: support generating section for a specific page tree node
16.7.10
16.7.9
Patch Changes
f580ef6: Fix deserialized page tree item name styles
16.7.8
16.7.7
Patch Changes
0a6507b: ImproveremarkSteps()integration & support tag usage
16.7.6
16.7.5
Patch Changes
55479b3: Improve TOC detection logic
16.7.4
16.7.3
16.7.2
16.7.1
16.7.0
Minor Changes
f45d703: stabilize Shiki factory API
Patch Changes
45aa454: Supportplaceholder()API in llms.txt generation
16.6.17
Patch Changes
-
c2678c0: Improvellms.txtgeneration viaremark-llmsplugin -
417f07a: Expose Markdown stringifier -
bb07706: Include root items only once in Breadcrumb.Previously, when
includeRootwas set totrue, the root item was added twice to breadcrumbs. -
f065406: Support fuma-content integration
16.6.16
Patch Changes
054da73: Implementlimitoption on search servers
16.6.15
16.6.14
Patch Changes
8382363: [Remark Image] setplaceholdertononeby default
16.6.13
16.6.12
Patch Changes
ddb0f81: require explicit import for new search clients
16.6.11
Patch Changes
d35f30c: deprecatehighlighton content highlighterae3e742: Support flexsearch server & client269dfb3: Redesign search client adapter interface
16.6.10
Patch Changes
9b5c2dd: SupportllmsAPI in Loader API
16.6.9
Patch Changes
4d05c4e: [Search API] Generate breadcrumbs for custombuildIndexoption.5f687b6: [rehype-toc] Supportdataexport mode
16.6.8
Patch Changes
5453502: use Shiki.js v4
16.6.7
16.6.6
16.6.5
Patch Changes
16.6.4
16.6.3
16.6.2
16.6.1
Patch Changes
00c9a0f: Remove default rerank value from mixedbread search
16.6.0
Minor Changes
-
9241992: Support Markdown in search resultsThis deprecates the old
contentWithHighlightsfield in search results, the highlights are marked with Markdown instead (e.g.Hello <mark>World</mark>).
Patch Changes
64a0057: [Remark Feedback] skip MDX elements by default to avoid interfering with component logic
16.5.4
Patch Changes
1ad8a38: Support server-side Mixedbread search API, deprecate client-side adapter3e8efb0: [remark-structure] hotfix filter MDX elements
16.5.3
Patch Changes
be957f1: usemdast-util-to-markdownfor accurate stringification
16.5.2
Patch Changes
c22f6ee: bump tsdown
16.5.1
16.5.0
Minor Changes
9ba1250: Support Universal Shiki configuration
16.4.11
Patch Changes
a75a84d: fix duplicated transformer execution for fallback trees
16.4.10
Patch Changes
16.4.9
Patch Changes
48dd0c2: fix incorrect page tree output
16.4.8
Patch Changes
0025484: [Page Tree Builder] define the priority to resolve node owner
16.4.7
Patch Changes
5dec9d0:useFumadocsLoader()support other names of the serialized page tree
16.4.6
Patch Changes
ea57dbf: Introduceremark-feedback-blockplugin
16.4.5
16.4.4
Patch Changes
cdc97e0: Improve experience with Shiki Twoslash
16.4.3
Patch Changes
f5dcb7c: fixupdate()source function types7e08b2f: Addorama-cloud-legacysearch integration for old Orama Cloud users
16.4.2
Patch Changes
590d36a: SupportfindSiblings()page tree utility98d38ff: Support context-aware type-safeslugsfunction inloader()446631d: Support<auto-files />syntax inremark-mdx-filespluginb16a32f: Switch to tsdown for bundling
16.4.1
16.4.0
Minor Changes
a3b7919: Update mixedbread integration API and docs
16.3.2
16.3.1
16.3.0
Minor Changes
a69b060: Support both Base UI and Radix UI as base component libraries
16.2.5
Patch Changes
7292424: Support MDX preset in Fumadocs Core
16.2.4
Patch Changes
16.2.3
Patch Changes
ef8eb6c: Expose Zod schema for page & meta datae0c4c3a: [Remark Image] Respecttitlein images4e2bca7: supportcollapsiblein meta data
16.2.2
Patch Changes
464442b: Support client-side loader, including serialization layer6c668e1: Support absolute URLs in search fetch client
16.2.1
16.2.0
16.1.0
Minor Changes
-
15bd183: [Loader API] Default the type ofpluginstoLoaderPluginOption[]It should no longer enforce type checks on custom properties from your content source.
For creating fully typed plugins (with custom properties), use the following pattern:
import { loader } from "fumadocs-core/source"; import { docs } from "collections/ import { lucideIconsPlugin } from "fumadocs-core/source/lucide-icons"; export const source = loader(docs.toFumadocsSource(), { baseUrl: "/docs", plugins: ({ typedPlugin }) => [ lucideIconsPlugin(), typedPlugin({ // the plugin config }), ], }); -
42ad84c: [Loader API] Refactor internal type parametersInternal types like
ContentStorage,PageTreeTransformernow use a singleConfig extends SourceConfiggeneric parameter.It makes extending their parameters easier, this should not affect normal usages.
Patch Changes
2e01720: [Loader API] Support callingloader().getPage(slugs)with URI encoded slugs
16.0.15
Patch Changes
fe380da: feat(waku): WakuLink component to use unstable_prefetchOnEnter for prefetchade44d0: feat: enhance framework providers to accept custom Link components
16.0.14
Patch Changes
c3b8474: hotfix Tanstack RouterusePathnameinconsistency due touseMatchon layout.
16.0.13
16.0.12
Patch Changes
c5c00e9: FixusePathname()adapter for Tanstack Start
16.0.11
Patch Changes
ff68f69: [Page Tree Builder] Fix node IDs are not unique across different locales00058c8: Drop framework-sidecreateContext
16.0.10
Patch Changes
733b01e: SupportremarkDirectiveAdmonition, deprecateremarkAdmonitionin favor of it.
16.0.9
16.0.8
Patch Changes
bc97236: FixrehypeCode()tsdoc forlazyoptionca09b6a: Core: Support accessing MDX plugins separately atfumadocs-core/mdx-plugins/*117ad86: Add support for using a custom GitHub API base URL
16.0.7
Patch Changes
16.0.6
Patch Changes
b95b0cf: improve TOC anchor detection
16.0.5
Patch Changes
8221785: hotfix i18n middleware URL formatting
16.0.4
Patch Changes
99971c7: Supportexternal:to mark links as external inmeta.json
16.0.3
16.0.2
Patch Changes
d511232: Fix i18n middleware search params handling
16.0.1
Patch Changes
45f0c1f: hotfix<DynamicCodeBlock />Vite + React 19.2 compat issues
16.0.0
Major Changes
-
851897c: Removefumadocs-core/sidebarAPIwhy: no longer used by Fumadocs UI, and the abstraction isn't good enough.
migrate: The original component is mostly a wrapper of
react-remove-scroll, you can use Shadcn UI for pre-built sidebars. -
4049ccc: Removefumadocs-core/serverexportgetGithubLastEdit: Moved tofumadocs-core/content/github.getTableOfContents: Moved tofumadocs-core/content/toc.PageTreeand page tree utilities: Moved tofumadocs-core/page-tree.TOCItemType,TableOfContents: Moved tofumadocs-core/toc.createMetadataImage: Use the Next.js Metadata API instead.
-
429c41a: Switch to Shiki JavaScript Regex engine by defaultThis is important for Cloudflare Worker compatibility, JavaScript engine is the new default over Oniguruma (WASM).
rehype-code: replaced theexperimentalJSEngineoption withengine: js | oniguruma.fumadocs-core/highlight: use JS engine by default, drop custom engine support, use Shiki directly instead.
-
5210f18: Set minimal React.js version to 19.2.019.2 has multiple crucial updates that can improve Fumadocs' performance, and it should work seamlessly on mainstream React.js frameworks.
As a consequence, Next.js 16 is now the minimal version when using Fumadocs UI because Next.js always uses the internal canary version of React.js.
-
42f09c3: Remove deprecated APIsfumadocs-ui/page:- removed
<DocsCategory />. - removed
breadcrumbs.fulloption from<DocsPage />.
- removed
fumadocs-core/search/algolia: renamed optiondocumenttoindexName.fumadocs-core/search:- remove deprecated signature of
createFromSource(): migrate to newer usage instead.export function createFromSource<S extends LoaderOutput<LoaderConfig>>( source: S, pageToIndexFn?: (page: InferPageType<S>) => Awaitable<AdvancedIndex>, options?: Omit<Options<S>, "buildIndex">, ): SearchAPI; - remove deprecated parameters in
useSearch(), pass them in the client object instead.
- remove deprecated signature of
fumadocs-core/highlight: remove deprecatedwithPrerenderScriptandloadingoptions fromuseShiki().fumadocs-core/i18n: removedcreateI18nMiddleware, import fromfumadocs-core/i18n/middlewareinstead.fumadocs-core/source:- removed deprecated
transformers,pageTree.attach*options fromloader(). - removed deprecated
page.fileproperty. - removed
FileInfo&parseFilePathutilities.
- removed deprecated
-
55afd8a: Migrate to New Orama Cloud@orama/coreis the new version of Orama Cloud client. See their docs for details.When using Fumadocs' Orama Cloud integration, you need to use the new client instead:
import { sync } from "fumadocs-core/search/orama-cloud"; import { OramaCloud } from "@orama/core"; // update this const orama = new OramaCloud({ projectId: "<project id>", apiKey: "<private api key>", }); await sync(orama, { index: "<data source id>", documents: records, });
Minor Changes
cbc93e9: Disablesingleby default onfumadocs-core/tocAPI
Patch Changes
230c6bf: letgetPageTreePeershandle i18n
15.8.4
Patch Changes
ce2be59: Loader Plugin: supportname&configoptions31b9494: Supportmultiple()for multiple sources in sameloader()
15.8.3
Patch Changes
a3a14e7: Bump deps
15.8.2
Patch Changes
-
ad9a004: Deprecatefumadocs-core/serverexportIt will be removed on Fumadocs 16, as some APIs under the
/serverexport are actually available (and even used) under browser environment.A more modularized design will be introduced over the original naming.
getGithubLastEdit: Moved tofumadocs-core/content/github.getTableOfContents: Moved tofumadocs-core/content/toc.PageTreeand page tree utilities: Moved tofumadocs-core/page-tree.TOCItemType,TableOfContents: Moved tofumadocs-core/toc.createMetadataImage: Deprecated, use the Next.js Metadata API instead.
-
90cf1fe: Support Negotiation API -
747bdbc: Support lucide react icons plugin forloader()
15.8.1
Patch Changes
71bce86: Makeloader().getPages()to return pages from all languages when locale is not specifiedf04547f: PublishpluginsAPI onloader()
15.8.0
Minor Changes
-
d1ae3e8: MoveSortedResultand other search-related types tofumadocs-core/searchThis also exposed the search result highlighter API, you may now use it for highlighting results of your own search integration
Old export will be kept until the next major release.
-
51268ec: Breadcrumbs API: defaultincludePagetofalse.
Patch Changes
655bb46: [Internal]parseCodeBlockAttributesinclude null values, restrictrehype-codeto only parsetitleandtabattributes.6548a59: Support breadcrumbs for Search API51268ec: Breadcrumbs API: Fix root folders being filtered whenincludeRootis set totrue.
15.7.13
Patch Changes
982aed6: Fixsource.getPageByHref()return no result without explicitlanguage
15.7.12
Patch Changes
15.7.11
15.7.10
Patch Changes
c948f59: Try to workaround legacy i18n middleware under/i18nexport without breaking changes
15.7.9
Patch Changes
d135efd:transformerIconsupports SVG string to extend codeblock icons4082acc: ExposehighlightHastAPI
15.7.8
Patch Changes
f65778d:Linkimprove external link detection by enabling it on any protocolse4c12a3: Add framework adapters to optional peer deps
15.7.7
Patch Changes
0b53056: SupportremarkMdxMermaid- convertmermaidcodeblocks into<Mermaid />component3490285: SupportremarkMdxFiles- convertfilescodeblocks into<Files />component
15.7.6
15.7.5
Patch Changes
cedc494: Hotfix URL normalization logic
15.7.4
15.7.3
Patch Changes
6d97379: unify remark nodes parsing & improve typese776ee5: FixlangAliasnot being passed to Shiki rehype plugin
15.7.2
Patch Changes
88b5a4e: Fix duplicate pages in page tree when referencing subpage in meta.json and using...or adding the subfolder again039b24b: Fix failed to update page tree fromloader()08eee2b: [remark-npm] Enablenpm installprefix fallback only on old alias
15.7.1
Patch Changes
195b090: Support a list ofsourceforloader()APIe1c84a2: SupportfallbackLanguageforloader()i18n API
15.7.0
Minor Changes
-
514052e: Include locale code intopage.pathPreviously when i18n is enabled,
page.pathis not equal to the virtual file paths you passed intoloader():const source = loader({ source: { files: [ { path: "folder/index.cn.mdx", // ... }, ], }, }); console.log(source.getPages("cn")); // path: folder/index.mdxThis can be confusing, the only solution to obtain the original path was
page.absolutePath.From now, the
page.pathwill also include the locale code:const source = loader({ source: { files: [ { path: "folder/index.cn.mdx", // ... }, ], }, }); console.log(source.getPages("cn")); // path: folder/index.cn.mdxWhile this change doesn't affect intended API usages, it may lead to minor bugs when advanced usage/hacks involved around
page.path. -
e785f98: Introduce page treefallbackAPIPage tree is a tree structure.
Previously, when an item is excluded from page tree, it is isolated entirely that you cannot display it at all.
With the new fallback API, isolated pages will go into
fallbackpage tree instead:{ "children": [ { "type": "page", "name": "Introduction" } ], "fallback": { "children": [ { "type": "page", "name": "Hidden Page" } ] } }Items in
fallbackare invisible unless you've opened its item. -
0531bf4: Introduce page tree transformer APIYou can now define page tree transformer.
export const source = loader({ // ... pageTree: { transformers: [ { root(root) { return root; }, file(node, file) { return node; }, folder(node, dir, metaPath) { return node; }, separator(node) { return node; }, }, ], }, }); -
50eb07f: Support type-safe i18n config// lib/source.ts import { defineI18n } from "fumadocs-core/i18n"; export const i18n = defineI18n({ defaultLanguage: "en", languages: ["en", "cn"], });// root layout import { defineI18nUI } from "fumadocs-ui/i18n"; import { i18n } from "@/lib/i18n"; const { provider } = defineI18nUI(i18n, { translations: { cn: { displayName: "Chinese", search: "Translated Content", }, en: { displayName: "English", }, }, }); function RootLayout({ children }: { children: React.ReactNode }) { return <RootProvider i18n={provider(lang)}>{children}</RootProvider>; }Although optional, we highly recommend you to refactor the import to i18n middleware:
// here! import { createI18nMiddleware } from "fumadocs-core/i18n/middleware"; import { i18n } from "@/lib/i18n"; export default createI18nMiddleware(i18n);
Patch Changes
e254c65: Simplify Source API storage managementec75601: SupportReactNodefor icons in page tree67df155:createFromSourcesupport asyncbuildIndexand Fumadocs MDX Async Modeb109d06: RedesignuseShiki&<DynamicCodeBlock />to use React 19 hooks
15.6.12
15.6.11
15.6.10
Patch Changes
-
569bc26: Improveremark-image: (1) append public URL to outputsrcif it is a URL. (2) ignore if failed to obtain SVG size. -
817c237: Support search result highlighting.Result nodes now have a
contentWithHighlightsproperty, you can render it with custom renderer, or a default one provided on Fumadocs UI.
15.6.9
Patch Changes
0ab2cdd: remove waku & tanstack peer dependency temporarily (see https://github.com/fuma-nama/fumadocs/issues/2144)
15.6.8
15.6.7
Patch Changes
6fa1442: Support to override<HideIfEmpty />scripts nonce with<HideIfEmptyProvider />
15.6.6
Patch Changes
1b0e9d5: Add mixedbread integration
15.6.5
Patch Changes
658fa96: Support custom options for error handling forremark-image
15.6.4
15.6.3
15.6.2
15.6.1
Patch Changes
1a902ff: Fix static export map
15.6.0
Minor Changes
-
f8d1709: Redesigned Codeblock TabsInstead of relying on
Tabscomponent, it supports a dedicated tabs component for codeblocks:<CodeBlockTabs> <CodeBlockTabsList> <CodeBlockTabsTrigger value="value">Name</CodeBlockTabsTrigger> </CodeBlockTabsList> <CodeBlockTab value="value" asChild> <CodeBlock>...</CodeBlock> </CodeBlockTab> </CodeBlockTabs>The old usage is not deprecated, you can still use them while Fumadocs' remark plugins will generate codeblock tabs using the new way.
Patch Changes
d0f8a15: EnableremarkNpmby default, replaceremarkInstallwith it.84918b8: Support passingtagto search client/server as string array
15.5.5
Patch Changes
0d3f76b: Fix wrong indexing of file system
15.5.4
Patch Changes
35c3c0b: Support handling duplicated slugs and conflicts such asdir/index.mdxvsdir.mdx
15.5.3
Patch Changes
7d1ac21: hotfix paths not being normalized on Windows
15.5.2
Patch Changes
7a45921: AddabsolutePathandpathproperties to pages, markfileas deprecated1b7bc4b: Add@types/reactto optional peer dependency to avoid version conflict in monorepos
15.5.1
Patch Changes
-
b4916d2: Movehide-if-emptycomponent to Fumadocs Core -
8738b9c: Always encode generated slugs for non-ASCII characters inloader() -
a66886b: Deprecate other parameters foruseDocsSearch()The new usage passes options to a single object, improving the readability:
import { useDocsSearch } from "fumadocs-core/search/client"; const { search, setSearch, query } = useDocsSearch({ type: "fetch", locale: "optional", tag: "optional", delayMs: 100, allowEmpty: false, });
15.5.0
15.4.2
Patch Changes
0ab6c7f: Improve performance by using shallow compare onuseOnChangeby default
15.4.1
15.4.0
Minor Changes
-
961b67e: Bump algolia search to v5This also introduced changes to some APIs since
algoliasearchv4 and v5 has many differences.Now we highly recommend to pass an index name to
sync():import { algoliasearch } from "algoliasearch"; import { sync } from "fumadocs-core/search/algolia"; const client = algoliasearch("id", "key"); void sync(client, { indexName: "document", documents: records, });For search client, pass them to
searchOptions:"use client"; import { liteClient } from "algoliasearch/lite"; import type { SharedProps } from "fumadocs-ui/components/dialog/search"; import SearchDialog from "fumadocs-ui/components/dialog/search-algolia"; const client = liteClient(appId, apiKey); export default function CustomSearchDialog(props: SharedProps) { return ( <SearchDialog searchOptions={{ client, indexName: "document", }} {...props} showAlgolia /> ); }
Patch Changes
1b999eb: Introduce<Markdown />component7d78bc5: ImprovecreateRelativeLinkandgetPageByHreffor i18n usage
15.3.4
15.3.3
Patch Changes
4ae7b4a: Support MDX in codeblock tab value
15.3.2
Patch Changes
c25d678: Support Shiki focus notation transformer by default
15.3.1
Patch Changes
3372792: Support line numbers in codeblock
15.3.0
Patch Changes
c05dc03: Improve error message of remark image
15.2.15
Patch Changes
50db874: Remove placeholder space for codeblocks79e75c3: Improve default MDX attribute indexing strategy forremarkStructure
15.2.14
Patch Changes
6ea1718: Fix type inference forpageTree.attachFileinloader()
15.2.13
15.2.12
Patch Changes
-
acff667: DeprecatecreateFromSource(source, pageToIndex, options)Migrate:
import { source } from "@/lib/source"; import { createFromSource } from "fumadocs-core/search/server"; // from export const { GET } = createFromSource( source, (page) => ({ title: page.data.title, description: page.data.description, url: page.url, id: page.url, structuredData: page.data.structuredData, // use your desired value, like page.slugs[0] tag: "<value>", }), { // options }, ); // to export const { GET } = createFromSource(source, { buildIndex(page) { return { title: page.data.title, description: page.data.description, url: page.url, id: page.url, structuredData: page.data.structuredData, // use your desired value, like page.slugs[0] tag: "<value>", }; }, // other options });
15.2.11
Patch Changes
07cd690: Support separators without name
15.2.10
15.2.9
15.2.8
15.2.7
Patch Changes
15.2.6
Patch Changes
d49f9ae: Fix order of<I18nProvider />b07e98c: fixloader().getNodePage()returning undefined for other locales3a4bd88: Fix wrong index files output in i18n page tree generation
15.2.5
Patch Changes
c66ed79: FixremoveScrollOnon sidebar primitive
15.2.4
Patch Changes
1057957: Fix type problems on dynamic codeblock
15.2.3
15.2.2
Patch Changes
0829544: deprecateblockScrollingWidthin favour ofremoveScrollOn
15.2.1
15.2.0
Minor Changes
2fd325c: EnablelazyonrehypeCodeby defaulta7cf4fa: Support other frameworks viaFrameworkProvider
15.1.3
Patch Changes
b734f92: supportmdxJsxFlowElementinremarkStructure
15.1.2
Patch Changes
3f580c4: Support directory-based i18n routing
15.1.1
Patch Changes
c5add28: use internal store for Shiki highlighter instancesf3cde4f: Support markdown files with default local code in file name7c8a690: Improve file info interfaceb812457: Remove Next.js usage from search server
15.1.0
Minor Changes
Patch Changes
f491f6f: FixfindNeighbour()doesn't exclude other nodes of another root
15.0.18
15.0.17
Patch Changes
72f79cf: Support Orama Cloud crawler index
15.0.16
15.0.15
Patch Changes
15.0.14
Patch Changes
37dc0a6: Updateimage-sizeto v2796cc5e: Upgrade to Orama v32cc0be5: Support to add custom serialization toremarkStructureviadata._string
15.0.13
15.0.12
Patch Changes
3534a10: Movefumadocs-corehighlighting utils tofumadocs-core/highlightandfumadocs-core/highlight/client93952db: Generate a$idattribute to page tree nodes
15.0.11
15.0.10
Patch Changes
d95c21f: addinitOramaoption to static client
15.0.9
15.0.8
15.0.7
Patch Changes
5deaf40: Support icons in separators ofmeta.json
15.0.6
Patch Changes
15.0.5
15.0.4
15.0.3
15.0.2
15.0.1
15.0.0
Minor Changes
-
581f4a5: Support code block tabs without hardcoding<Tabs />itemsmigrate: Use the
remarkCodeTabplugin.before:
import { Tab, Tabs } from "fumadocs-ui/components/tabs"; <Tabs items={["Tab 1", "Tab 2"]}> ```ts tab console.log("A"); ``` ```ts tab console.log("B"); ``` </Tabs>after:
import { Tab, Tabs } from "fumadocs-ui/components/tabs"; ```ts tab="Tab 1" console.log("A"); ``` ```ts tab="Tab 2" console.log("B"); ```
Patch Changes
5b8cca8: FixremarkAdmonitionmissing some types from Docusaurusa763058: Support reversed rest items inmeta.json
14.7.7
14.7.6
Patch Changes
b9601fb: Update Shiki
14.7.5
Patch Changes
777188b: [Page Tree Builder] Inline folders without children
14.7.4
Patch Changes
bb73a72: Fix search params being ignored in middleware redirection69bd4fe: Supportsource.getPageTree()function
14.7.3
Patch Changes
041f230: Support trailing slash
14.7.2
Patch Changes
14b280c: Revert default i18n config
14.7.1
Patch Changes
72dc093: Add chinese i18n configuration for Orama search if not specified
14.7.0
Minor Changes
97ed36c: Remove defaults fromloaderand deprecaterootDiroptions
14.6.8
14.6.7
Patch Changes
5474343: Export dynamic-link
14.6.6
14.6.5
Patch Changes
969da26: Improve i18n api
14.6.4
Patch Changes
b71064a: Support remark plugins & vfile input ongetTableOfContents
14.6.3
14.6.2
Patch Changes
2357d40: Fix typings ofHighlightOptions
14.6.1
14.6.0
Minor Changes
bebb16b: Add support for pre-rendering touseShikihook050b326: Support codeblocktabmeta without value
Patch Changes
14.5.6
Patch Changes
9a18c14: Downgrade Orama to v2 to fix external tokenizers
14.5.5
14.5.4
14.5.3
14.5.2
14.5.1
14.5.0
14.4.2
14.4.1
14.4.0
14.3.1
14.3.0
14.2.1
Patch Changes
ca94bfd: Support sync usage ofgetTableOfContents
14.2.0
Minor Changes
e248a0f: Support Orama Cloud integration
14.1.1
Patch Changes
1573d63: Support URL formatpublicDirin Remark Image plugin
14.1.0
Minor Changes
b262d99: bundle default Shiki transformers90725c1: Support server-sidehighlightand clientuseShikihook
Patch Changes
d6d290c: Upgrade Shiki4a643ff: PreferpeerDependenciesMetaoveroptionalDependenciesb262d99: Support JSX comment syntax on default Shiki transformers
14.0.2
14.0.1
14.0.0
Major Changes
-
e45bc67: Remove deprecatedfumadocs-core/middlewareexportmigrate: Use
fumadocs-core/i18n. -
d9e908e: Remove deprecatedlanguagesanddefaultLanguageoption from loadermigrate: Use I18n config API
-
9a0b09f: Change usage ofuseDocsSearchwhy: Allow static search
migrate:
Pass client option, it can be algolia, static, or fetch (default).
import { useDocsSearch } from "fumadocs-core/search/client"; const { search, setSearch, query } = useDocsSearch({ type: "fetch", api: "/api/search", // optional }); -
9a0b09f: Remove Algolia Search Clientwhy: Replace by the new search client
migrate:
import { useDocsSearch } from "fumadocs-core/search/client"; const { search, setSearch, query } = useDocsSearch({ type: "algolia", index, ...searchOptions, }); -
9a0b09f: Refactor import path offumadocs-core/search-algolia/servertofumadocs-core/search/algolia -
d9e908e: Improved usage forcreateI18nSearchAPI(replacedcreateI18nSearchAPIExperimental) -
d9e908e: Replacefumadocs-core/search/sharedwithfumadocs-core/server
Minor Changes
d9e908e: Create search api from source (Support i18n without modifying search route handler)367f4c3: Support referencing original page/meta from page tree nodese1ee822: Support hast nodes intocvariable979e301: Replace flexearch with Orama979e301: Support static search (without server)d9e908e: Support creating metadata API from sources
Patch Changes
f949520: Support Shiki diff transformere612f2a: Make compatible with Next.js 158ef00dc: ApplyhideLocaleto SourcegetPageAPIs15781f0: Fix breadcrumb empty whenincludePageisn't specifiedbe820c4: Bump deps
13.4.10
Patch Changes
6231ad3: fix(types): PageData & MetaData exactOptionalPropertyTypes compat
13.4.9
Patch Changes
083f04a: Fix link items text
13.4.8
Patch Changes
78e59e7: Support to add icons to link items in meta.json
13.4.7
Patch Changes
6e1923e: Improve anchors observer
13.4.6
Patch Changes
afb697e: Fix Next.js 14.2.8 dynamic import problemsdaa66d2: Support generating static params automatically with Source API
13.4.5
13.4.4
Patch Changes
729928e: Fix build error without JS engine
13.4.3
13.4.2
Patch Changes
7dabbc1: Remark Image: Support relative imports0c251e5: Bump deps3b56170: Support to enable experiment Shiki JS engine
13.4.1
Patch Changes
95dbba1: Scan table into search indexes by default
13.4.0
13.3.3
Patch Changes
f8cc167: Ignore numeric locale file name
13.3.2
Patch Changes
0e0ef8c: Support headless search servers
13.3.1
13.3.0
Minor Changes
fd46eb6: Export newcreateI18nSearchAPIExperimentalAPI for i18n configfd46eb6: Introducei18nconfig for Core APIsfd46eb6: DeprecatedlanguagesanddefaultLanguageoption on Source API, replaced withi18nconfigfd46eb6: Move I18n middleware tofumadocs-core/i18n9aae448: Support multiple toc active itemsc542561: Use cookie to store active locale onalwaysmode
Patch Changes
4916f84: Improve Source API performance
13.2.2
Patch Changes
13.2.1
Patch Changes
17fa173: Remark Image: Support fetching image size of external urls
13.2.0
Patch Changes
96c9dda: Change Heading scroll margins
13.1.0
Patch Changes
f280191: Page Tree Builder: Sort folders to bottom
13.0.7
Patch Changes
37bbfff: Improve active anchor observer
13.0.6
13.0.5
Patch Changes
2cf65f6: Support debounce value on algolia search client
13.0.4
Patch Changes
5355391: Support indexing description field on documents
13.0.3
Patch Changes
978342f: Type file system utilities (Note: This is an internal module, you're not supposed to reference it)
13.0.2
Patch Changes
4819820: Page Tree Builder: Fallback to page icon when metadata doesn't exist
13.0.1
13.0.0
Major Changes
-
09c3103: Change usage of TOC componentwhy: Improve the flexibility of headless components
migrate:
Instead of
import * as Base from "fumadocs-core/toc"; return ( <Base.TOCProvider> <Base.TOCItem /> </Base.TOCProvider> );Use
import * as Base from "fumadocs-core/toc"; return ( <Base.AnchorProvider> <Base.ScrollProvider> <Base.TOCItem /> <Base.TOCItem /> </Base.ScrollProvider> </Base.AnchorProvider> ); -
b02eebf: Remove deprecated optiondefaultLangwhy: The default language feature has been supported by Shiki Rehype integration, you should use it directly.
migrate: Rename to
defaultLanguage.
Minor Changes
c714eaa: Support Remark Admonition plugin
12.5.6
12.5.5
12.5.4
Patch Changes
12.5.3
12.5.2
Patch Changes
a5c34f0: Support specifying the url of root node when breadcrumbs haveincludeRootenabled
12.5.1
12.5.0
Minor Changes
b9fa99d: Supporttagfacet field for Algolia Search Integration
Patch Changes
- 525925b: Support including root folder into breadcrumbs
12.4.2
Patch Changes
503e8e9: SupportkeywordsAPI in advanced search
12.4.1
12.4.0
12.3.6
12.3.5
12.3.4
12.3.3
Patch Changes
90d51cb: Fix problem with I18n middleware & language toggle
12.3.2
Patch Changes
ca7d0f4: Support resolving async search indexes
12.3.1
Patch Changes
cf852f6: Add configurable delayMs Parameter for Debounced Search Performance
12.3.0
Minor Changes
ce3c8ad: Page Tree Builder: SupportdefaultLanguageoptionce3c8ad: Support hiding locale prefixes with I18n middleware
12.2.5
12.2.4
12.2.3
12.2.2
12.2.1
12.2.0
Minor Changes
b70ff06: Support!nameto hide pages onmeta.json
12.1.3
12.1.2
Patch Changes
b4856d1: FixcreateGetUrlwrong locale position
12.1.1
Patch Changes
a39dbcb: ExportloadFilesfrom Source API
12.1.0
Minor Changes
-
0a377a9: Support writing code blocks as a<Tab />element.import { Tabs } from "fumadocs-ui/components/tabs"; <Tabs items={["Tab 1", "Tab 2"]}> ```js tab="Tab 1" console.log("Hello"); ``` ```js tab="Tab 2" console.log("Hello"); ``` </Tabs>This is same as wrapping the code block in a
<Tab />component. -
0a377a9: Pass theiconprop to code blocks as HTML instead of MDX attribute.why: Only MDX flow elements support attributes with JSX value, like:
<Pre icon={<svg />}>...</Pre>As Shiki outputs hast elements, we have to convert the output of Shiki to an MDX flow element so that we can pass the
iconproperty.Now,
rehype-codepasses an HTML string instead of JSX, and render it withdangerouslySetInnerHTML:<Pre icon="<svg />">...</Pre>migrate: Not needed, it should work seamlessly.
12.0.7
12.0.6
Patch Changes
7a29b79: Remove default language fromsource.getLanguagesb0c1242: Support Next.js 15 cache behaviour ingetGithubLastEdit
12.0.5
12.0.4
Patch Changes
72dbaf1: SupportReactNodein page tree, table of contents and breadcrumb type definitions51ca944: Support including separators in breadcrumbs
12.0.3
Patch Changes
053609d: RenamedefaultLangtodefaultLanguage
12.0.2
12.0.1
12.0.0
Major Changes
-
98430e9: RemoveminWidthdeprecated option fromSidebarcomponent.migrate: Use
blockScrollingWidthinstead
Minor Changes
57eb762: Support attaching custom properties during page tree builder process
Patch Changes
d88dfa6: Support attachingidproperty to page treesba20694: Remark Headings: Support code syntax in headings
11.3.2
Patch Changes
1b8e12b: Usedisplay: gridfor codeblocks
11.3.1
11.3.0
Minor Changes
917d87f: Rename sidebar primitiveminWidthprop toblockScrollingWidth
11.2.2
11.2.1
11.2.0
11.1.3
Patch Changes
88008b1: Fix ESM compatibility problems in i18n middleware944541a: Add dynamic page url according to locale07a9312: Improve Search I18n utilities
11.1.2
11.1.1
Patch Changes
8ef2b68: Bump deps26f464d: Support relative paths in meta.json26f464d: Support non-external link in meta.json
11.1.0
11.0.8
Patch Changes
98258b5: Fix regex problems
11.0.7
Patch Changes
f7c2c5c: Fix custom heading ids conflicts with MDX syntax
11.0.6
Patch Changes
11.0.5
11.0.4
Patch Changes
7b61b2f: Migratefumadocs-uito fully ESM, adding support for ESMtailwind.configfile
11.0.3
11.0.2
11.0.1
11.0.0
Major Changes
-
2d8df75: Removecwdoption fromremark-dynamic-contentwhy: Use
cwdfrom vfilemigrate: Pass the
cwdoption from remark instead -
92cb12f: Simplify Source API virtual storage.why: Improve performance
migrate:
- storage.write('path.mdx', { type: 'page', ... }) - storage.readPage('page') + storage.write('path.mdx', 'page', { ... }) + storage.read('page', 'page')Transformers can now access file loader options.
load({ transformers: [ ({ storage, options }) => { options.getUrl(); options.getSlugs(); }, ], }); -
f75287d: Introducefumadocs-docgenpackage.Offer a better authoring experience for advanced use cases.
- Move
remark-dynamic-contentandremark-installplugins to the new packagefumadocs-docgen. - Support Typescript generator by default
Usage
Add the
remarkDocGenplugin to your remark plugins.import { remarkDocGen, fileGenerator } from "fumadocs-docgen"; remark().use(remarkDocGen, { generators: [fileGenerator()] });Generate docs with code blocks.
```json doc-gen:<generator> { // options } ```Migrate
For
remarkDynamicContent, enablefileGeneratorand use this syntax:```json doc-gen:file { "file": "./path/to/my-file.txt" } ```For
remarkInstall, it remains the same:import { remarkInstall } from "fumadocs-docgen"; - Move
-
2d8df75: Remove support forgetTableOfContentsFromPortableTextwhy: Sanity integration should be provided by 3rd party integrations
migrate: Use built-in sources, or write a custom implementation
10.1.3
Patch Changes
bbad52f: Supportbuninremark-installplugin
10.1.2
10.1.1
Patch Changes
779c599: MarkgetTableOfContentsFromPortableTextdeprecated0c01300: Fix remark-dynamic-content ignored code blocks779c599: Support relative resolve path for remark-dynamic-content
10.1.0
10.0.5
Patch Changes
e47c62f: Improve remark plugin typings
10.0.4
10.0.3
Patch Changes
6f321e5: Fix type errors of flexseach
10.0.2
Patch Changes
10e099a: Remove deprecated options fromfumadocs-core/toc
10.0.1
Patch Changes
c9b7763: Update to Next.js 14.1.00e78dc8: Support customising search API URLd8483a8: Remove undefined values from page tree
10.0.0
Major Changes
-
321d1e1f: Move Typescript integrations tofumadocs-typescriptwhy: It is now a stable feature
migrate: Use
fumadocs-typescriptinstead.- import { AutoTypeTable } from "fumadocs-ui/components/auto-type-table" + import { AutoTypeTable } from "fumadocs-typescript/ui"
Minor Changes
b5d16938: Support external link inpagesproperty
9.1.0
Minor Changes
909b0e35: Support duplicated names with meta and page files1c388ca5: SupportdefaultOpenfor folder nodes
Patch Changes
691f12aa: Source API: Support relative paths as root directory
9.0.0
8.3.0
8.2.0
Minor Changes
5c24659: Support code block icons
8.1.1
8.1.0
Minor Changes
Patch Changes
6c5a39a: Rename Git repository tofumadocs
8.0.0
Major Changes
-
2ea9437: Migrate to rehype-shikiji- Dropped support for inline code syntax highlighting
- Use notation-based word/line highlighting instead of meta string
Before:
```ts /config/ {1} const config = "Hello"; something.call(config); ```After:
```ts // [!code word:config] const config = "Hello"; // [!code highlight] something.call(config); ```Read the docs of Shikiji for more information.
-
cdff313: Separate Contentlayer integration into another packagewhy: As Fumadocs MDX is the preferred default source, Contentlayer should be optional.
migrate:
Install
fumadocs-contentlayer.- import { createContentlayerSource } from "fumadocs-core/contentlayer" + import { createContentlayerSource } from "fumadocs-contentlayer" - import { createConfig } from "fumadocs-core/contentlayer/configuration" + import { createConfig } from "fumadocs-contentlayer/configuration" -
2b11c20: Rename to Fumadocsnext-docs-zeta->fumadocs-corenext-docs-ui->fumadocs-uinext-docs-mdx->fumadocs-mdx@fuma-docs/openapi->fumadocs-openapicreate-next-docs-app->create-fumadocs-app
Minor Changes
1a346a1: Addremark-imageplugin that converts relative image urls into static image imports (Inspired by Nextra)
7.1.2
7.1.1
7.1.0
7.0.0
Major Changes
-
9929c5b: Migrate Contentlayer Integration to Source APIcreateContentlayeris now replaced bycreateContentlayerSource.You should configure base URL and root directory in the loader instead of Contentlayer configuration.
It's no longer encouraged to access
allDocsdirectly because they will not includeurlproperty anymore. Please considergetPagesinstead.import { allDocs, allMeta } from "contentlayer/generated"; import { createContentlayerSource } from "next-docs-zeta/contentlayer"; import { loader } from "next-docs-zeta/source"; export const { getPage, pageTree, getPages } = loader({ baseUrl: "/docs", rootDir: "docs", source: createContentlayerSource(allMeta, allDocs), });The interface is very similar, but you can only access Contentlayer properties from
page.data.- <Content code={page.body.code} /> + <Content code={page.data.body.code} /> -
9929c5b: Source APITo reduce boilerplate, the Source API is now released to handle File-system based files.
Thanks to this, you don't have to deal with the inconsistent behaviours between different content sources anymore.
The interface is now unified, you can easily plug in a content source.
import { map } from "@/.map"; import { createMDXSource } from "next-docs-mdx"; import { loader } from "next-docs-zeta/source"; export const { getPage, getPages, pageTree } = loader({ baseUrl: "/docs", rootDir: "docs", source: createMDXSource(map), });Page Tree Builder API is removed in favor of this
-
49201be: ChangeremarkToctoremarkHeadingThe previous
remarkTocplugin only extracts table of contents from documents, now it also adds theidproperty to all heading elements.- import { remarkToc } from "next-docs-zeta/mdx-plugins" + import { remarkHeading } from "next-docs-zeta/mdx-plugins" -
4c1334e: ImprovecreateI18nMiddlewarefunctionNow, you can export the middleware directly without a wrapper.
From:
export default function middleware(request: NextRequest) { return createI18nMiddleware(...); }To:
export default createI18nMiddleware({ defaultLanguage, languages, });
Minor Changes
-
338ea98: Exportcreatefunction for Contentlayer configurationIf you want to include other document types, or override the output configuration, the
createfunction can return the fields and document types you need.import { create } from "next-docs-zeta/contentlayer/configuration"; const config = create(options); export default { contentDirPath: config.contentDirPath, documentTypes: [config.Docs, config.Meta], mdx: config.mdx, }; -
9929c5b: Support multiple page tree rootsYou can specify a
rootproperty inmeta.json, the nearest root folder will be used as the root of page tree instead.{ "title": "Hello World", "root": true }
6.1.0
Minor Changes
-
f39ae40: Forward ref toLinkandDynamicLinkcomponentLegacy import name
SafeLinkis now removed- import { SafeLink } from "next-docs-zeta/link" + import Link from "next-docs-zeta/link"
6.0.2
6.0.1
6.0.0
Major Changes
-
9ef047d: Pre-bundle page urls into raw pages.This means you don't need
getPageUrlanymore for built-in adapters, includingnext-docs-mdxand Contentlayer. It is now replaced by theurlproperty from the pages array provided by your adapter.Due to this change, your old configuration might not continue to work.
import { fromMap } from 'next-docs-mdx/map' fromMap({ - slugs: ... + getSlugs: ... })For Contentlayer, the
getUrloption is now moved tocreateConfig.
5.0.0
Minor Changes
4.0.9
Patch Changes
a883009: Fix empty extracted paragraphs inremark-structure
4.0.8
Patch Changes
e0c5c96: Make ESM only
4.0.7
Patch Changes
b9af5ed: Update tsup & dependencies
4.0.6
Patch Changes
ff38f6e: ReplacegetGitLastEditTimewith newgetGithubLastEditAPI
4.0.5
4.0.4
4.0.3
Patch Changes
0cc10cb: Support custom build page tree options
4.0.2
4.0.1
Patch Changes
4.0.0
Major Changes
-
6c4a782: CreatePageTreeBuilderAPIThe old
buildPageTreefunction provided by 'next-docs-zeta/contentlayer' is now removed. Please use new API directly, or use the built-increateContentlayerutility instead.- import { buildPageTree } from 'next-docs-zeta/contentlayer' + import { createPageTreeBuilder } from 'next-docs-zeta/server'
Minor Changes
-
6c4a782: Improve CommonJS/ESM compatibilitySince this release, all server utilities will be CommonJS by default unless they have referenced ESM modules in the code. For instance,
next-docs-zeta/middlewareis now a CommonJS file. However, some modules, such asnext-docs-zeta/serverrequires ESM-only package, hence, they remain an ESM file.Notice that the extension of client-side files is now
.jsinstead of.mjs, but they're still ESM.Why?
After migrating to
.mjsNext.js config file, some imports stopped to work. The built-in Next.js bundler seems can't resolve thesenextimports in external packages, causing errors when modules have imported Next.js itself (e.g.next/image) in the code.By changing client-side files extension to
.mjsand using CommonJS for server-side files, this error is solved.
4.0.0
Major Changes
-
24245a3: CreatePageTreeBuilderAPIThe old
buildPageTreefunction provided by 'next-docs-zeta/contentlayer' is now removed. Please use new API directly, or use the built-increateContentlayerutility instead.- import { buildPageTree } from 'next-docs-zeta/contentlayer' + import { createPageTreeBuilder } from 'next-docs-zeta/server'
Minor Changes
-
678cd3d: Improve CommonJS/ESM compatibilitySince this release, all server utilities will be CommonJS by default unless they have referenced ESM modules in the code. For instance,
next-docs-zeta/middlewareis now a CommonJS file. However, some modules, such asnext-docs-zeta/serverrequires ESM-only package, hence, they remain an ESM file.Notice that the extension of client-side files is now
.jsinstead of.mjs, but they're still ESM.Why?
After migrating to
.mjsNext.js config file, some imports stopped to work. The built-in Next.js bundler seems can't resolve thesenextimports in external packages, causing errors when modules have imported Next.js itself (e.g.next/image) in the code.By changing client-side files extension to
.mjsand using CommonJS for server-side files, this error is solved.
3.0.0
Major Changes
-
a4a8120: Update search utilities import paths.Search Utilities in
next-docs-zeta/serveris now moved tonext-docs-zeta/searchandnext-docs-zeta/server-algolia.Client-side Changes:
next-docs-zeta/search->next-docs-zeta/search/clientnext-docs-zeta/search-algolia->next-docs-zeta/search-algolia/clientIf you're using Next Docs UI, make sure to import the correct path.
Minor Changes
7a0690b: Export remark-toc and remark-structure MDX plugins
Patch Changes
1043532: Type MDX Plugins
2.4.1
Patch Changes
2.4.0
Patch Changes
27ce871: Add missing shiki peer deps
2.3.3
Patch Changes
2.3.2
2.3.1
2.3.0
Minor Changes
6664178: Support algolia searcha0f9911: SupportuseAlgoliaSearch6664178: Improve search document structurize algorithm
2.2.0
2.1.2
Patch Changes
2.1.1
2.1.0
Patch Changes
a5a661e: Removeitemprop from TOC items
2.0.3
2.0.2
Patch Changes
74e5e85: Contentlayer: Support rest item in meta.json72e9fdf: Contentlayer: Support extracting folder in meta.json
2.0.1
Patch Changes
48c5256: Contentlayer: Sort pages by default
2.0.0
1.6.9
1.6.8
1.6.7
1.6.6
1.6.5
Patch Changes
79abe84: Support collapsible sidebar
1.6.4
1.6.3
Patch Changes
8d07003: Replace type ofTreeNode[]withPageTree
1.6.2
1.6.1
Patch Changes
fc6279e: Support get last git edit time
1.6.0
Minor Changes
edb9930: Redesign Contentlayer adapter API
Patch Changes
cdd30d5: Create remark-dynamic-content plugin
1.5.3
Patch Changes
fa8d4cf: Update dependencies
1.5.2
1.5.1
1.5.0
Minor Changes
fb2abb3: Rewrite create search API & stabilize experimental Advanced Search
1.4.1
Patch Changes
- Support better document search with
experimental_initSearchAPI 3d92c92: Support custom computed fields in Contentlayer
1.4.0
Patch Changes
0f106d9: Fix default sidebar element type
1.3.1
Patch Changes
ff05f5d: Support custom fields in Contentlayer configuration generator7fb2b9e: Support custom page & folder icons
1.3.0
Minor Changes
98226d9: Rewrite slugger and TOC utilities
1.2.1
Patch Changes
b15895f: Remove url prop from page tree folders
1.2.0
Patch Changes
5f248fb: Support Auto Scroll in TOC for headless docs
1.1.4
Patch Changes
496a6b0: Configure eslint + prettier
1.1.3
Patch Changes
0998b1b: Support edge runtime middlewares
1.1.2
Patch Changes
- Fix aria attributes
1.1.1
1.1.0
Patch Changes
255fc92: Support finding neighbours of a page & Flatten page tree
1.0.0
Major Changes
8e4a001: Rewrite Contentlayer tree builder + Support Context API
Minor Changes
4fa45c0: Add support for dynamic hrefs and relative paths to<SafeLink />component0983891: Add international Docs search
0.3.2
0.3.1
0.3.0
0.2.1
Patch Changes
67cd8ab: Remove unused files in dist
0.2.0
Minor Changes
5ff94af: Replace TOC data attributedata-activewitharia-selected
Patch Changes
5ff94af: Fix contentlayer parser bugs
0.1.0
Minor Changes
- Add get toc utils for sanity (portable text)