<- All posts

Usero Journal

Release Notes Tool: How to Pick One (and Keep Writing)

Will Smith··8 min read

Almost every team starts a changelog. Most quietly stop after month two. The tool is rarely the reason, and buying a better one rarely fixes it.

The reason is that writing release notes means a person reconstructing what shipped from git history and memory, on a Friday, from a blank text field. That job has no owner and no deadline, so it loses to every job that has either. Two months in, the last entry is stale, and a stale changelog is worse than none because it advertises that you stopped.

So when you go shopping for a release notes tool, the question worth asking is not which one has the nicest page. They all have a nice page. It is which one removes the blank field, and which one gets the note in front of the people who care. Here is how to tell them apart, and what to do if you would rather not pay for one at all.

What a release notes tool is actually for

Publishing is the easy half. Any static site can host a page of dated entries, and if all you need is a public record, you do not need to buy anything. A tool earns its keep on the two jobs around the publishing.

A release notes tool that is worth a line item does four things a hosted page does not:

  1. Removes the blank field. The draft starts from a record of what actually shipped, not from someone remembering. If you still open an empty box and think, the tool has not helped with the part that kills changelogs.
  2. Distributes past the page. An RSS feed, an in-app widget, and email. A page only reaches people who come looking, and almost nobody comes looking.
  3. Closes the loop with requesters. The people who asked for a change are the ones most likely to care that it shipped. Reaching them is a different job from reaching subscribers.
  4. Collects a response. The moment someone reads that you fixed a thing is the best moment to learn whether it is fixed for them, and that reply needs somewhere to land.
A changelog nobody reads is a compliance exercise. A changelog that reaches the person who asked is a reason to ask again.

The field, roughly

The dedicated tools in this space (Headway, Beamer, AnnounceKit, LaunchNotes, Olvy, Frill, and the changelog module built into Canny) mostly agree on the shape: a hosted public page, an in-app widget that badges unread entries, an RSS feed, and a subscriber list you can email. They differ on polish, on how the widget embeds, and on price. Check current pricing on the vendor site before you commit, because this category changes its plans often and anything I quote here will drift.

I should steelman them, because they do one thing well that a docs page does not: the in-app widget. Putting an unread badge inside the product, where the user already is, is the single highest-leverage distribution move in the category, and the good implementations are unobtrusive and quick to install. If your problem is purely that nobody sees your notes, a widget from any of these solves it, and you can stop reading here.

What none of them solve is the blank field. Several now advertise AI assistance, and it is worth being precise about what that usually means: you paste your own bullet points into a box and get back more fluent prose about whatever you remembered to type. The generator cannot see your repository or your merged pull requests, so a human is still the source of truth, and the changelog still dies the week that human gets busy. Fluent prose about the wrong facts is a worse outcome than rough prose about the right ones.

The gap almost nobody closes: telling the people who asked

Here is the specific thing that made me look at this category properly. Canny's changelog knows exactly which feature requests each release answers, because you link the entry to the posts it closes. It does not tell those people. Canny's own documentation is clear that changelog emails go to your changelog subscribers, not to the voters on the linked posts, on any plan. The requester's signal is a passive card on their own post suggesting they visit the changelog.

The sharp part is that the same product already does this correctly one nav item away. Canny's status-change flow emails voters and gives you a "Notify all voters" checkbox. The capability exists, the link between request and release exists, and the two are simply not wired together at the publish step.

That gap matters more than any feature on a comparison table. The person who filed a request and then heard, in their own inbox, that it shipped is the person who files the next one. Everyone else learns that filing feedback goes into a void, which is the actual reason your feedback volume is low.

What to do without buying anything

If you want the loop closed this week and no new invoice, the manual version works and takes about twenty minutes a release. Keep a file with two columns: the change, and the people who asked for it. When you cut a release, write the notes from your merged pull request titles rather than from memory, since the titles are already a record of what happened. Then send one short email per person in the second column, quoting the words they used. Not a broadcast, a reply.

That last step is the one that produces results, and it is free. Most teams skip it because it is manual, which is exactly the argument for a tool that does it, not an argument for a tool with a nicer page.

Where Usero fits

Full disclosure, this is my product, so weigh it accordingly. Usero's angle on release notes follows from what the rest of it does: Usero authors pull requests from user feedback, so it already holds the link between a request and the code that answered it. The changelog is where that link gets spent.

Click Draft from shipped PRs and the entry assembles from every pull request merged since your last published entry, grouped by conventional-commit prefix into Features, Fixes, and Improvements. Where a pull request traces back to a piece of feedback, the draft quotes the original report and credits the person who sent it. The draft is deterministic and instant: it reads database records, so there is no generation wait and nothing to fact-check, and it cannot invent a feature you did not ship.

Publishing is where the loop closes. Usero walks from the entry to the linked pull requests to the feedback behind them, and emails each distinct person whose request shipped, quoting their own words and linking the entry. You see the count and a sample of the addresses before you click, and the button reads "Publish and notify N". Two separate stamps, one on the entry and one on each piece of feedback, mean republishing never writes to anyone twice. Entries land on your public board with an RSS feed, readers can react and leave a written note, and those notes go into your feedback inbox where they can become the next pull request. Reactions, notes, and inbox routing are on the free tier.

The honest limits, because they are load-bearing. The draft today reads closer to your git log than to polished release prose: a title like "fix: race in export queue" still needs a human pass to become "Exports no longer stall when two run at once". That is minutes of editing on an accurate skeleton rather than an hour on a blank page, but it is editing. An AI pass that does the rewording in your voice is a planned follow-up and is not shipped today; the grounding came first on purpose. And the requester attribution only works where a change traces to feedback you collected in Usero. If your releases do not come out of tracked requests, you get the grouping and the page and none of the part that makes this different, and one of the dedicated tools above is the cleaner fit.

If your changelog died in month two

If the last entry on your changelog is older than your last three releases, the fix is not a nicer page, it is removing the blank field and giving the note somewhere to go. Start a workspace and connect a repo. The changelog feature page covers drafting and the notify step in detail, and AI-authored pull requests covers the half that creates the link between a request and the code in the first place.

Related reading

Frequently Asked Questions

What is a release notes tool?

A release notes tool is software for writing, publishing, and distributing the record of what changed in your product. At minimum it gives you a hosted public page and an editor. The better ones also handle distribution: an RSS feed, an in-app widget that shows unread entries, and email to the people who should hear about the change. The distribution half is what separates a real tool from a markdown file in your docs.

Do I need a dedicated release notes tool, or is a page in my docs enough?

If you ship a handful of times a year and your users are all in one Slack channel, a page in your docs is fine and you should not pay for anything. A dedicated tool earns its place when you ship often enough that writing the notes becomes a chore people skip, or when you need the notes to reach users who will never visit the page on their own. Those are the two failure modes, and only the second one is about publishing.

Why do most changelogs stop getting updated?

Because writing one means a human reconstructing what shipped from git history and memory, usually on a Friday, starting from a blank text field. That work has no natural owner and no deadline, so it loses to everything with either. Any fix that still starts with a blank field and a person who has to remember what merged is treating the symptom.

Should release notes be automated with AI?

Be careful what you automate. Most AI changelog features reformat notes you typed into more fluent prose, which means a human is still the source of truth and the changelog still dies when that human gets busy. Worse, a generator that cannot see your repo will produce plausible details you never shipped. Automating the bookkeeping (what merged, what kind of change it was, who asked for it) is safe because those are records. Automating the prose without the records is how you publish confident sentences about features that do not exist.

How do I tell users their feature request shipped?

Deliberately, because no tool does it for you by default. The common setup publishes to a page and emails an opt-in subscriber list, which is a different set of people from the ones who actually asked. Check whether your tool can walk from a released change back to the specific requests it answers, and email those people. If it cannot, keep the link between request and release yourself and send those messages by hand. It is the highest-value message in the whole loop and it is the one most often skipped.

Build a feedback loop your team actually uses

Usero collects, clusters, and turns user feedback into shipped fixes.

Get started free