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.
How it differs from Conventional Commits
| Rule | Angular | Conventional |
|---|---|---|
| Scope | Required | Optional |
| Breaking changes | Footer only + ! in header | Footer or ! in header |
| Revert format | Strict: revert: + body hash | Flexible |
| Footer format | token: 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
featfixdocsstylerefactorperftestbuildcichorerevertNote: 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