Release Notes English: Writing Changelogs and Communicating Changes

Learn the English vocabulary and writing patterns for release notes and changelogs — added, fixed, changed, breaking changes, and communication phrases explained.

Introduction

Release notes and changelogs are some of the most frequently written — and most frequently underestimated — technical documents. They communicate changes to users, customers, and other developers. Well-written release notes build trust; poorly written ones create confusion and support burden. For non-native English speakers, mastering the specific vocabulary and writing patterns of release notes is especially valuable because it enables you to communicate changes clearly and professionally across language barriers. This guide covers the vocabulary, structure, and phrases that make release notes effective.

The Changelog Format

The most widely adopted changelog format follows the “Keep a Changelog” convention, which defines standard categories:

  • Added — new features or capabilities; “Added support for webhook signature verification”
  • Changed — changes to existing functionality; “Changed the default timeout from 30s to 60s”
  • Deprecated — features that will be removed in a future version; “Deprecated the /v1/send endpoint — use /v2/messages instead”
  • Removed — features that have been deleted; “Removed the legacy XML API (deprecated since v2.0)”
  • Fixed — bug fixes; “Fixed an issue where pagination tokens expired after 10 minutes instead of 24 hours”
  • Security — security-related fixes; “Fixed a cross-site scripting vulnerability in the search results page”

Using these categories consistently allows readers to scan quickly for what matters to them. A developer upgrading a dependency scans “Breaking Changes” and “Removed” first. A security-focused reader scans “Security” first.

Breaking Change Communication

Breaking changes require special care and specific language:

  • BREAKING CHANGE:” — capitalised label to make breaking changes unmissable
  • “This is a breaking change if you…” — explaining exactly who is affected; “This is a breaking change if you currently pass user_id as a string — it must now be an integer”
  • “Migration required” — a signal that the developer must take action
  • “To migrate, replace [old] with [new]” — the clearest possible migration instruction
  • “This change takes effect in v4.0” — specifying the version is essential
  • “Clients using [feature] must update before upgrading to this version” — setting a clear expectation

The most common mistake in breaking change communication is being vague. “We changed the API” is unhelpful. “We changed the response type of the amount field from string to integer in the /payments endpoint. Clients that parse this field as a string will break.” is precise and actionable.

Writing Effective Bug Fix Descriptions

Bug fix descriptions should follow a specific pattern: what was broken, under what conditions, and what is now correct:

  • Weak: “Fixed a bug with login”
  • Strong: “Fixed an issue where users who logged in with Google SSO were redirected to the wrong page after a password reset”

The word issue is preferred over bug in formal release notes because it sounds less alarming to non-technical readers. “Fixed an issue” is gentler than “Fixed a bug.”

Common patterns:

  • “Fixed an issue where [condition] caused [problem]”
  • “Resolved a race condition in [component] that could cause [symptom] under high load”
  • “Corrected the behaviour of [function] when [edge case] — it now [correct behaviour]“

Security Advisory Language

Security fixes use specific vocabulary:

  • CVE — the identifier for a publicly known vulnerability; “Addressed CVE-2024-12345 affecting the XML parser”
  • “We strongly recommend upgrading” — a firm recommendation, used for serious vulnerabilities
  • “This vulnerability allows an authenticated user to…” — describing the impact
  • “There is no known active exploitation of this vulnerability” — reducing alarm when appropriate
  • “This fix was contributed by [researcher] via our responsible disclosure programme” — crediting security researchers

Communicating Improvements (Not Just Fixes)

Beyond bugs and breaking changes, release notes communicate improvements:

  • “Improved performance of [feature] by approximately 40%” — quantifying the improvement
  • “Reduced memory usage in [component] from X to Y” — specific and measurable
  • “Enhanced error messages for [operation] to include the field name that caused the validation failure” — describing the improvement from the user’s perspective
  • “Added pagination support to [endpoint] — previously limited to 100 results, now supports up to 10,000”

Key Vocabulary

TermDefinition
changelogA file recording all notable changes to a project, organised by version
breaking changeA change that requires existing users to modify their code or configuration
AddedChangelog category for new features or capabilities
FixedChangelog category for bug corrections
DeprecatedChangelog category for features scheduled for future removal
migrationThe process of updating existing code to work with a new version
CVECommon Vulnerabilities and Exposures — an identifier for a known security issue
responsible disclosureA process where security researchers privately report vulnerabilities before publication
issueA polished term for a bug, preferred in external-facing release notes
semantic versioningA versioning scheme where the version number communicates the type of change

Practice Tips

  1. Write release notes for your last three pull requests. Even internal changes benefit from clear descriptions. Practise the pattern: “[Category]: [What changed and how it affects the user].” This discipline makes your PRs easier to review and your releases easier to communicate.

  2. Always quantify performance improvements. “Faster” is meaningless; “50% faster under load above 1,000 concurrent requests” is useful. Practise asking yourself: “Can I add a number here?”

  3. Write breaking change descriptions from the user’s perspective. Not “We changed the data type of amount” but “If your code reads amount as a string, you must update it to read as an integer. Code that does not make this change will receive a 400 error after upgrading to v3.0.”

  4. Read changelogs from Stripe, GitHub, and Vercel. These companies are known for excellent release note writing. Notice how they balance technical precision with accessibility, how they label breaking changes, and how they describe security fixes.

Conclusion

Release note vocabulary — added, fixed, breaking change, deprecated, migration, CVE — follows consistent patterns that make technical communication clear and professional. Well-written release notes reduce support requests, build user trust, and make your product feel polished. For non-native English speakers, mastering the standard patterns of changelog writing is highly transferable — the same vocabulary and structure appear in every well-run open source project and professional software product. Start with the “Keep a Changelog” convention and build from there.