Skip to content

Unified release process#36456

Open
eps1lon wants to merge 2 commits into
facebook:mainfrom
eps1lon:sebbie/release-simple
Open

Unified release process#36456
eps1lon wants to merge 2 commits into
facebook:mainfrom
eps1lon:sebbie/release-simple

Conversation

@eps1lon
Copy link
Copy Markdown
Collaborator

@eps1lon eps1lon commented May 12, 2026

This unifies the release process for Nightlies and stable releases within a single workflow. The publish job now runs in a protected GitHub environment that matches our protected branches. This ensures release are only published from source that is reviewed by at least two people (commit author and reviewer). No self-review is allowed.

Any release going forward will be done from CI.

Discord notifications and automatic Nightlies should work like before.

Authentication is based on NPM's Trusted Publishing which allows us to drop usage of static automation tokens. However, this means

  1. Nightlies will only be tagged with canary (no more next tag)
  2. older releases will get a backport tag instead

These downsides are unavoidable with NPM's Trusted Publishing. OIDC tokens from GitHub are only allowed to use npm publish (which only allows a single tag). No npm dist-tag or npm deprecate operations are allowed.

Backport releases are blocked until we implement a custom Ruleset bypass to allow ref creation. If we'd allow ref creation for releases/**/*, a single compromised account with write access could just create the ref from an unreviewed commit.

For a stable release, manually bumping versions is still required.

I removed the "release from npm" workflow since that's largely defunct. Especially for backport releases we wouldn't validate a Canary before so all that adds is time between vulnerability discovery and fix being published. Still an interesting idea to implement but since we nowadays publish canaries from CI and use the same artifacts for stable, I don't see much added confidence we'd gain by using NPM artifacts.

Test plan

@meta-cla meta-cla Bot added the CLA Signed label May 12, 2026
@github-actions github-actions Bot added the React Core Team Opened by a member of the React Core Team label May 12, 2026
@react-sizebot
Copy link
Copy Markdown

react-sizebot commented May 12, 2026

Comparing: d5736f0...56763b5

Critical size changes

Includes critical production bundles, as well as any change greater than 2%:

Name +/- Base Current +/- gzip Base gzip Current gzip
oss-stable/react-dom/cjs/react-dom.production.js = 6.84 kB 6.84 kB = 1.88 kB 1.88 kB
oss-stable/react-dom/cjs/react-dom-client.production.js = 613.53 kB 613.53 kB = 108.44 kB 108.44 kB
oss-experimental/react-dom/cjs/react-dom.production.js = 6.84 kB 6.84 kB +0.05% 1.88 kB 1.88 kB
oss-experimental/react-dom/cjs/react-dom-client.production.js = 679.46 kB 679.46 kB = 119.40 kB 119.40 kB
facebook-www/ReactDOM-prod.classic.js = 699.88 kB 699.88 kB = 122.96 kB 122.96 kB
facebook-www/ReactDOM-prod.modern.js = 690.20 kB 690.20 kB = 121.35 kB 121.35 kB

Significant size changes

Includes any change greater than 0.2%:

(No significant changes)

Generated by 🚫 dangerJS against 56763b5

@eps1lon eps1lon force-pushed the sebbie/release-simple branch from c87c22f to 95409bb Compare May 12, 2026 17:20
@eps1lon eps1lon force-pushed the sebbie/release-simple branch from 95409bb to 56763b5 Compare May 12, 2026 17:27
@eps1lon eps1lon marked this pull request as ready for review May 12, 2026 17:31
@eps1lon eps1lon requested review from hoxyq and rickhanlonii May 12, 2026 17:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA Signed React Core Team Opened by a member of the React Core Team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants