Skip to main content

Glossary

What is semantic versioning?

Semantic versioning (SemVer) is a numbering scheme for software releases that uses three numbers, MAJOR.MINOR.PATCH, such as 2.4.1. The major number rises for incompatible changes, the minor number for backward-compatible new features, and the patch number for backward-compatible bug fixes.

Updated 2026-09-15

How does semantic versioning work?

Every version number has three parts separated by dots: MAJOR.MINOR.PATCH. Each part is a plain integer that only ever increases. When one part goes up, every part to its right resets to zero.

The rules are simple and strict:

  • MAJOR changes when you make a change that breaks existing integrations or workflows. Customers must adapt before upgrading. This is what a breaking change looks like in a version number.
  • MINOR changes when you add functionality that stays backward compatible. Existing customers can upgrade without touching anything.
  • PATCH changes when you fix a bug without adding or removing behavior.

Two extensions are common. A pre-release label such as 3.0.0-beta.2 marks a build that is not yet stable. Versions that start with 0, such as 0.9.4, signal that the public interface is still settling and anything may change.

The scheme was written for software libraries and APIs, where a version number is a promise to other programs. Product teams borrow it because the same promise is useful to humans reading a changelog.

Why does semantic versioning matter for product teams?

A version number is the shortest possible release note. Read correctly, it tells a customer whether an update is safe to install, worth reading about, or something to plan around.

For product managers, the scheme forces a decision at every release: is this change breaking, additive, or corrective? That decision shapes the release notes, the support plan, and the timing of the announcement.

For customer success, it turns vague questions into precise ones. "Which version are you on?" becomes a diagnostic tool. A customer stuck on 2.x while everyone else runs 3.x has a known migration ahead, not a mystery.

For engineering and partners, dependency tools rely on the numbers. Many package managers auto-accept minor and patch updates while holding back majors. Mislabel a breaking change as a patch and you break customers who trusted the number.

The changelog versioning guide walks through how these choices show up in a public changelog.

Semantic versioning examples

The pattern is easiest to see as a sequence of releases for one product:

  • 2.4.1 to 2.4.2: a fix for a date-formatting bug in exports. Nothing new, nothing removed. Patch.
  • 2.4.2 to 2.5.0: a new webhook event is added. Old integrations keep working. Minor.
  • 2.5.0 to 3.0.0: an old authentication method is removed after a deprecation notice. Customers must migrate. Major.
  • 3.0.0-rc.1: a release candidate for that major, shipped to a beta group before general availability.

In the JavaScript ecosystem, npm packages use the scheme by default. A dependency range written as ^2.4.1 tells the package manager to accept any 2.x release at or above 2.4.1, but never 3.0.0. That single caret encodes the whole contract.

Large open source projects such as Node.js publish their releases under the same three-number scheme, which is why teams can plan upgrades around a major number rather than a date.

How to apply semantic versioning in a SaaS product

  1. Define what "public interface" means for you. For an API product it is the endpoints and payloads. For a UI product it may be integrations, exports, and documented workflows. Write it down before you version anything.
  2. Decide the bump before the code is merged. Ask the breaking, additive, or corrective question in planning, not at release time. This is a core part of release management.
  3. Deprecate before you remove. Announce the removal in a minor release, keep the old behavior working, then remove it in the next major.
  4. Put the version number in the changelog entry. Pair it with the Keep a Changelog format so readers see Added, Changed, Fixed, and Removed under each version.
  5. Use pre-release labels for beta programs. A -beta or -rc suffix makes it clear which builds are experimental.
  6. Keep majors rare and well announced. A major release deserves its own communication plan, migration guide, and support window. See product release management for how to run one.

Common mistakes and how semantic versioning relates to release cadence

Treating the major number as marketing. Jumping to 4.0 because of a redesign, while breaking nothing, dilutes the signal. Customers stop trusting that a major means work for them.

Hiding breaking changes in a minor. This is the opposite failure and the more damaging one. It usually happens when a team is afraid of a big version number.

