Back to blog
·5 min read

Changelog Best Practices: Examples That Actually Work

Most changelogs are unreadable. Here are examples of good and bad changelogs, plus how to automate the good kind.

Changelog Best Practices: Examples That Actually Work

Most changelogs are bad. Here's what bad looks like, what good looks like, and how to consistently produce the good kind.

Bad vs Good: Real Examples

Example 1: The Commit Dump

Bad:

- fix: resolve auth issue
- feat: add endpoint
- chore: update deps
- fix: typo
- refactor: clean up utils

Good:

## What's New
- **User preferences API**: New endpoint at /api/preferences

## Fixes
- Fixed authentication failing on slow connections

The bad version is your git log. The good version tells users what changed for them.

Example 2: The Vague Update

Bad:

- Various bug fixes and improvements
- Performance enhancements
- Updated dependencies

Good:

- Fixed file exports failing for files over 10MB
- Search is now 3x faster
- Updated to React 19 (no action needed)

"Various bug fixes" tells users nothing. Specifics tell them if their issue was fixed.

Example 3: The Developer Brain Dump

Bad:

Refactored authentication module to implement OAuth2 with PKCE flow,
replacing the legacy session-based auth. Updated middleware to handle
token refresh. Migrated user sessions to new format.

Good:

**Improved login security** — Sign-in now uses a more secure method.
Existing users may need to log in again once.

Users don't care about OAuth2 or PKCE. They care that login is better and they might need to re-authenticate.

The Formula

Good changelogs follow a simple pattern:

  1. What changed (the feature or fix)
  2. Why it matters to users (the benefit)
  3. What to do if action is needed

That's it. Skip the implementation details.

Formatting That Works

Group changes by type:

## New
- Feature descriptions here

## Improved
- Enhancement descriptions here

## Fixed
- Bug fix descriptions here

## Breaking
- Breaking changes here (with migration steps)

Keep each item to 1-2 sentences. If you need more, link to documentation.

Distribution Matters More Than Format

A perfectly written changelog nobody sees is useless. Where are your users?

  • Slack/Discord: Post release announcements where your team or community hangs out
  • Email: Send to subscribers who opted in for updates
  • In-app: Show a "What's new" badge
  • Docs/Blog: Permanent record for SEO and reference

The problem: each channel needs different formatting. A Slack message isn't an email newsletter isn't a docs page.

How Changelog Solves This

Changelog generates user-friendly changelogs from your GitHub releases, then distributes to every channel with one click.

You write once. Each channel gets the right format:

  • Slack gets a compact message
  • Email subscribers get a newsletter
  • Your docs repo gets a PR with a full article

No copying. No reformatting. The AI writes for users, not developers—so output follows best practices by default.

Try it free — generate your first changelog in 5 minutes.

Ready to automate your changelog?

Generate changelogs from GitHub and distribute everywhere with one click.

Get started free