If your release notes say “Bug fixes and minor improvements,” you’re doing it wrong.
The right release notes can boost morale, surface hidden wins, and make your product look alive. Here’s proof.
The stand-up meeting was a sea of tired but triumphant faces. We’d done it. The last critical bugs squashed, the features merged, and the build was green. That beautiful, rare moment of calm before a release.
Then, the project manager cleared his throat. "Great work, everyone. Just one last thing... who's on release notes?"
Silence. I swear I saw one of our most senior developers pretend his connection froze.
It was housework nobody wanted to do. Like being asked to write documentation for code you didn't write. I wish I'd known sooner how valuable release notes can be, but I didn't. Not then.
For years, I treated release notes like a chore. A mandatory text field Apple forced me to fill. I’d cobble together a few lines from commit messages: “Fixed a bug,” “Improved performance”, and hit submit, convinced no one read them, anyway. In the age of silent, automatic updates, who even looks at the "What's New" field?
Recently, I was helping out on a project, and just because I had the opportunity, I ran the repo through my release note generator, to analyze and generate notes for their latest version. The discovery was illuminating: not only did it reveal the latest new features with surprising clarity, but it also highlighted the many other unrelated changes happening silently in the code and identified those who had been diligently working on them. It even showed me developer collaborations, and unsung heroes who quietly excelled by cleaning up and paving the way.
It hit me that release notes can be so much more than a last-minute "Bug fixes and minor improvements". A good changelog is a team-building artifact, disguised as paperwork.
Although I cannot share release notes from that project, let me paint a picture using Signal, an open-source project I’ve previously used as an example.
The reason I keep using Signal as an example is that it's close to my heart because it's an iOS app, and obviously, because anyone can look at its source code. It's on GitHub!
So, let's have at it. For their latest release, version 7.71, they wrote the following:
Persistence pays off, but it's even better when things work on the first try. We fixed a bug that sometimes required multiple attempts in order to send a sticker from the iOS emoji keyboard. The same fix also works for Genmoji too, so we hope you Genjoy it.
That’s a surprising amount of heart infused into their what’s-new compared to other projects, but I suspect they’ve accomplished even more between this and the previous release. Let's dig deeper.
I cloned the Signal repository, ran version 7.71's commits through Release The Notes!, and here’s just a taste of what popped out:
Fixed Voice Message Playback Crash with AirPlay. (Pete Walters)
Restored and ensured proper swipe gesture functionality on iOS 26 devices. (Elaine, Kate)
Reduced unnecessary UI updates during backup attachment downloads. (Max Radermacher)
..and 6 more.1 ⬅ See the footnote for for the full changelog.
That’s far more than a mere emoji fix. Pete, Harry, Max, Sasha, Elaine and Kate put in a ton of work. There's even a fix for the upcoming iOS 26 in there.
Keeping chronological release notes like this builds the team's collective memory. When did we add the feature flag system? It's right there.
Onboarding a new teammate? Point them at the last quarter's release notes. In twenty minutes they'll know what you actually ship (not just what the roadmap promises), who to ask about what, and the recurring themes. Patterns pop, gaps show up, and improvements follow. It’s a lot better than tossing someone a 40‑page crusty dusty “architecture” doc.
A good release note makes the invisible visible. Refactors, cleanups, process tooling, performance work, this is real value no one hears about unless we take care to highlight it. Not only that, but it feels good to see your name show up. It proves you're contributing, that you're part of this joint effort. It's a morale booster. Kudos to Elaine and Kate for fixing swipe gestures. Shout-out to Pete for improving translations. Recognition isn't a perk; it's fuel. Share the release notes as widely as you can, and celebrate the achievements.
Release notes aren’t a chore after the work. They’re the story of the work. When you make the invisible visible, you not only boost morale, you also show customers that this product is alive, improving, and cared for.
You shipped. Tell the story.
Signal version 7.72 release notes (generated)
Overview:
This release introduces a series of significant improvements aimed at enhancing application stability, performance, localization accuracy, and user experience. Key updates include the transition to production feature flags, localization enhancements, stability fixes for group call ICE candidate handling, voice message playback, and swipe gestures on iOS 26. Additionally, the release refines the backup restore UI, modernizes push registration with async/await, optimizes download progress updates, and cleans up legacy registration code.
---
Features
Transition to Production Feature Flags
- Implemented a robust feature flag system to switch the app's build configuration from beta to production.
- Contributors: Pete Walters
- Technical Approach: Modified generated Swift files and CI build scripts to set the current build environment to production, replacing beta-specific flags. This change ensures that production features and configurations are correctly enabled, improving stability and deployment confidence.
---
Improvements
Localization Updates for Multiple Languages
- Enhanced translation files (.strings) across various languages for better localization accuracy.
- Contributors: Pete Walters
- Technical Approach: Revised and expanded translation string resources to provide more comprehensive and precise localized content, improving user experience for non-English speakers.
Simplify Backup Restore UI Flow
- Streamlined the backup restore process to be more intuitive and less confusing.
- Contributors: Harry
- Technical Approach: Removed obsolete UI elements and comments in RegistrationChooseRestoreMethodViewController.swift, replacing the local restore method with a direct remote restore trigger to simplify user interaction.
Cleanup Registration Codebase
- Reduced code clutter and potential maintenance issues.
- Contributors: Max Radermacher
- Technical Approach: Deleted unused methods and comments in registration and push token handling modules, resulting in a cleaner, more maintainable codebase.
---
Bug Fixes
Prevent ICE Candidate Crash in Group Calls
- Fixed a crash caused by ICE candidate handling during non-1:1 calls.
- Contributors: Sasha Weiss
- Technical Approach: Added guard conditions in IndividualCallService.swift to verify call type before processing ICE candidates, preventing invalid operations.
Fix Voice Message Playback Crash with AirPlay
- Ensured reliable voice message playback during AirPlay sessions.
- Contributors: Pete Walters
- Technical Approach: Adjusted attachment playback logic in AVAsset+Attachment.swift to properly handle AirPlay scenarios, preventing crashes.
Fix Swipe Actions on iOS 26
- Restored and ensured proper swipe gesture functionality on iOS 26 devices.
- Contributors: Elaine, Kate
- Technical Approach: Updated ChatListViewController.swift and related UI components to correct gesture recognition issues, restoring expected swipe behavior.
---
Performance Enhancements
Modernize Push Registration with Async/Await
- Improved reliability and code maintainability of push token registration.
- Contributors: Max Radermacher
- Technical Approach: Refactored PushRegistrationManager.swift to utilize Swift's async/await syntax, replacing promise-based code and adding timeout handling for robustness.
Optimize Download Progress Updates
- Reduced unnecessary UI updates during backup attachment downloads.
- Contributors: Max Radermacher
- Technical Approach: Modified BackupAttachmentDownloadProgress.swift to update progress indicators only once per download session, enhancing performance and UI responsiveness.
---
This release reflects our ongoing commitment to delivering a stable, efficient, and user-friendly application. We appreciate the contributions of all team members involved in these enhancements.
I hope you genjoyed it!