Skip to content

Commit 0e9d2e4

Browse files
authored
chore: update release instructions + minor post-v3.10 release updates (#11913)
1 parent 62c5bf4 commit 0e9d2e4

2 files changed

Lines changed: 100 additions & 1 deletion

File tree

admin/publish.md

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
# Publishing Instructions
2+
3+
These instructions have been updated on April 2026, after the [adoption of npm Trusted Publishing](https://docusaurus.io/blog/releases/3.10#trusted-publishing) in v3.10 ([PR](https://github.com/facebook/docusaurus/pull/11819)).
4+
5+
This guide is designed to be a very concise overview. Read the [publish-legacy.md](./publish-legacy.md) guide for more details, many steps remain the same, and it provides more details.
6+
7+
---
8+
9+
## General
10+
11+
For simplicity, usually don't maintain multiple major-version release lines in parallel:
12+
13+
- new features and breaking changes are always merged on main
14+
- we only merge breaking changes once we are ready to release the next major version
15+
16+
However, we might occasionally have to backport critical bug and security fixes to a branch that could be cut on-demand. For major versions we usually create a `docusaurus-vX` branch once we have started merging breaking changes for the upcoming major version.
17+
18+
## Publish a minor/major release
19+
20+
We'll consider that the latest version is `3.10.0`, and we are now releasing `3.11.0`.
21+
22+
Using npm Trusted Publishing, our releases are published from the `.deploy.yml` GitHub action directly from the `main` branch. Make sure that branch works well and pass all of our CI tests.
23+
24+
However, we need a release branch to cut the new docs version, publish a release blog post and update our changelog.
25+
26+
1. Create a release branch: `git co -b slorber/release-3.11.0`
27+
28+
2. Make sure all the recent PRs have a `pr: ` GitHub label. This [link](https://github.com/facebook/docusaurus/pulls?q=is%3Apr+is%3Amerged+sort%3Aupdated-desc+-label%3A%22pr%3A+breaking+change%22%2C%22pr%3A+new+feature%22%2C%22pr%3A+bug+fix%22%2C%22pr%3A+performance%22%2C%22pr%3A+polish%22%2C%22pr%3A+documentation%22%2C%22pr%3A+maintenance%22%2C%22pr%3A+internal%22%2C%22pr%3A+dependencies%22%2C%22pr%3A+showcase%22%2C%22pr%3A+ignore%22%2C%22pr%3A+translations%22+) helps you find untagged PRs.
29+
30+
3. Run `yarn changelog --from v3.10.0` to generate a changelog from the tagged PRs since a given release/tag.
31+
32+
4. Copy that at the top of the `CHANGELOG.md` file with title `## 3.11.0 (date)`.
33+
34+
5. Write a release blog post, inspired by former release posts.
35+
36+
6. Create the docs version: `yarn workspace website docusaurus docs:version 3.11.0`
37+
38+
7. Make sure there's no Crowdin translation problem. Run this:
39+
40+
```bash
41+
yarn workspace website write-translations
42+
yarn crowdin:upload:website
43+
yarn crowdin:download:website
44+
yarn build:website
45+
```
46+
47+
8. Create a PR ([example](https://github.com/facebook/docusaurus/pull/11825)). Make sure all CI checks pass. If useful, create it earlier to get a deploy preview to review.
48+
49+
9. Go to the [Publish workflow](https://github.com/facebook/docusaurus/actions/workflows/publish.yml) and click the "Run workflow" button. Fill in the form with:
50+
51+
- From branch: main
52+
- NPM version: 3.10.0
53+
- NPM Dist tag: latest
54+
55+
10. Once the workflow finishes and code is on npm, you can merge the release PR.
56+
57+
11. Follow the "After any release" section.
58+
59+
## Release a patch
60+
61+
TODO
62+
63+
## After any release
64+
65+
### Update the examples
66+
67+
Do this on a separate branch/PR after a major/minor/patch release:
68+
69+
```bash
70+
git co -b slorber/release-v3.11.0-examples
71+
yarn examples:generate
72+
git push
73+
```
74+
75+
Open the PR, then merge it.
76+
77+
Make sure the [Docusaurus Playground](https://docusaurus.new) sandboxes keeps working.
78+
79+
### Publish the GitHub release
80+
81+
- Go to https://github.com/facebook/docusaurus/releases/new
82+
- Use tag `v3.11.0`
83+
- Use title `3.11.0`
84+
- Paste the release changelog
85+
- Check "Create a discussion for this release", use type "Release feedback"
86+
- Publish
87+
88+
### Marketing
89+
90+
Post about the new release on:
91+
92+
- X - [example](https://x.com/sebastienlorber/status/2041532494076371044)
93+
- Bluesky - [example](https://bsky.app/profile/did:plc:hxmev3uady7j4litwnr5fzbg/post/3miw5wx5kck2t)
94+
- LinkedIn - [example](https://www.linkedin.com/posts/sebastienlorber_docusaurus-310-is-out-a-milestone-release-share-7447314350014517248-u2LR?utm_source=share&utm_medium=member_desktop&rcm=ACoAAASnHqkBaWvOyS4Hb4oFczVnrE8AA7RA6pU)
95+
- Discord #announcements channel - [example](https://discord.com/channels/398180168688074762/867060988717301780/1491091672250191963)
96+
97+
It's not always easy to get access to an official [@docusaurus](https://x.com/docusaurus) account, but marketing is important, so at least publish something under your own name/account.

website/blog/releases/3.10/index.mdx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ date: 2026-04-07
88

99
We are happy to announce **Docusaurus 3.10**.
1010

11+
This will be the **last release in the v3.x line**, and it helps you **prepare for Docusaurus v4**.
12+
1113
Upgrading is easy. We follow [Semantic Versioning](https://semver.org/), and minor version updates have **no breaking changes**, according to our [release process](/community/release-process).
1214

1315
However, if you opt in for upcoming Docusaurus v4 breaking changes globally with `future.v4: true`, make sure to review the dedicated section below.
@@ -20,7 +22,7 @@ However, if you opt in for upcoming Docusaurus v4 breaking changes globally with
2022
import BrowserWindow from '@site/src/components/BrowserWindow';
2123
```
2224

23-
## v4 future flags {/* #v4-future-flags */}
25+
## v4 Future Flags {/* #v4-future-flags */}
2426

2527
The [Docusaurus v4 Future Flags](/docs/api/docusaurus-config#future) let you **opt in for upcoming Docusaurus v4 breaking changes** incrementally and prepare for Docusaurus v4 ahead of time. You can enable them all at once with `future.v4: true`.
2628

0 commit comments

Comments
 (0)