The [Unreleased] section is useful in development. It acts as a buffer for pending changes. However, leaving changes in [Unreleased] for months defeats the purpose. Commit to a release date. If you are not shipping, you are not writing a CHANGELOG; you are writing a TODO list.
At its core, a CHANGELOG is a curated, chronologically ordered list of notable changes made to a project or software product. CHANGELOG
But let’s be precise. A CHANGELOG is not a raw git log. Your commit history is full of noise: "WIP," "fix typo," "linting," "oops, forgot a semicolon." A CHANGELOG is a human-readable refinement of that noise. The [Unreleased] section is useful in development
According to Keep a CHANGELOG (the industry gold standard), a proper CHANGELOG contains three categories of changes for each version: Example entry: Version 2
The CHANGELOG feature allows users to track changes made to a project over time. This feature provides a clear and concise record of updates, bug fixes, and new features.
Do not copy/paste your Pull Request titles into the CHANGELOG.
Example entry: Version 2.4.0 — 2026-04-10