Release Notes Checklist
Steps a release captain runs to draft, review, and publish customer-facing release notes for a versioned software release. Covers feature summaries, bug-fix references, breaking-change migration guidance, and changelog publication.
Release Summary
-
Capture version number and release type
Use semver: bump major for breaking changes, minor for backward-compatible features, patch for fixes. The release captain owns the version bump; double-check it matches the git tag (e.g., v2024.45.0) on the release branch.
Collects text Collects list Collects date -
Draft the release summary paragraph
Two to four sentences in customer-readable prose, not commit-message shorthand. Lead with the biggest user-visible change; do not mention internal refactors, dependency bumps, or test-only changes here. PM can edit later — get a draft down.
-
List the top customer-visible changes
Pick three to five highlights for the top of the changelog. These should map to PRs that shipped behind feature flags now being flipped on, not every merged commit since the last tag.
Features and Improvements
-
List new features merged since last release
Run git log --merges previous-tag..HEAD against the release branch and cross-reference Jira/Linear epics tagged for the milestone. Each feature gets a one-line user-facing description — not the PR title.
-
Describe enhancements to existing features
Performance wins, UX polish, expanded API surface on existing endpoints. Quantify when you can: "p95 dashboard load down from 1.8s to 600ms" beats "performance improvements."
-
Link each entry to its PR and ticket
Internal changelog links to GitHub PR + Jira/Linear ticket; public changelog links to docs or the public roadmap entry. Keep the two views consistent so support can trace a customer question back to the merging PR.
Bug Fixes
-
Enumerate customer-reported bugs fixed
Pull from the support tag in Jira/Linear and the Sentry/Bugsnag issues marked resolved-in-release. Skip internal-only flakes and test-suite fixes — those are not customer-facing.
-
Reference Jira or Linear ticket numbers
Public changelog uses the customer-visible reference ("resolved an issue affecting SAML login on the EU region"); internal changelog includes the ticket ID. Customers searching support tickets should find the matching changelog entry.
-
Note known issues still outstanding
Disclose anything customers are likely to hit and the planned fix milestone. Hiding a known regression that surfaces in support within 24 hours of release damages credibility more than naming it up front.
Compatibility and Requirements
-
Document changes to system requirements
Minimum Node/Python/Ruby version, supported browsers, mobile OS floors, container base-image bumps. If you dropped Node 16 support this release, that line goes here in bold — not buried in the upgrade section.
-
Flag breaking API changes
Removed endpoints, renamed fields, changed default values, stricter validation, response-shape changes. If yes, the migration guide step (later in this checklist) becomes required. For a major version bump this should be Yes; for minor or patch it should be No.
Collects list -
List deprecated features and sunset dates
Each deprecation needs a removal target version or date — "deprecated, will be removed in v2025.10" is actionable; "deprecated" alone leaves customers guessing. Cross-link to the replacement API or feature.
Upgrade Instructions
-
Document the database migration scope
Schema-only migrations are fast and reversible. Schema-plus-backfill migrations need a batched runbook so the backfill does not lock the table during peak traffic — adding a NOT NULL column with a default on a 50M-row Postgres table will take exclusive locks for hours.
Collects list -
Write the step-by-step upgrade guide
For self-hosted customers: exact helm upgrade / terraform apply / docker-compose commands, in order, with expected output snippets. For SaaS-only releases, this section can simply state "No customer action required."
-
Document the rollback plan
Confirm the previous container image is still in the registry (not pruned), the previous Helm release revision is rollbackable, and the migration is reversible. A rollback plan that has never been tested is not a rollback plan — note when this was last drilled.
-
Write the data backfill runbook
Batch size, sleep interval between batches, replication-lag threshold to pause on, and how to resume from a partial backfill. Include the expected wall-clock duration on a representative customer dataset so SREs know whether to start it before or after the deploy window.
-
Write the breaking-change migration guide
For each breaking change: before/after code snippet, the search pattern customers can grep their codebase for, and the deprecation timeline if there's a parallel-support window. Customers integrating against your API will paste these snippets directly into their PRs.
Acknowledgments
-
Credit internal contributors and reviewers
For open-source projects, list every external PR author by GitHub handle. For internal releases, name the feature owners and any cross-team reviewers (security, design, docs) who unblocked the work.
-
List new third-party dependencies and licenses
New packages added to package.json, requirements.txt, go.mod, Gemfile since the previous release. Confirm each license is on the approved list — GPL/AGPL copyleft propagation is the gotcha for proprietary distributions, and SBOM consumers will check.
Support and Contact Information
-
Add support channel and SLA references
Customer support email, dedicated Slack Connect channel for enterprise tier, status page URL. Note response-time expectations by tier so customers reading the changelog after-hours know what to expect.
-
Link the issue tracker for bug reports
Public GitHub Issues / Linear public board / Canny portal URL, plus a one-line note on what information to include in a report (version, browser, reproduction steps). Saves a round-trip for the on-call engineer triaging incoming reports.
Review and Publish
-
Route the draft to PM and engineering lead
PM reviews customer-facing wording and feature framing; engineering lead verifies technical accuracy of breaking changes and migration steps. Both must approve before the changelog is published — capture sign-off below.
Collects signature -
Publish to the changelog and status page
Publish in lockstep with the deploy: changelog goes live as the canary reaches 100%. Update the Statuspage scheduled-maintenance window to closed, and post the URL of the live changelog entry below for traceability.
Collects url Collects text -
Announce in #engineering and customer Slack
Three-sentence announcement linking the changelog, naming the release captain on-call for the next 24 hours, and flagging any breaking changes customers need to act on. Skip the email blast for patch releases; reserve it for major and minor.
Use this template
Copy it to your account, customize the steps, and run it with your team in minutes.
Browse hundreds of free templates across every team and industry.
Back to template libraryRun Release Notes Checklist with your team
Customize the steps, assign roles, set a schedule, and keep a complete record for every run.