Fatskills
Practice. Master. Repeat.
Study Guide: Technical Writing and Documentation 101: Release Notes and Changelogs
Source: https://www.fatskills.com/technical-writing/chapter/technical-writing-and-documentation-release-notes-and-changelogs

Technical Writing and Documentation 101: Release Notes and Changelogs

By Fatskills Exam Guides Team — the exam nerds behind 28,500+ quizzes and 2.1M practice questions across 500+ global exams.

⏱️ ~6 min read

Release Notes and Changelogs


Release Notes & Changelogs: A Practical Study Guide for Technical Writers


What This Is

Release notes and changelogs are concise, structured summaries of changes in a software product—new features, bug fixes, deprecations, and breaking changes. They help users and developers understand what’s new, what’s fixed, and what might break their workflows. A well-written changelog (like Stripe’s) or release notes (like GitHub’s) reduce support tickets, improve adoption, and build trust. Unlike API docs or tutorials, they focus on what changed, not how to use the product.


Key Terms & Tools

  • Release Notes: High-level summaries of changes, often written for end users, marketers, or executives. Example: "v2.1.0: Added dark mode and improved mobile performance."
  • Changelog: A detailed, technical log of changes, usually for developers. Example: "Fixed race condition in /payments endpoint (Issue #42)."
  • Semantic Versioning (SemVer): A versioning scheme (MAJOR.MINOR.PATCH) where:
  • MAJOR = breaking changes
  • MINOR = new features (backward-compatible)
  • PATCH = bug fixes
  • Docs-as-Code: Treating docs like code—stored in Git (e.g., CHANGELOG.md), written in Markdown, and reviewed via pull requests.
  • Markdown: A lightweight markup language for formatting text (e.g., # Heading, bold, - list). Used in changelogs and release notes.
  • OpenAPI/Swagger: API specification format. Tools like Redoc or Swagger UI auto-generate docs, but changelogs must be written manually.
  • GitHub Releases: A feature for publishing release notes directly in GitHub, linking to commits and issues.
  • Keep a Changelog: A popular changelog format with sections like Added, Fixed, Deprecated.
  • Conventional Commits: A commit message convention (e.g., feat: add dark mode) that can auto-generate changelogs using tools like standard-version or release-please.
  • Static Site Generators (SSGs): Tools like Docusaurus, Sphinx, or MkDocs that build docs sites from Markdown. Often used to host changelogs.
  • CI/CD for Docs: Automating changelog updates in your build pipeline (e.g., GitHub Actions, GitLab CI).
  • Deprecation Policy: A documented plan for phasing out features (e.g., "The /legacy endpoint will be removed in v3.0.0, scheduled for Q4 2024.").


Step-by-Step / Process Flow


1. Gather Changes

  • Action: Collect all updates from:
  • Git commits (filter by feat:, fix:, BREAKING CHANGE:).
  • Jira/GitHub issues (labelled bug, enhancement).
  • Developer standups or Slack channels.
  • Tool Tip: Use git log --grep="feat\|fix" or GitHub’s "Compare" view to see changes between versions.

2. Categorize Changes

  • Action: Group changes into sections (use Keep a Changelog format): ```markdown ## [2.1.0] - 2024-05-20 ### Added
  • Dark mode for the dashboard (#123) ### Fixed
  • Race condition in /payments endpoint (#42) ### Deprecated
  • /legacy endpoint (use /v2/payments instead) ```
  • Tool Tip: Use Conventional Commits to auto-categorize changes (e.g., feat:Added, fix:Fixed).

3. Write for Your Audience

  • For Developers (Changelog):
  • Include technical details (e.g., "The timeout parameter in /webhooks now defaults to 30s (was 10s).").
  • Link to GitHub issues or PRs (e.g., "Fixed memory leak in ImageProcessor (#789).").
  • For End Users (Release Notes):
  • Focus on benefits, not implementation (e.g., "Faster checkout with one-click payments.").
  • Add screenshots or GIFs for UI changes.

4. Add Metadata

  • Action: Include:
  • Version number (follow SemVer).
  • Release date (ISO format: YYYY-MM-DD).
  • Links to full docs, upgrade guides, or breaking change notices.
  • Upgrade instructions (e.g., "Run npm update to migrate.").
  • Example:
    ```markdown ## [3.0.0] - 2024-06-15 Breaking Changes
  • The /v1/users endpoint is removed. Use /v2/users instead.
    Upgrade Guide: Migrating to v3.0.0 ```

5. Review & Automate

  • Action:
  • Peer review: Have a developer or PM validate technical accuracy.
  • Automate: Use tools like:
    • standard-version (auto-generates changelogs from commits).
    • release-please (GitHub Action for automated releases).
    • GitHub Releases (publish directly from GitHub).
  • Tool Tip: Set up a GitHub Action to auto-update the changelog on git tag.

6. Publish & Promote

  • Action:
  • Publish: Add to your docs site (e.g., /changelog), GitHub Releases, or email newsletter.
  • Promote: Share in:
    • Slack/Teams channels.
    • Developer forums (e.g., Reddit, Dev.to).
    • Release notes pages (e.g., GitHub Changelog).
  • Archive: Keep an unreleased section for upcoming changes.


Common Mistakes


Mistake 1: Writing Like a Commit Log

  • Example: "Fix typo in button label."
  • Correction: Write for users, not developers. Example:
  • "Fix #123: Update button text."
  • "Fixed a typo in the checkout button (‘Pay Now’ → ‘Place Order’)."

Mistake 2: Burying Breaking Changes

  • Example: Listing a breaking change under Fixed instead of a dedicated section.
  • Correction: Highlight breaking changes at the top with a warning (e.g., ⚠️ Breaking Changes). Example: ```markdown ## [3.0.0] - 2024-06-15 ⚠️ Breaking Changes
  • The /v1/users endpoint is removed. Migrate to /v2/users.
    ```

Mistake 3: No Context for Changes

  • Example: "Added dark mode."
  • Correction: Explain why and how it affects users. Example:
  • "Added dark mode to reduce eye strain in low-light environments. Toggle in Settings > Appearance."

Mistake 4: Inconsistent Formatting

  • Example: Mixing Added, New, Features for the same category.
  • Correction: Stick to a standard format (e.g., Keep a Changelog). Example: ```markdown ### Added
  • Dark mode (#123) ### Fixed
  • Checkout button typo (#456) ```

Mistake 5: Ignoring Deprecations

  • Example: Removing a feature without warning.
  • Correction: Announce deprecations 1–2 versions early and link to alternatives. Example: ```markdown ### Deprecated
  • /legacy endpoint (will be removed in v3.0.0). Use /v2/payments instead.
    ```


Tech Writing Interview / Portfolio Tips


1. Show You Understand Audience

  • Hiring managers look for: Can you write for both developers and end users?
  • Portfolio Tip: Include two versions of the same release notes:
  • A developer-focused changelog (technical, with GitHub links).
  • A user-friendly release note (benefit-driven, with screenshots).

2. Demonstrate Automation Skills

  • Hiring managers look for: Can you reduce manual work with tools?
  • Portfolio Tip: Show a GitHub Action workflow that auto-generates changelogs (e.g., using standard-version or release-please).

3. Highlight Breaking Change Communication

  • Hiring managers look for: Can you minimize disruption for users?
  • Portfolio Tip: Write a deprecation notice with:
  • A clear timeline (e.g., "Will be removed in v3.0.0, June 2024").
  • A migration guide (e.g., "How to update your code").

4. Compare Tools in Your Portfolio

  • Tricky Distinction: Swagger UI vs. Redoc
  • Swagger UI: Interactive, good for testing APIs.
  • Redoc: Cleaner, better for static docs.
  • Portfolio Tip: Include a side-by-side comparison of the same API in both tools.


Quick Check Questions


1. A developer complains that the changelog is outdated. How would you ensure docs stay in sync with code?

  • Answer: Use docs-as-code (store changelogs in Git) and automate updates with tools like standard-version or release-please in CI/CD.
  • Why? Manual updates are error-prone; automation ensures changelogs reflect the latest commits.

2. Your team wants to deprecate an API endpoint. What should you include in the changelog?

  • Answer:
  • Version and date of deprecation.
  • Reason (e.g., "Replaced with a more secure endpoint").
  • Timeline (e.g., "Will be removed in v4.0.0, Q1 2025").
  • Migration path (e.g., "Use /v2/endpoint instead").
  • Why? Users need time to adapt and clear instructions to avoid breaking their integrations.

3. How would you write release notes for a non-technical audience (e.g., marketers) vs. a technical audience (e.g., developers)?

  • Answer:
  • Non-technical: Focus on benefits (e.g., "Faster load times for mobile users") and visuals (screenshots/GIFs).
  • Technical: Include specific changes (e.g., "Fixed race condition in /webhooks (#123)") and links to PRs/issues.
  • Why? Different audiences need different levels of detail.


Last-Minute Cram Sheet

  1. SemVer: MAJOR.MINOR.PATCH (breaking.features.fixes).
  2. Keep a Changelog format: Added, Changed, Deprecated, Removed, Fixed, Security.
  3. Markdown syntax:
  4. Headers: # H1, ## H2
  5. Links: [text](url)
  6. Code: `code` or code block```
  7. Conventional Commits: feat:, fix:, BREAKING CHANGE: (auto-generates changelogs).
  8. Tools for automation: standard-version, release-please, GitHub Actions.
  9. ⚠️ Breaking changes go at the top with a warning (e.g., ⚠️).
  10. Link to issues/PRs in changelogs (e.g., "Fixed memory leak (#123)").
  11. Deprecations need a timeline (e.g., "Will be removed in v3.0.0").
  12. Release notes ≠ changelogs: Notes are for users; logs are for devs.
  13. ⚠️ Never write "Bug fixes and improvements"—be specific!


ADVERTISEMENT