Uh oh!
There was an error while loading. Please reload this page.
feat: upgrade Backstage from 1.51.1 to 1.53.1 - #94
Conversation
- Add MISE_PYTHON_GITHUB_ATTESTATIONS=false to Dockerfile (both build and run stages) to bypass mise Python 3.10.12 attestation failures in mise 2026.5.16+ - Copy .yarn/plugins/ and backstage.json before yarn install in build stage - the Backstage Yarn plugin requires these to resolve backstage:^ version ranges - Remove yarn tsc from Dockerfile - type checking is already covered by backstage-cli repo lint in CI - Copy .yarn/plugins/ and backstage.json before yarn workspaces focus in run stage for the same reason - Run mise install locally to rebuild native modules (better-sqlite3, isolated-vm, cpu-features) for Node 22 ABI
- Fix GitHub Light/Dark themes missing text colors and component overrides
- Import styles.css into GitHub theme package
- Add MuiGrid, MuiTypography, MuiCard overrides to GitHub themes
- Remove negative marginBottom from catalog Grid items
- Add consistent spacing={2} to all catalog Grid containers
- Increase default theme MuiGrid padding from .5rem to 1rem
- Fix missing item prop on nested Grid in apiPage- Remove MuiGrid overrides from both default and GitHub themes The overrides broke MUI's spacing prop by zeroing out item padding - Add global CSS fix for Backstage's v5-MuiGrid class name prefix Backstage's UnifiedThemeProvider adds 'v5-' prefix to MUI classes, but Grid's internal CSS still targets .MuiGrid-item selectors. This mismatch caused all Grid items to have 0 padding, making cards touch each other across all pages. - Import grid-fix.css in index.tsx so it applies globally
- Bumped backstage version to 1.53.1 (latest stable as of 2026-07-29) - Updated yarn backstage plugin checksum and spec to 1.53.1 - Yarn install pulled in updated @backstage/* packages (cli 0.36.4, core-plugin-api 1.12.8, plugin-catalog 2.0.7, plugin-scaffolder 1.38.1, plugin-auth-backend 0.29.2, frontend-plugin-api 0.17.3, ui 0.17.0, backend-defaults 0.17.6, plugin-notifications 0.5.19, plugin-signals 0.0.33) Verified locally: - yarn lint:all passes (54 files across 5 packages) - yarn test passes (9 tests, 1 skipped pre-existing) - yarn build:all succeeds for app and backend - yarn workspace backend start boots cleanly, all 10 plugins initialise, catalog processes all 73 entities - yarn workspace app start compiles with Rspack No breaking changes required for this codebase. Notable v1.52 / v1.53 breaking changes (discovery.endpoints object form, ComboboxProps union, PolicyQueryUser.token removal, immediate stitching removal, etc.) were checked against the current code and app-config and are not in use.
Warning Review the following alerts detected in dependencies. According to your organization's Security Policy, it is recommended to resolve "Warn" alerts. Learn more about Socket for GitHub.
|
johnnyhuy
commented
Aug 18, 2026
Replaced by PR on chore/upgrade-backstage-1.53.1-clean — this branch was 11 commits behind main with redundant padding-fix commits that conflict on rebase. Opening a clean single-commit PR on top of main. |
Summary
backstage.jsonand the yarn backstage plugin spec from 1.51.1 to 1.53.1 (latest stable, released 2026-07-29)@backstage/*packages (e.g.cli0.36.2 → 0.36.4,plugin-catalog2.0.5 → 2.0.7,plugin-scaffolder1.37.0 → 1.38.1,plugin-auth-backend0.29.0 → 0.29.2,frontend-plugin-api0.17.1 → 0.17.3,ui0.15.0 → 0.17.0,backend-defaults0.17.2 → 0.17.6,plugin-notifications0.5.17 → 0.5.19,plugin-signals0.0.31 → 0.0.33)Consequences
None for this codebase. Notable v1.52 / v1.53 breaking changes were checked against current code and
app-config.yaml:discovery.endpointsobject form — not configuredComboboxProps/SelectPropsunion types — not extendedPolicyQueryUser.token/expiresInSecondsremoval — module already usesinfocatalog.stitchingStrategy.mode: 'immediate'removal — not configured/kubernetespage removal — not usedbootstrapEnvProxyAgentsremoval — not usedThe 1.53.1
legacy-apptemplate additionally adds@backstage/plugin-user-settings-backend, which is optional (database-backed user settings — we use browser local storage via the frontendplugin-user-settings).Testing
Local verification on macOS (mise-managed toolchain, Node 22.11.0, Yarn 4.3.1):
yarn lint:all— passes across all 5 packagesyarn test --watchAll=false— 9 tests pass, 1 skipped (pre-existingApp.test.tsx)yarn build:all— frontend (Rspack) and backend bundles build cleanyarn dev(full stack) — backend initialises all 10 plugins (app,auth,catalog,notifications,permission,proxy,scaffolder,search,signals,techdocs), guest auth issues tokens, catalog returns 73 entities across 7 kinds, frontend compiles and serves on:3000CI will pick this up via the existing
build.ymlworkflow.