mrkeyoor.com_
Tue 15 Sept 20:18 UTC
Webevaluationupdated 15 Sept 2026

docusaurus review

Docusaurus is a React and Node.js static site generator for technical documentation. It turns Markdown and MDX into a versioned, translated docs site with sidebars, a blog, and custom React pages, so a project does not have to assemble those pieces separately.

Verdict

Our Docusaurus run built in 314 seconds and passed 2,958 of 2,959 tests, so its contributor codebase is heavily exercised but expensive to work in. Use it when versioned docs, several locales, and React customization belong in one maintained site. A small Markdown manual will be cheaper to own in VitePress, MkDocs, or Starlight.

We ran it

Lab card: what happened when we ran docusaurusScreenshot of docusaurus (docusaurus.io)
Install✓ · 109s1 packages · 1102 MB
Build✓ · 314s
Tests✗ · 48s2958 passed · 1 failed of 2959 (vitest)
Repo4246 files~130,095 lines of source · 62.9 MB · 17 CI workflows · tests dir

Answers from our run

Does docusaurus build from source?

Dependencies installed in 109 seconds (1 packages), and the build succeeded in 314 seconds. We cloned commit 5215a33 into a clean Debian container with 3 CPUs and no project-specific setup.

Do docusaurus's tests pass?

Not all of them: 2958 of 2959 passed and 1 failed when we ran the project's own test command (vitest). Some failures need services or credentials a bare container does not have.

Who should not use docusaurus?

Small handbooks that only need Markdown and a theme: Docusaurus sites are React apps, and stable v3 requires Node.js 20 or newer.

What are the alternatives to docusaurus?

VitePress, MkDocs, Starlight. Our Docusaurus run built in 314 seconds and passed 2,958 of 2,959 tests, so its contributor codebase is heavily exercised but expensive to work in.

Setup3/5Simple site scaffold; core checkout used 1,102 MB and built in 314s
Docs5/5Detailed guides cover authoring, versions, themes, search, and hosts
Community5/566,247 stars, a September 2026 push, and active issue triage
Maturity5/5v3.10.2, 17 CI workflows, and 2,958 of 2,959 tests passing

Who it’s for

Open-source maintainers who need documentation, release-specific versions, and a project blog in one site.
React teams that want Markdown for routine writing and components for custom pages.
Documentation groups publishing several locales to static hosting.
Projects whose docs need enough structure to justify a dedicated website codebase.

Who it’s NOT for

Small handbooks that only need Markdown and a theme: Docusaurus sites are React apps, and stable v3 requires Node.js 20 or newer.
Teams unwilling to maintain theme code across upgrades: the swizzling guide says unsafe components may break even on a minor theme release.
Private sites expecting search to work without another choice: official search uses Algolia, while local and Typesense options are community maintained.
Contributors who need every upstream test green in a fresh container: our run ended with 1 failed snapshot among 2,959 tests.
Large version archives maintained as duplicate folders: the docs say versioning copies the full docs tree and increases build time and codebase complexity.

Setup reality

Our sandbox install succeeded in 109 seconds, recorded 1 package installed, and occupied 1,102 MB. The build succeeded in 314 seconds. Tests failed in 48 seconds: Vitest reported 2,958 passed and 1 failed out of 2,959, with one failed snapshot in gitUtils.test.ts.

A normal v3 site needs Node.js 20 or newer and starts with npx create-docusaurus@latest. Local writing and builds need no secret. Algolia search needs an application ID, public search key, and index; deployment credentials depend on the static host you choose.

Our measurements cover the Docusaurus contributor monorepo, not a newly scaffolded site. The checkout had 4,246 files, about 130,095 source lines, 17 CI workflows, a tests directory, and no Dockerfile. Theme ejection and copied docs versions add maintenance inside each site.

React and MDX turn documentation into a maintained website

Docusaurus v3.10.2 treats a docs site as a React application whose usual content happens to be Markdown or MDX. The classic starter supplies documentation, a blog, custom pages, navigation, and dark mode. Writers can stay in Markdown for ordinary pages, while developers can place JSX, TypeScript, CSS, and npm packages beside the content when a product needs more than prose.

That breadth has a visible cost in the project itself. Our checkout contained 4,246 files and about 130,095 lines of source before dependencies. Docusaurus is a workspace of packages, themes, plugins, examples, and its own website rather than one small renderer. A team adopting the released packages does not inherit that whole repository, but a contributor or deep debugger has to understand parts of it.

Static output keeps hosting separate from authoring

A production build writes static files to the build directory. Docusaurus does not require its own application server after that step, and the deployment guide lists GitHub Pages, Netlify, Vercel, self-hosting, and other static hosts. The site can generally work without browser JavaScript, although interactive React components naturally depend on it. This separation makes the deployment model easy to reason about.

