Docusaurus 3.10
We are happy to announce Docusaurus 3.10.
Upgrading is easy. We follow Semantic Versioning, and minor version updates have no breaking changes, accordingly to our release process.

Changelog TODO temp
yarn changelog --from v3.9.2
generated on Mar 20, 2026 from this commit: https://github.com/facebook/docusaurus/commit/6192b6a97925a8ea36e6dfa9c6082dabc0ac89ea
Security
There has been a surge in npm supply chain attacks. A single compromised maintainer or package can impact thousands of downstream users.
To reduce this risk, we hardened our publishing pipeline. We adopted npm Trusted Publishing for both stable (#11819) and canary releases (#11712). We also mitigated cache poisoning risks in the publish process (#11795).
All releases now go through a single publish.yml GitHub Actions workflow using short-lived OIDC tokens. Previously, releases were published from a maintainer’s machine with long-lived tokens.
This greatly reduces the risk of shipping compromised packages. Each release now has verifiable provenance, with a transparency log showing how and when it was published.


Docusaurus Faster stable
- #11802 feat(core): Docusaurus Faster is stable + v4 future flag turns it on by default
- mention VCS Eager strategy
Site Storage stable
- #11797 feat(core): promote
siteConfig.storageto stable + addfuture.v4.siteStorageNamespacingflag
MDX Heading Ids
- #11777 feat(cli):
write-heading-idsCLI now supports the--syntaxoption - #11755 feat(mdx-loader): add support for explicit
headingIdbased on MD/MDX comments - #11779 chore(website): migrate MDX heading ids to comment syntax + upgrade Crowdin parser version (@slorber)
Experimental VCS API
- #11512 feat(core): New siteConfig
future.experimental_vcsAPI +future.experimental_faster.gitEagerVcsflag (@slorber) - #11804 fix(utils): Git Eager VSC should have better DX (@slorber)
Translations
- 🇵🇰 #11632 Add new Urdu
urtheme translations. - 🇧🇷 #11533: Complete missing Brazilian Portuguese
pt-BRtheme translations.
Other changes
Other notable changes include:
- In #11571, the
siteConfig.headTagsAPI now accepts custom HTML elements. - In #11675, the live code block theme now has a button to reset the playground
- In #11734, we split the
<DocCard>component to make it easier to extend/swizzle. It's now easier to use assign custom emojis for the docs generated index page. - In #11733, the
<Tabs>component now uses React context instead of props, making it possible to create custom<TabItem>components. - In #11696, all newly initialized TypeScript sites will have
"strict: true"by default. - In #11611, we made it possible to create a new Docusaurus site in
., the current directory. - In #11666, the pages plugin can now use Markdown file path links (
[text](./other-page.md), as the docs and blog plugin already support it. - In #11642, admonitions now class/id shortcuts, such as
:::note{.my-class #my-id}. - In #11541 and #11683, we made sure Docusaurus is compatible with the latest version of Algolia DocSearch 4.x, unlocking new features such as AskAI Suggested Questions.
- In #11684 and #11653, we removed
- In #11794, we fixed a long-standing bug that prevented the translation of category index page titles in pagination links. many third-party dependencies from our
create-docusaurusCLI, making it faster to create a new site. - In #11784, we changed the syntax we recommend for math equations, preferring regular Markdown code blocks over
$$to improve docs portability. - In #11753, we added a basic
AGENTS.mdfile. Let's remind that any AI usage on Docusaurus contribution must be disclosed. - In #11698, we upgraded our monorepo to React 19. We'll drop support for React 18 in Docusaurus v4.
TODO + edit changelog link!
Check the 3.10.0 changelog entry for an exhaustive list of changes.
