Commit standard

Angular Commit Style

The Angular project's commit message convention — the original inspiration for Conventional Commits. Stricter than its successor: scope is required on every commit, and breaking changes must follow an exact footer format.

Generate Angular-style commits

Paste your diff and get a formatted Angular commit message.

Open generator →

How it differs from Conventional Commits

RuleAngularConventional
ScopeRequiredOptional
Breaking changesFooter only + ! in headerFooter or ! in header
Revert formatStrict: revert: + body hashFlexible
Footer formattoken: value (strict)Loosely defined

The format

type(scope): description

[blank line]

Body (optional)

[blank line]

BREAKING CHANGE: explanation

Fixes #issue-number

The scope is non-negotiable — every commit must identify which part of the codebase it affects. This keeps large monorepos scannable and makes automated tooling more reliable.

Commit types

featfixdocsstylerefactorperftestbuildcichorerevert

Note: build and ci are explicit Angular types — not in the base Conventional spec.

Examples

feat(compiler): add strict null checks in template expressions
fix(router): prevent navigation loop on hash change
perf(core): memoize change detection in OnPush components
feat(http)!: remove deprecated HttpModule in favour of provideHttpClient

BREAKING CHANGE: HttpModule has been removed. Migrate to provideHttpClient()
in your app config. See migration guide at angular.dev/migration/http
revert: feat(router): add hash-based location strategy

This reverts commit a1b2c3d4.

When to use Angular style

  • Large monorepos with multiple packages where scope is critical for routing automated tooling
  • Teams that want maximal commit history clarity — scope requirement prevents vague commits
  • Projects using Angular's own tooling (ng generate changelog, semantic versioning bots)
  • Orgs that adopted it before Conventional Commits was formalised and want to stay consistent

Related guides