microsoft / microsoft/react-native-windows-samples

Migrating from Docusaurus v1 to v2 / v3+ for website

Open
#1,026 1 comment 0 reactions 1 assignee View on GitHub

@anupriya13 is already working on this.

Since Apr 21, 2025.

documentation enhancement website
Dominant language
C#
Stars
544
Forks
218
PR merge metrics
No merged PRs in 30d

Description

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
bashCopyEditnpm install --save @docusaurus/core@latest @docusaurus/preset-classic@latest

Or if using Yarn:

bashCopyEdityarn add @docusaurus/core@latest @docusaurus/preset-classic@latest

2. πŸ“ Rename siteConfig.js to docusaurus.config.js

Then start adapting its contents. For example:

v1:

jsCopyEditconst siteConfig = {
  title: 'My Site',
  tagline: 'The tagline',
  ...
};

v2:

jsCopyEditmodule.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:

jsCopyEditmodule.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:

jsCopyEdittheme: {
  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:

jsCopyEditpresets: [
  [
    '@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.

bashCopyEdit/static/img/...

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


8. πŸ§ͺ Test Locally
bashCopyEditnpx 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:

bashCopyEditnpx @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.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up β€” it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.