Semantic Versioning & Release Management
A version number that actually communicates something, rather than just incrementing arbitrarily.
7.11.1Definition
Semantic versioning (SemVer) is a convention for version numbers in the form MAJOR.MINOR.PATCH, where each segment's increment carries a specific meaning: PATCH for backward-compatible bug fixes, MINOR for backward-compatible new features, MAJOR for breaking changes. Release management is the broader process of planning, versioning, and communicating each release.
7.11.2Why It Exists
Without a shared convention, a version bump communicates nothing about what actually changed or whether upgrading is safe — a consumer of a library or API has to read the full changelog (7.3) every time just to know if their integration might break. SemVer exists to encode that safety information directly in the version number itself, letting automated tooling and human judgment both act on it without reading anything further.
7.11.3What Each Segment Signals
| Segment | Meaning | Example trigger |
|---|---|---|
| MAJOR | Breaking change — existing integrations may need updating | Removing or renaming a public API endpoint (5.4) |
| MINOR | New, backward-compatible functionality | Adding a new optional API field |
| PATCH | Backward-compatible bug fix | Fixing incorrect behavior with no interface change |
7.11.4Common Mistakes
- Shipping a breaking change as a MINOR or PATCH bump, silently breaking every consumer that trusted the versioning convention to signal safety.
- No changelog entry accompanying a version bump (7.3), leaving consumers to infer what changed from the diff alone.
- Version numbers incremented inconsistently or arbitrarily, eroding any trust the convention was meant to provide.
7.11.5Best Practices
- Follow SemVer strictly — a breaking change is always a MAJOR bump, without exception, regardless of how small it seems.
- Pair every release with a clear changelog entry describing what changed and why it matters to consumers.
- Automate version bumping and changelog generation from commit conventions where possible, reducing manual error.
^2.3.0 rely entirely on packages honoring the MAJOR.MINOR.PATCH contract to know which updates are safe to install automatically.