Skip to content

Migrating from Docusaurus v1 to v2 / v3+ for website #1026

@anupriya13

Description

@anupriya13

Check latest updates from Docusaurus here: https://docusaurus.io/docs

Refer https://github.com/facebook/react-native-website/blob/main/website/docusaurus.config.ts

https://docusaurus.io/docs/migration

🔁 Step-by-Step Migration from Docusaurus v1 → v2

1. 📦 Install Docusaurus v2

bash
CopyEdit
npm install --save @docusaurus/core@latest @docusaurus/preset-classic@latest

Or if using Yarn:

bash
CopyEdit
yarn add @docusaurus/core@latest @docusaurus/preset-classic@latest

2. 📁 Rename siteConfig.js to docusaurus.config.js

Then start adapting its contents. For example:

v1:

js
CopyEdit
const siteConfig = { title: 'My Site', tagline: 'The tagline', ... };

v2:

js
CopyEdit
module.exports = { title: 'My Site', tagline: 'The tagline', url: 'https://yoursite.com', baseUrl: '/', ... }

More about docusaurus.config.js: 👉 v2 config reference


3. 🧹 Remove pages/ and use /src/pages

Docusaurus v2 uses src/pages for your custom React pages.

You can convert Markdown docs to use the docs/ folder and React pages into src/pages.


4. 📑 Move docs/, update sidebar

  • Keep your Markdown files under /docs.

  • Create a sidebars.js file for navigation:

js
CopyEdit
module.exports = { docs: [ { type: 'category', label: 'Getting Started', items: ['intro', 'installation'], }, ], };

5. 🎨 Update custom styling

  • Put custom CSS into src/css/custom.css.

  • Add it to your config:

js
CopyEdit
theme: { customCss: require.resolve('./src/css/custom.css'), },

6. ✨ Use Presets

In docusaurus.config.js, use the @docusaurus/preset-classic preset to enable docs/blog/theme:

js
CopyEdit
presets: [ [ '@docusaurus/preset-classic', { docs: { sidebarPath: require.resolve('./sidebars.js'), editUrl: 'https://github.com/your-org/repo/edit/main/docs/', }, theme: { customCss: require.resolve('./src/css/custom.css'), }, }, ], ],

7. 🖼 Update Images and Assets

Move static assets like logos, favicons, etc. into /static.

bash
CopyEdit
/static/img/...

Access them in code like /img/logo.svg.


8. 🧪 Test Locally

bash
CopyEdit
npx docusaurus start

This runs your site at http://localhost:3000


🧰 Optional: Use Migration Tool

There's a v1 to v2 migration tool to help convert common config:

bash
CopyEdit
npx @docusaurus/migrate

Run it inside your existing Docusaurus v1 project.


✅ Summary Checklist

Task Done?

Task Done?
Install v2 packages 🔜
Rename siteConfig.js 🔜
Setup docs, src/pages 🔜
Create sidebars.js 🔜
Move assets to /static 🔜
Update styling 🔜
Run site locally 🔜

​To migrate your Docusaurus site to version 3.7, follow these steps:​

📦 1. Upgrade Dependencies

Update your Docusaurus packages to the latest versions:​

npm install @docusaurus/core@latest @docusaurus/preset-classic@latest
yarn add @docusaurus/core@latest @docusaurus/preset-classic@latest

🔄 2. Review Breaking Changes

Docusaurus v3 introduces updates, especially related to MDX. Review the migration guide to understand necessary changes:​

Docusaurus v3 Migration Guide
docusaurus.io

🚀 3. Leverage New Features in v3.7

Docusaurus v3.7 includes several enhancements:​
docusaurus.io

React 19 Support.
Rspack Incremental Builds: Improved build performance with Rspack incremental builds enabled by default.

Enhanced Blog Plugin: Support for additional author social icons like Bluesky, Mastodon, Threads, Twitch, YouTube, and Instagram.

New SVGR Plugin: Facilitates importing SVGs as React components.​

For a comprehensive list of changes, refer to the v3.7.0 changelog.​
docusaurus.io

🧪 4. Test Your Site

After upgrading, run your site locally to ensure everything works as expected:​

npm run start

Address any issues that arise during testing.

Sub-issues

Metadata

Metadata

Assignees

Labels

documentationImprovements or additions to documentationenhancementNew feature or requestwebsiteIssues with the website infrastructure

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions