When to use it
- Shipping a new version of an app or a library and telling users what changed
- A changelog page or CHANGELOG.md that gets a new entry with every release
- Update emails and in-app announcements for a product release
- Internal releases where support and sales need to know what is new and what is still broken
How to use this template
- Collect every change
Start from the diff between the last release and this one, or from the tickets closed since. Put every merged change on a scratch list, however small. Most lines will be cut or combined later; nothing should be forgotten now.
- Sort by what the user notices
Move each change into New, Improved or Fixed. Anything that shipped broken goes under Known issues, with a workaround. Anything the user must do goes under Upgrade notes. Delete a section rather than leave it empty.
- Write the highlights last
Pick the two or three changes most people will notice and describe what they can now do. The highlights are the part that gets read; the lists below are for the people who need the detail.
- Publish in the format the audience reads
Download the .md to add to a CHANGELOG.md or a docs site, or the .docx for an email or a PDF. The structure is the same either way, so one draft serves both.
Write for the user
A diff records what changed in the code. Release notes record what changed for the person using it. That translation is the whole job, and it is the part most release notes skip. Here are four lines from a made-up release, each rewritten as what the user can now do or what no longer goes wrong, and where to find it:
Written for the user
- Exporting a document with an empty table no longer fails
- Settings save as soon as you change them, without a restart
- Import a CSV file from File › Import
- (Left out: nothing changed for the user)
Copied from the log
- fix: null check in export pipeline (#412)
- Refactor settings store
- feat: csv import
- Bump dependencies
- One line per change. If a line needs two sentences, it is two changes, or it belongs in the highlights.
- Name things as the interface names them. The user looks for "Export", not "the export pipeline".
- Keep the tense consistent. Present tense for what the product does now; past tense only for what was broken.
- Leave out what the user cannot see. Refactors, dependency updates and build changes stay in the commit log, where they belong.
- Be plain in Known issues. A listed bug with a workaround costs less trust than a surprise.
Changelog or release notes?
A changelog is the complete record: one entry per version, usually a Markdown file in the repository that grows at the top. Release notes are the version of that entry written for people: shorter, with highlights, published where users will see it. Keep both from the same list of changes. Write the release notes first, then paste the New, Improved and Fixed sections into the changelog, so the two never disagree.
Frequently asked questions
Where should I publish release notes?
Wherever the user already looks: the in-app update notice, the download page, a release email or the Releases tab of the repository. Use the same text in every place and keep the full record in the changelog.
How long should release notes be?
As long as the list of changes the user can notice, and no longer. A small release is one highlight and five lines. A major release might run to a page, with the highlights doing most of the work. If the New section passes fifteen lines, group it under subheadings by feature area.
Should I include ticket or commit numbers?
Only if the readers use them. Internal release notes for support and engineering can carry a ticket ID at the end of each line. Public notes should not; a user cannot do anything with #412.
Can I use this as a changelog template in Markdown?
Yes. Download the .md, replace the title line with the version and date as a second-level heading (## 2.4.0 — 2026-10-08), demote the section headings one level to match, and paste the block at the top of CHANGELOG.md. The New, Improved, Fixed pattern keeps the file consistent from version to version.
![The template open in Strokes: a banner picture of a few hot-air balloons rising slowly over a wide valley of soft rolling hills at sunrise, above the title “[Product] [X.Y]: [Headline]”.](/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fhero-light.f496bd0f.webp&w=3840&q=75)
![The template open in Strokes: a banner picture of a few hot-air balloons rising slowly over a wide valley of soft rolling hills at sunrise, above the title “[Product] [X.Y]: [Headline]”.](/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fhero-dark.f954f563.webp&w=3840&q=75)



