← All ArticlesTrip Reveal

Conventional Commits Best Practices: A Developer Guide

2026-09-12

Conventional Commits is a lightweight convention for writing commit messages. Once adopted, your git history becomes readable, changelogs generate automatically, and your team ships with consistency.

The Format

Every conventional commit follows this structure:

  • type: What kind of change (feat, fix, docs, etc.)
  • scope (optional): What part of the codebase (auth, api, ui)
  • subject: Short description of the change

Example: `feat(auth): add OAuth2 PKCE flow`

The Core Types

Use these types consistently across your team:

  • feat — A new feature for the user
  • fix — A bug fix
  • docs — Documentation only changes
  • style — Formatting, semicolons, no code change
  • refactor — Code change that neither fixes a bug nor adds a feature
  • perf — Performance improvement
  • test — Adding or updating tests
  • build — Changes to build system or dependencies
  • ci — CI configuration changes
  • chore — Other changes that don't modify src or test files

Scopes: Keep Them Meaningful

Scopes help you understand what part of the system changed. Good scopes match your project structure:

  • Use module names: `auth`, `api`, `ui`, `db`
  • Use component names: `header`, `checkout`, `search`
  • Keep scopes lowercase and short
  • Skip the scope for cross-cutting changes

Breaking Changes

Signal breaking changes with a `!` after the type/scope or a `BREAKING CHANGE:` footer:

  • `feat(api)!: remove deprecated v1 endpoints`
  • Add `BREAKING CHANGE: v1 endpoints removed` in the footer

Breaking changes trigger major version bumps in semantic versioning.

Writing Good Subjects

The subject line should complete this sentence: “If applied, this commit will...”

  • Bad: “fixed stuff” — What stuff?
  • Bad: “WIP” — Not a completed change
  • Good: “add retry logic to API client” — Clear and specific
  • Good: “fix memory leak in event listener cleanup” — Describes the fix

Automate Everything

Conventional commits unlock automation:

  • Changelogs: Generate CHANGELOG.md from commit history
  • Version bumps: Auto-determine semver from commit types
  • Release notes: Group commits by type for release announcements
  • CI checks: Enforce commit format in pre-commit hooks

Team Adoption

Getting your team on board:

  • Start with a linting tool (commitlint) to enforce format
  • Add a pre-commit hook that validates messages before commit
  • Write a CONTRIBUTING.md with your commit conventions
  • Lead by example — consistent commits from maintainers set the tone

Tools That Help

  • commitlint — Lint commit messages against a config
  • husky — Git hooks made easy
  • standard-version — Automated versioning and changelogs
  • semantic-release — Fully automated package releases

The Bottom Line

Conventional Commits costs you 10 extra seconds per commit. It gives you readable history, automatic changelogs, and team consistency. The ROI is immediate and compounds over time.

Adopt the convention today. Your future self will thank you when you are debugging a production issue at 2 AM and your git log actually makes sense.

---

*Want to generate conventional commit messages automatically? Try Git Commit Message Generator — AI-powered commit messages from your staged changes.*

Ready to Create a Boarding Pass?

Join the waitlist and create custom surprise trip boarding passes for $5.

Join the Waitlist

More Articles