Releasing
This document describes the tag-driven production release flow implemented in .github/workflows/release.yml.
This document describes the tag-driven production release flow implemented in
.github/workflows/release.yml.
Releases cover:
- npm package publishing
- GitHub Releases (notes + artifacts)
The native addon release includes prebuilt .node binaries for the supported
platform matrix and packaging into @rezi-ui/native.
Versioning
Rezi publishes:
@rezi-ui/core@rezi-ui/node@rezi-ui/native@rezi-ui/testkit@rezi-ui/jsxcreate-rezi
The repo uses a single version across these publishable packages.
Update all workspace versions (including inter-package dependency pins):
node scripts/release-set-version.mjs 0.1.0-alpha.16Local Validation Before Tagging
The release workflow runs multiple jobs across Linux/macOS/Windows and Bun. The smallest practical single-host parity check is to run the same blocking slices that gate publish before you push the tag:
npm ci
npm run codegen:check
npm run lint
npm run typecheck
npm run build
npm test
npm run typecheck:ci
npm run typecheck:strict
npm run check:core-portability
npm run check:native-vendor
npm run check:unicode
npm run quality:guardrails
npm run quality:deps
npm run quality:api
npm run test:progress
npm run test:release-critical
npm run build:native
npm run test:release-critical:terminal
npm run smoke:create-rezi-templatesNotes:
npm run quality:deadcodeis advisory in the workflow, so it is omitted from the blocking pre-tag gate. Run it when you want the same report locally.npm run docs:buildis deliberately omitted because docs are deployed separately bydocs.ymlon pushes tomain.npm run test:progressis included primarily to produce the CI summary artifact, not because it is a separate blocking gate from the release-critical tests.- Cross-platform Node (
18,20,22) and Bun coverage still comes from CI; the command block above is the local pre-tag gate.
Native Pack Verification
The publish job does not use npm pack --dry-run for every package. Instead, it
assembles the native prebuild artifacts into packages/native/ and then runs:
node scripts/verify-native-pack.mjsThat script is the canonical packaging check for @rezi-ui/native. It verifies:
- the expected
.nodebinaries are present on disk npm packincludes the expected native files and no unexpected ones- the tarball installs cleanly and the addon loads in a temp project
For local host-only validation after building just your machine's native binary:
npm run build:native
node scripts/verify-native-pack.mjs --host-onlyFor full publish parity, copy the complete release binary set into
packages/native/ first, then run the non---host-only command above.
If you want an extra manual sanity pass for the other publishable packages, run
npm pack --dry-run -w <workspace>, but that is supplemental and not the
current release gate.
Release Checklist
-
Sync versions with
node scripts/release-set-version.mjs <version>. -
Update
CHANGELOG.md. -
Run the local validation block above.
-
Verify native pack contents with the appropriate
verify-native-pack.mjsmode for your local setup. -
Tag the release and push the tag:
git tag v0.1.0-alpha.16 git push origin v0.1.0-alpha.16 -
Confirm the release workflow completes:
quality-preflightrelease-critical-suitestemplate-smokerelease-cibun- native prebuild jobs
publish (npm)
-
Confirm the GitHub release is visible as
Latest. Rezi alpha versions use semver prerelease identifiers in the tag/package version, but the GitHub release itself should not be marked as a prerelease because GitHub hides prereleases from the repository-level latest-release badge.
Publishing Requirements
NPM_TOKENavailable in repository secrets- npm package access configured for the
@rezi-uiscope - GitHub workflow permissions allow package publish and release creation