Basics

Semantic Versioning (SemVer) Explained

Understand MAJOR.MINOR.PATCH versioning, when to bump which number, and why SemVer matters for your changelog and your users.

What is Semantic Versioning?

Semantic Versioning (SemVer) is a versioning convention that communicates meaning about the underlying changes. Every version number has three parts:

MAJOR.MINOR.PATCH
  3  .  2  .  1

The three parts

  • MAJOR (3.x.x) — Breaking changes. Existing integrations may need updates.
  • MINOR (x.2.x) — New features that are backward-compatible. Safe to upgrade.
  • PATCH (x.x.1) — Bug fixes and minor improvements. No new features, no breaking changes.

When to bump what

Here are typical scenarios:

1.0.0 → 1.0.1  Bug fix (patch)
1.0.1 → 1.1.0  New feature (minor)
1.1.0 → 2.0.0  Breaking change (major)

Pre-release versions

SemVer supports pre-release labels for testing:

2.0.0-alpha.1
2.0.0-beta.3
2.0.0-rc.1

Why SemVer matters

  • It communicates the risk of an upgrade at a glance.
  • Package managers (npm, Composer) use it for dependency resolution.
  • It builds trust: users know what to expect from each release.
  • It prevents dependency hell in complex projects.

SemVer and changelogs

A changelog organized by SemVer versions gives users a clear upgrade path. Each version entry tells them exactly what changed and whether they need to take action. Tools like Deplyd automatically display version numbers alongside your changelog entries.

Ship changelogs that get read

Try Deplyd free — 1.8KB widget, REST API, and email notifications included.

Start free now