Fast API compatibility reports for Go projects.
relimpact compares two Git refs, snapshots the exported Go API, and reports what changed:
breaking changes first, compatible additions below.
It is not a raw diff tool or a changelog generator. It answers one release question:
Did this change break public Go API?
Breaking Changes
New API
PR comment
Using Go:
go install github.com/hashmap-kz/relimpact@latestUsing Homebrew:
brew tap hashmap-kz/homebrew-tap
brew install relimpactOr download a binary from the Releases page.
Markdown output is the default:
relimpact --old=v1.0.0 --new=HEAD > api-report.mdHTML output:
relimpact --old=v1.0.0 --new=HEAD --format=html > api-report.htmlRun against another repository:
relimpact --dir=/path/to/repo --old=v1.0.0 --new=HEADUse maximum concurrency:
relimpact --old=v1.0.0 --new=HEAD --greedyGenerate a Markdown report and post it as a pull request comment:
name: API compatibility
on:
pull_request:
branches: [ master ]
permissions:
contents: read
pull-requests: write
jobs:
relimpact:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-go@v5
with:
go-version: "1.25"
- name: Install relimpact
run: |
go install github.com/hashmap-kz/relimpact@latest
- name: Generate Markdown API report
run: |
relimpact \
--old="${{ github.event.pull_request.base.sha }}" \
--new="${{ github.event.pull_request.head.sha }}" \
--format=markdown \
> api-report.md
- name: Comment API report on PR
uses: marocchino/sticky-pull-request-comment@v2
with:
header: relimpact-api-report
recreate: true
path: api-report.mdTo also keep the HTML report as a CI artifact:
- name: Upload HTML API report
run: |
relimpact \
--old="${{ github.event.pull_request.base.sha }}" \
--new="${{ github.event.pull_request.head.sha }}" \
--format=html \
> api-report.html
- name: Upload HTML artifact
uses: actions/upload-artifact@v4
with:
name: api-report
path: api-report.htmlMIT License. See LICENSE for details.


