Skip to content

Highlight breaking changes in the changelog #1562

Description

@jenstroeger

Description

It would be helpful to read a changelog that bumps a major version and to know which one of the changes was a breaking change.

Personally I’m not a fan of icons & emojis so perhaps a section “Breaking changes” would be useful?

I didn’t find an existing discussion on this, surprisingly, but maybe I didn’t spend enough time looking 😉

Possible Solution

No response

Additional context

No response

Related issues

No response

Activity

  1. woile commented on Jul 25, 2025

    @woile
    Member

    Can you show a commit example? I was under the impression that using BREAKING CHANGE in the body of the commit does that, right?

  2. jenstroeger commented on Aug 11, 2025

    @jenstroeger
    ContributorAuthor

    This commit (including the cz bump):

    commit fb71a500ad3ef2678f3c8e6367839b926314fd97 (tag: v10.0.0)
    Author: devops <devops-somecompany@users.noreply.github.com>
    Date:   Fri Jul 25 01:27:02 2025 +0000
    
        bump: release 9.10.1 → 10.0.0
        
        Automatically generated by Commitizen.
    
    commit 13d230527f95605a462de62ef008c0b9c949b9dc
    Author: Jens Troeger <jens@some.company>
    Date:   Fri Jul 25 01:44:56 2025 +0200
    
        fix!: enable grpcio types across the entire package (#906)
    

    created the following changelog

    ## v10.0.0 (2025-07-25)
    
    ### Fix
    
    - enable grpcio types across the entire package (#906)
    

    and also the following Github release

    Image

    Suppose there are multiple commits in that release and only one of them is a breaking change. It’s currently not possible to tell in the changelog and in the release which one of the multiple commits that was.

    I was under the impression that using BREAKING CHANGE in the body of the commit does that, right?

    I thought/assumed/hoped that the ! in the commit title is sufficient to somehow mark up that particular change as a breaking change. It seems redundant to me to use both ! in the title and BREAKING CHANGE in the body… 🤔

  3. woile commented on Aug 11, 2025

    @woile
    Member

    There's not much explanation about this, indeed.

    The way I see it (I haven't used ! much personally):

    The ! it's only useful to hint a BREAKING CHANGE, but you only want to document what you did: "I fixed foo, this introduced a breaking change". Example commit: fix!: enable grpcio types across the entire package (#906). Of course, commitizen understands this, and identifies a BREAK signal, bumping appropriately.

    On the other hand, the "BREAKING CHANGE" in the summary of the commit gives more information.

    Example commit:

    fix: enable grpcio types across the entire package (#906)
    
    BREAKING CHANGE: by enabling `grpcio`, `foobar` is no longer available, in order to migrate, you have to do X
    

    This would render the following CHANGELOG:

    ## Fix 
    - enable grpcio types across the entire package (#906)
    
    ## BREAKING CHANGE 
    - by enabling `grpcio`, `foobar` is no longer available, in order to migrate, you have to do X

    Which explains to the end user how to properly take action on an introduced braking change.

    However, you could combine both. The ! would work as a hint for developers, for example, on github, you only see the commit title, and then you would know right away. While the BREAKING CHANGE would add documentation for migration purposes on the CHANGELOG.

    I'm not sure if there's a proper solution, do you have any suggestions? commitizen is flexible up to a point. But you can always update the changelog after it was generated. Future commitizen executions won't touch your changes.

  4. jenstroeger commented on Aug 11, 2025

    @jenstroeger
    ContributorAuthor

    While I agree with the theory of using BREAKING CHANGE in addition to !, the reality is that many devs are lazy and don’t (seem to) care much about documenting their changes. Requiring such verbose commit messages will in my experience yield no results because devs just won’t bother.

    My preference would be for cz to handle commits with a ! in the title and mark up that line item. For example, we could imagine

    ## Fix
    - !enable grpcio types across the entire package (#906)

    as a dense solution, or

    ## Fix
    - 🧨 enable grpcio types across the entire package (#906)

    or some such. I’m not sure, but I’d like to see support for simple, one-line commit messages because that’s the most I can expect from some devs…

  5. bearomorphism commented on Dec 3, 2025

    @bearomorphism
    Collaborator

    I think we can add options and let the user choose their preference?

  6. Lee-W commented on Jan 5, 2026

    @Lee-W
    Member

    I feel we should treat ! as BREAKING CHANGE: 🤔

    ## Breaking change
    * enable grpcio types across the entire package (#906)
    

    I thought it should work this way 🤔

  7. woile commented on Jan 5, 2026

    @woile
    Member

    Not necessarly @Lee-W because according to semver, you can combine a fix with a BREAKING CHANGE. Which translates to "This fixes something but introduces a breaking change by doing so".

    I think, by default, we could do:

    ## Fix
    - [breaking] enable grpcio types across the entire package (#906)

    But make the ! configurable, so users could replace [breaking] for an emoji or the ! symbol.

  8. jenstroeger commented on Jan 5, 2026

    @jenstroeger
    ContributorAuthor

    Just to be clear: according to the conventional commit spec (docs) a commit with a breaking change can be marked in two different ways:

    1. commit message with a footer BREAKING CHANGE:, or
    2. append a ! after the type/scope of the message.

    This issue here is about marking/emphasizing in a changelog which particular change or commit in a set of changes is a breaking change. This issue isn’t about the commit format itself.

  9. Lee-W commented on Jan 6, 2026

    @Lee-W
    Member

    Not necessarly @Lee-W because according to semver, you can combine a fix with a BREAKING CHANGE. Which translates to "This fixes something but introduces a breaking change by doing so".

    I think, by default, we could do:

    Fix

    But make the ! configurable, so users could replace [breaking] for an emoji or the ! symbol.

    Since breaking changes take higher priority, I believe it makes sense to mention them first. By This fixes something but introduces a breaking change by doing so, it still qualifies as a breaking change.

    If our changelog is structured like this:

    ## Breaking Changes
    ## Features
    ## Fixes

    then I think this change should be included in the first section.

    However, if our changelog is organized as follows:

    ## Features
    ## Fixes

    then your suggestion is certainly better. I would also prefer that breaking changes appear first instead of getting lost in the middle of several commits.


    agree with what @jenstroeger suggested, sounds more like the first scenario. or maybe we can provide both ways?

  10. jenstroeger commented on Jan 6, 2026

    @jenstroeger
    ContributorAuthor

    If our changelog is structured like this:

    ## Breaking Changes
    ## Features
    ## Fixes

    then I think this change should be included in the first section.

    I very much like this suggestion 🙏🏻

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions