This repository tracks the output of npx @backstage/create-app across Backstage releases. For each release, a dedicated branch captures the exact state of the generated app template, and diff files are computed between every pair of versions. This way, the diffs are always clean and always in sync with the changes to the init template.
https://backstage.github.io/upgrade-helper/
For each Backstage release version (e.g. 1.48.0), the following branches are created:
| Branch | Contents |
|---|---|
release/{createAppVersion} |
Bare output of npx @backstage/create-app@{createAppVersion}, where createAppVersion is the version of @backstage/create-app shipped with the release |
release/yarn-plugin/{releaseVersion} |
Same as above, but with Backstage packages bumped via versions:bump --release {releaseVersion} using the Backstage yarn plugin |
release-diff/legacy/v{createAppVersion} |
One .diff file per older createApp version, showing the diff between the two release/* branches |
release-diff/v{releaseVersion} |
One .diff file per older release version, showing the diff between the two release/yarn-plugin/* branches |
releases.json and releases-yarn-plugin.json on master are the source of truth for which releases have been processed. Both map releaseVersion → { createApp: createAppVersion }.
The workflow .github/workflows/release.yml runs two jobs:
-
detect— Fetches the last releases frombackstage/backstageon GitHub, resolves the@backstage/create-appversion for each from the Backstage versions manifest, filters out already-tracked releases, and outputs a JSON array sorted oldest-first by publication date. -
process— Loops over each detected release sequentially and:- Creates
release/{createAppVersion}using@backstage/create-app - Creates
release/yarn-plugin/{releaseVersion}using@backstage/create-app - Creates or updates
release-diff/legacy/v{createAppVersion}with diffs from all olderrelease/*branches - Backfills any existing future
release-diff/legacy/*branches that are missing a diff from this release - Creates or updates
release-diff/v{releaseVersion}with diffs from all olderrelease/yarn-plugin/*branches - Backfills any existing future
release-diff/v*branches that are missing a diff from this release - Updates
releases.jsonandreleases-yarn-plugin.jsononmaster
- Creates
All steps are idempotent — already-existing branches and diff files are never overwritten.
Go to Actions → Create new release diffs → Run workflow.
- No input: auto-detects all untracked releases and processes them in order.
- "Backstage release version to process" (e.g.
1.48.0orv1.48.0): processes only that specific release. Useful for reprocessing a release or filling in missing diffs. - "Re-process already-tracked releases" checkbox (no release version specified): re-processes latest releases, including already-tracked ones. Useful for bulk backfilling missing diffs across all recent releases.
This project follows the same concepts introduced by React Native diff PURGE. Read more here about the idea and history behind the project.