react-native-windows-samples icon indicating copy to clipboard operation
react-native-windows-samples copied to clipboard

Migrating from Docusaurus v1 to v2 / v3+ for website

Open anupriya13 opened this issue 6 months ago β€’ 1 comments
trafficstars

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

Or if using Yarn:

bash
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
const siteConfig = { title: 'My Site', tagline: 'The tagline', ... };

v2:

js
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
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
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
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
/static/img/...

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


8. πŸ§ͺ Test Locally

bash
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
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.

anupriya13 avatar Apr 21 '25 05:04 anupriya13

There's a history this this you can see here: https://github.com/microsoft/react-native-windows-samples/issues/269 You'll definitely want to talk to @Yajur-Grover about this, as he spent some time looking at it. @anupriya13 , as a process note, don't remove the Needs: Triage label. That'll get handled per https://github.com/microsoft/react-native-windows/wiki/Triage-Process

chrisglein avatar Apr 23 '25 17:04 chrisglein