Release Notes Template for Open Source Projects

Free release notes template for open source projects. Structured sections, real examples, and tips users actually read.

5 min read

Why open source projects release notes require a specific approach

Your audience is open source maintainers and contributors. The stakes, terminology, and expectations of open source projects products are different from generic SaaS. This page gives you a copy-paste template and proven practices built for your context.


Core release notes template

## [Version or Date] — [One-line summary]

### ✨ New
- **[Feature name]:** [What it does and why it matters to your audience]

### ⚡ Improved  
- **[Area]:** [Specific improvement with a measurable or concrete outcome]

### 🐛 Fixed
- [Bug description, affected users, and resolution]

### ⚠️ Important
- [Breaking change, required action, compliance notice, or critical update]

3 real open source projects release note examples

Example 1 — Major version bump

v3.0.0 — Breaking

Breaking Changes

  • Dropped Node.js 14 support. Requires Node.js 18+.
  • createClient() now returns a Promise. Update: const client = await createClient(config)

Migration guide

See MIGRATION.md for full upgrade instructions.

Example 2 — Minor feature

v2.8.0

Added

  • --watch flag for automatic rebuild on file changes (#412, thanks @contributor)
  • TypeScript definitions now bundled — no need for @types/package (#389)

Fixed

  • Memory leak when processing large files (>500MB) (#401)

Example 3 — Patch release

v2.7.4

Fixed

  • Security: Bumped axios to 1.6.8 to address CVE-2024-XXXXX (CVSS 7.5)
  • Edge case: zero-byte files no longer throw unhandled exception (#445)

Open Source Projects release note best practices

1. Follow Keep a Changelog (keepachangelog.com) conventions: Added, Changed, Deprecated, Removed, Fixed, Security 2. Tag contributors by GitHub handle with (#issue) references — it builds community 3. Write CHANGELOG.md entries in past tense, from the user's perspective ('Added' not 'Adds') 4. Always link breaking changes to a migration guide in the same release 5. Use GitHub Releases for the canonical public-facing changelog, CHANGELOG.md for the repo-level record


What good looks like

The best open source projects products publish release notes that match their audience's expectations: specific, actionable, and framed around what users care about most. Study how Keep a Changelog standard, GitHub Releases, and npm changelog conventions structure their changelogs as reference points.


Release Notes Email Template

When you ship a major version, an email announcement to your users or subscribers drives adoption faster than a changelog post alone. Here's the template:

Subject: [Project Name] v[X.Y] is out — [One-line headline]

Hi [first name or "everyone"],

[Project Name] v[X.Y] ships today. Here's what's new:

🔥 [Most important change — 1 sentence benefit]
✅ [Second change — 1 sentence]
🐛 [Notable fix — 1 sentence]

→ [Read the full changelog](link)
→ [Upgrade guide](link) — especially if there are breaking changes

[Optional: 1-2 sentence explanation of why this release matters]

Questions or issues? Open a GitHub issue or reply to this email.

— [Your name / team]

Tips for open source release emails:

  • Send within 24 hours of the GitHub Release being published
  • Keep it scannable — no paragraphs, just bullets + links
  • Always link to the migration guide for major versions
  • Include the exact command to upgrade (npm install package@latest)

System Upgrade Notification Template

Breaking changes require advance warning. This template is for notifying users before a disruptive upgrade takes effect:

## ⚠️ Breaking Change in v[X.0] — Action Required by [Date]

**What's changing:** [Brief description — e.g., "The `oldMethod()` API is removed"]

**Why:** [Reason — e.g., "It was deprecated in v2.x and the new approach is safer"]

**What you need to do:**
1. Replace `oldMethod(param)` with `newMethod({ param })` — [migration docs link]
2. Update your config file: rename `old_key` → `new_key`
3. Run `npm run migrate` to auto-fix most occurrences

**Timeline:**
- [Date]: v[X.0] released — breaking change is live
- [Date + 30 days]: Legacy support library retired

**Need help?** Open an issue with the `migration` label.

Use this template for GitHub Releases, your CHANGELOG.md ## Unreleased section, and any announcement posts. The key is giving users enough lead time and a concrete action list — "what changed" alone is not enough for a breaking change.



Stop writing release notes manually

ReleaseGlow generates AI-powered release notes from your commits, tickets, or bullet points — and publishes them to a branded changelog in one click.