Semantic Release Conventional Commit Version Bump
Use Conventional Commits to signal patch, minor, and major releases for semantic-release, release-please, changesets, and similar tooling.
Direct answer
In the common semantic-release setup, `fix:` creates a patch release, `feat:` creates a minor release, and any commit with `!` or a `BREAKING CHANGE:` footer creates a major release. Other types such as docs, test, chore, ci, build, and refactor usually do not publish a release unless your release config maps them differently.
Open Conventional Commit GeneratorWhen to use this
- You need the next package version to be patch, minor, or major.
- A breaking API, config, or database change must be visible to release tooling.
- You are using semantic-release, release-please, changesets, or automated changelogs.
Steps
- Decide whether the change is patch, minor, or major from the consumer impact.
- Use fix for bug fixes that should ship as patch releases.
- Use feat for new capabilities that should ship as minor releases.
- Use `!` or a `BREAKING CHANGE:` footer for incompatible changes.
- Check your repository release config before relying on custom type behavior.
Example
Removed the v1 invoices endpoint. Clients must call /v2/invoices and pass accountId instead of customerId. Updated migration notes.
feat(api)!: remove v1 invoices endpoint BREAKING CHANGE: clients must call /v2/invoices and pass accountId instead of customerId.
Common mistakes
- Do not use feat for an incompatible change without a breaking marker.
- Do not assume docs, chore, or refactor will publish a version in every release config.
- Do not hide migration details in the subject when a footer is clearer.
FAQ
- Which Conventional Commit creates a patch release?
- In common semantic-release presets, fix creates a patch release.
- Which Conventional Commit creates a minor release?
- In common semantic-release presets, feat creates a minor release.
- How do I mark a major release?
- Use `!` after the type or scope, add a `BREAKING CHANGE:` footer, or do both if your tooling and team prefer the explicit signal.
Related Conventional Commit guides
Which Conventional Commit Type Should I Use?
Choose the right Conventional Commit type for feat, fix, docs, refactor, perf, test, build, ci, chore, and revert commits.
Fix a Commitlint Conventional Commit Failure
Rewrite failed commitlint subjects into valid Conventional Commit messages with the right type, scope, subject, and breaking-change footer.
AI Coding Session Commit Message Generator
Turn a Claude Code, Codex, Cursor, Copilot, or Windsurf coding session summary into one clean Conventional Commit message.