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:
- What changed (the feature or fix)
- Why it matters to users (the benefit)
- 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