Never leaving 0.x. A product with paying customers has a stable interface whether the number admits it or not. Ship 1.0.0 and start keeping the promise.

Confusing versions with cadence. Semantic versioning says nothing about how often you ship. A team on a weekly release cadence might ship many patches and a handful of minors per quarter. Continuously deployed web apps sometimes skip customer-facing version numbers entirely and rely on dated changelog entries instead. Both approaches are valid as long as the audience knows what to expect.

Versioning only for engineers. If the number never reaches customers, it cannot help them. Surface it in release notes, in-app notices, and support conversations.

How AnnounceKit handles semantic versioning

AnnounceKit does not enforce a numbering scheme, so teams can use MAJOR.MINOR.PATCH, dates, or both. Version numbers live in the post title or body of a changelog page hosted on your own domain, and the same post reaches users through more than ten in-app widget display modes, email digests, and Slack.

AI post generation turns a list of commits or tickets into a draft release note, which keeps the Added, Changed, and Fixed structure consistent across versions. Segmentation lets you send a major-version migration notice only to customers on the affected plan or integration. The official MCP server lets AI agents read and publish changelog entries directly.

Pricing is flat per project from $79 per month, with a 15-day free trial.

Semantic versioning: frequently asked questions

What do the three numbers in a version like 2.4.1 mean?

The first number (2) is the major version and changes only for incompatible changes. The second (4) is the minor version and rises when backward-compatible features are added. The third (1) is the patch version and rises for backward-compatible bug fixes. When a number on the left goes up, the numbers to its right reset to zero.

Is semantic versioning only for developers?

It was written for software libraries, but any product with integrations, exports, or documented workflows benefits from it. Product managers use it to classify each release, and customer success teams use it to identify which customers face a migration. The number is only useful if it is visible in release notes and support conversations.

What is the difference between semantic versioning and calendar versioning?

Semantic versioning encodes the kind of change: breaking, additive, or corrective. Calendar versioning, such as 2026.09, encodes when the release happened. Products that deploy continuously often prefer dates, while products with APIs and SDKs almost always prefer semantic versions. Some teams use a date for the changelog entry and a semantic number for the API.

When should a SaaS product move from 0.x to 1.0.0?

Version 1.0.0 signals that the public interface is stable and that breaking changes will be reserved for major releases. If paying customers depend on your product, you already owe them that promise. Ship 1.0.0 and start honoring it rather than hiding behind a 0.x label.

Does a major version always mean a big release?

No. A major version means at least one incompatible change, even if it is small. A large release full of new features that breaks nothing is a minor release. Keeping this distinction honest is what makes the number trustworthy.

Related terms and reading

Changelog

A changelog is a chronological record of the notable changes made to a software product, listed by version or date. Each entry states wha…

Definition →

Release notes

Release notes are the document a software team publishes alongside a release to tell users what changed and why it matters. They usually …

Definition →

Breaking change

A breaking change is a product, API, or software update that stops existing integrations, workflows, or code from working the way they di…

Definition →

Deprecation notice

A deprecation notice is a formal announcement that a feature, API, product version, or integration is being phased out. It tells users wh…

Definition →

Keep a Changelog format

Keep a Changelog is a widely used convention for writing a CHANGELOG.md file. Each version gets its own heading with a release date, newe…

Definition →

Release management

Release management is the process of planning, scheduling, testing, and deploying software changes, then communicating them to users. It …

Definition →

Changelog Versioning: How Semantic Version Numbers Work (With 5 SaaS Examples)

Read the article →

How to Keep a Changelog: Format, Best Practices, and Examples Written for Humans

Read the article →

Product Release Management: 7 Phases, Checklists, and KPIs

Read the article →

Changelog vs. Release Notes: Understanding the Differences and When to Use Each

Read the article →

How to write a changelog

See how AnnounceKit does it →

Release notes software

See how AnnounceKit does it →

Put Semantic versioning into practice with AnnounceKit

Changelog, in-app widgets, feature requests and NPS in one platform. 15-day free trial, no credit card.

Or book a demo to see AnnounceKit in action.