- Stable releases use versions like
0.4.24and publish to the npmlatestdist-tag. - Prereleases use versions like
0.4.24-alpha.1and publish to the npm dist-tag named by the prerelease suffix, such asalpha.
Branch policy
Use branch separation to decide what code is eligible for each release channel. Dist-tags only control npm install defaults; they do not remove code from a package.mainis stable/releasable. Anything merged tomainis eligible forlatest.release/v*branches are for stable patch releases and hotfixes.next,alpha,beta,rc,canary, andprerelease/*branches are for prerelease integration.
main.
Stable release
Stable releases must be reachable fromorigin/main or origin/release/v*.
Prepare and review release notes before creating the release commit:
release:prepare drafts missing changelog artifacts and exits non-zero for review so chained release commands stop before tagging. After the generated TODO summary is rewritten, rerun the same command to create the release commit and tag.
See Changelog process for the full workflow. For stable releases, bun run set-version <version> still enforces this checkpoint when maintainers run the lower-level release command directly.
Alpha release
Alpha releases must be reachable from a prerelease branch such asorigin/next or origin/alpha.
Use the same changelog draft workflow when the prerelease contains changes that users should know about.
CI guardrails
The publish workflow validates release channel boundaries before publishing:- Stable versions must publish with
latest. - Prerelease versions must publish with the prerelease dist-tag, such as
alpha. - Stable tags must be reachable from
mainorrelease/v*. - Prerelease tags must be reachable from a prerelease branch.
- Merged
release/vX.Y.ZPRs publish stable releases only.