Versioning
Versioning strategy using Changesets and Conventional Commits.
Versioning Guide
This monorepo versions its published packages with
Changesets. Each published
workspace (@acronis-platform/ui-react, shadcn-uikit, icons-react,
icons-sprite, tokens-pd, design-tokens, design-assets) is versioned
independently following Semantic Versioning.
Commit messages additionally follow Conventional Commits (enforced by commitlint), but commits do not drive version bumps — Changesets does. The two are separate concerns: Conventional Commits keep history readable; the Changeset you attach to a PR declares the bump.
How It Works
- Add a Changeset to your PR — declares which packages changed and the
bump type (
patch/minor/major). - Merge to
main— the Release workflow opens a "Version Packages" PR aggregating all pending changesets. - Merge that PR — versions in
package.json, theCHANGELOG.mdfiles, and git tags are updated, and the bumped packages publish to npm.
See the Publishing guide for the full release flow.
Creating a Changeset
From the repo root:
pnpm changesetThe interactive prompt asks:
- which package(s) the change affects,
- the bump type for each, and
- a one-line summary (this becomes the changelog entry).
It writes a markdown file under .changeset/. Commit that file with your code
change.
Bump Type Rules
| Bump | When | Example |
|---|---|---|
| patch | Bug fixes, internal refactors, consumer-invisible dep bumps | 0.34.0 → 0.34.1 |
| minor | Additive, backwards-compatible (new export/prop/option) | 0.34.0 → 0.35.0 |
| major | Breaking change (removed export, rename, changed default) | 0.34.0 → 1.0.0 |
Prefer minor for new components and props; reserve major for planned breaking releases.
Conventional Commits
All commit messages must follow Conventional Commits — commitlint enforces this on every commit and on PR titles. Common types in this repo:
- feat — new user-facing functionality
- fix — bug fix
- chore — repo plumbing, tooling, dependencies
- docs — documentation only (including
AGENTS.md,context/,apps/docs/) - refactor — neither a fix nor a feature
- test — adding or correcting tests
- ci — CI workflow changes
Scope is encouraged — use the workspace or component:
feat(button): add loading state
fix(card-filter): correct chip wrapping
chore(deps): bump vitestWhat NOT to Do
- Don't bump versions manually. Changesets owns
package.jsonversions. - Don't edit or delete
.changeset/*.mdfiles by hand. The Version Packages PR consumes them automatically. - Don't run
npm publishlocally. CI publishes on the Version Packages PR merge.
Root Scripts
These back the Release workflow; you rarely run version/release locally:
| Script | Runs | Purpose |
|---|---|---|
pnpm changeset | changeset | Add a changeset for your PR |
pnpm version | changeset version | Rewrite versions + changelogs (CI) |
pnpm release | changeset publish | Publish to npm (CI) |