Skip to main content

Conventional Commit Types

This document gives you a quick way to determine the correct conventional commit type for your change.


Link to


Multiple Commit Types

Use the most extensive type (the highest in the table below) if a commit includes more than one commit type. Using the broadest type ensures correct versioning. For example, if a feature, as a side-effect, also fixes a bug, it's still a feature. If it closes an issue, please still include Closes: #issue-number in the commit's footer to signify the fix

Breaking Changes

If a commit has breaking changes, you need to declare it using an exclamation mark (!) before the colon (between the type and the colon (:), for example, fix!: Hello world, or, if it exists, the scope and the colon, for example, feat(scope)!: Hello World). With breaking changes, you should include a BREAKING CHANGE: [description] footer describing the breaking change.

Conventional Commit TypeChangelog entryMinimum Version BumpDescription
featFeaturesminor (major if breaking)Newly implemented features
fixBug Fixespatch (major if breaking)Bug fixes
docsDocumentation ChangespatchDocumentation-only changes.
choren/apatchMeta changes that don't change the actual product, but rather the build system, CI configuration, repo structure, etc.
stylen/apatchChanges that only affect the code style (fixed linting issues, etc.)
refactorn/apatchRefactorings only causing internal changes not affecting the actual behavior
perfn/apatchPerformance-only changes, not affecting the actual behavior
testn/apatchAdded, removed or changed unit, integration or E2E tests. May not include changes to the source code.

See also

Conventional Commits Concept »../concepts/conventional-commits