Configuration still has sharp corners. The url, baseUrl, and trailingSlash values must match the host, and the official guide warns that identical output can behave differently across hosting providers. Our full repository build took 314 seconds, which is not a forecast for your site. Content volume, plugins, locales, and preserved versions will determine the build you pay for on every deployment.

Versioning copies the docs tree and should stay selective

Running the version command copies the current docs folder and sidebar into versioned directories. That gives users stable pages for older releases and lets the current docs continue changing. It also duplicates content. The Docusaurus guide says most sites do not need versioning, recommends it for frequently changing, high-traffic documentation, and suggests limiting preview builds to 2 or 3 versions when startup gets slow.

Internationalization follows the same file-first approach. Each locale receives translated Markdown, JSON labels, and plugin-specific data under an i18n directory. Locales can be built and deployed independently, and Crowdin is an integration rather than a requirement. That is a sensible fit for a large project. For one language and one supported release, much of this machinery will sit unused.

What happened when we ran it

Our sandbox installed the Docusaurus monorepo in 109 seconds. The lab recorded 1 package installed, yet the resulting dependency footprint was 1,102 MB, so the package counter should not be read as a small environment. The build completed successfully in 314 seconds inside an unprivileged container with 3 CPUs, 8 GB of RAM, Node 22, and no secrets.

The test command failed with exit code 1 after 48 seconds. Vitest reported 2,958 passing tests and 1 failure out of 2,959 across 183 test files. The failed file was packages/docusaurus-utils/src/vcs/__tests__/gitUtils.test.ts: 40 of its 41 tests passed, and the summary recorded 1 failed snapshot. The supplied log tail ended with ELIFECYCLE and did not show enough detail to name the mismatch, so we will not guess.

The same 62.9 MB checkout had 17 CI workflow files and a tests directory, but no Dockerfile. That is much more project infrastructure than nano-sized tools usually expose. It also makes the single failure worth reporting precisely: the suite exercised thousands of cases, while commit 5215a33 did not finish green in our stated Debian environment.

Stable v3 starts on Node 20, while core contribution is heavier

The v3.10.2 installation guide requires Node.js 20 or newer and scaffolds a site with npx create-docusaurus@latest my-website classic. A generated site has familiar docs, blog, src, and static folders plus its configuration and sidebar. You can preview it locally, then copy the built directory to a static host. No database or Docusaurus account is involved.

Swizzled theme internals can break on minor upgrades

Docusaurus calls component replacement swizzling. Wrapping a theme component keeps the original implementation and adds code around it; ejecting copies the component into your project. The swizzling guide warns that unsafe components can change incompatibly during a minor theme release. A custom header can therefore become code your team must compare and repair during upgrades.

MDX also carries HTML and React parsing edge cases. Open issue 12449, filed against v3.10.2 on September 15, 2026, reproduces a newline inside an anchor becoming a paragraph element and breaking a table after formatting. That report is still awaiting triage. It is a narrow bug, but a useful reminder to build rendered docs in CI instead of treating Markdown edits as text-only changes.

Search is an integration, not a built-in local index

The official search path is Algolia DocSearch. It needs an application ID, a public search API key, and an index, and the hosted crawler normally reads the public site. Private sites can run a crawler themselves. Typesense and local search plugins are listed as community options, so teams behind a firewall should choose and test that dependency before promising search.

Development remains active around the 398 combined open issues and pull requests. GitHub recorded 66,247 stars and a last push on September 14, 2026; v3.10.2 was released on July 10. The open v4 umbrella issue lists Node 24, React 19.2, TypeScript 6, and other migration work, but v4 is not the latest stable release. New adopters should use the stable guide and watch that issue rather than configuring against main.

Docusaurus is worth its weight for docs with product requirements

Choose Docusaurus when versions, locales, a blog, custom React pages, and static deployment are requirements you would otherwise assemble yourself. Its 2,958 passing tests, active release work, and detailed manuals support that choice, while the single failed snapshot keeps our result short of clean. For a compact manual with one language and little custom UI, a smaller generator leaves less code, fewer dependencies, and fewer upgrade decisions to own.

Alternatives

ProjectWhat it isPick it when
VitePressA Vue and Vite documentation generator with a smaller conceptual surface.pick this instead when your team prefers Vue and wants a leaner docs-focused stack.
MkDocsA Python static documentation generator centered on Markdown and configuration.pick this instead when Python and straightforward Markdown matter more than React components.
StarlightAstro's documentation theme supplies navigation, search, and internationalization.pick this instead when you want Astro's content model and less React-specific site code.

What people are saying

  1. [velocity-scout] facebook/docusaurus

Sources

  1. Docusaurus repository and README
  2. Docusaurus v3.10.2 release
  3. Docusaurus v3.10.2 installation guide
  4. Docusaurus versioning guide
  5. Docusaurus swizzling guide
  6. Docusaurus search guide
  7. MDX anchor line-break bug report
  8. Docusaurus v4 umbrella issue

More web reviews

gin · components · docs · react-admin · engine · openui · the whole board →