Summary
Add a misc migration recipe workflow that chains every deterministic MUI 4 to BUI codemod in a single ordered run for Backstage app and plugin repositories.
This recipe is not tied to a single Backstage release. It is the orchestration package for the ongoing MUI 4 to BUI migration work.
Release sequencing (required)
- Implement and merge the codemod issues below (each with changeset -> Version Packages -> registry publish).
- Only then implement and merge this recipe issue.
- Do not publish the recipe to the registry until all dependency packages are published.
Recipe workflow steps must use source: '@backstage/<package>' (registry resolution), not local paths.
Recipe order (proposed)
| # |
Package |
Domain |
| 1 |
@backstage/migrate-mui-bootstrap-to-bui |
Bootstrap / package setup |
| 2 |
@backstage/migrate-mui-icons-to-remix-icons |
Icon source migration |
| 3 |
@backstage/migrate-mui-styles-to-bui-css-modules |
Styling architecture |
| 4 |
@backstage/migrate-mui-typography-to-text |
Typography |
| 5 |
@backstage/migrate-mui-alert-to-bui-alert |
Alert banners |
| 6 |
@backstage/migrate-mui-button-to-bui-button |
Standard buttons |
| 7 |
@backstage/migrate-mui-icon-button-to-button-icon |
Icon buttons |
| 8 |
@backstage/migrate-mui-tooltip-to-bui-tooltip |
Tooltips |
| 9 |
@backstage/migrate-mui-dialog-to-bui-dialog |
Dialogs |
| 10 |
@backstage/migrate-mui-tabs-to-bui-tabs |
Tabs |
| 11 |
@backstage/migrate-mui-menu-popover-to-bui-menu |
Menus / popovers |
| 12 |
@backstage/migrate-mui-list-family-to-bui-list |
Lists |
| 13 |
@backstage/migrate-mui-chip-to-tag |
Tags / chips |
| 14 |
@backstage/migrate-mui-select-family-to-bui-select |
Select |
| 15 |
@backstage/migrate-mui-textfield-to-bui-textfield |
TextField |
| 16 |
@backstage/migrate-mui-accordion-to-bui-accordion |
Accordion |
| 17 |
@backstage/migrate-mui-radio-checkbox-groups-to-bui-groups |
Radio / checkbox groups |
| 18 |
@backstage/migrate-mui-slider-to-bui-slider |
Slider |
| 19 |
@backstage/migrate-mui-layout-to-bui-layout |
Layout primitives |
Deliverables
codemods/misc/mui4-to-bui-migration-recipe/ directory (package.json, codemod.yaml, workflow.yaml, README.md, CHANGELOG.md)
- Package name:
@backstage/mui4-to-bui-migration-recipe
- README table listing each step with registry links and a short explanation of what each codemod covers
- Workflow
version: '1' with sequential codemod: steps
Recipe behavior
- The recipe runs every codemod at default deterministic settings.
- The recipe ships no
aiFixup parameter.
- Codemods should use
TODO(backstage-codemod) markers rather than embedded AI workflow nodes for ambiguous cases.
- The README should document the expected manual follow-up pass after the recipe, including searching for remaining MUI imports and TODO markers.
Out of scope for recipe (document only in README)
Timeline and unsupported Material UI Lab widgets without a stable BUI equivalent
@material-table/core and broader table-system migrations that are not a safe 1:1 replacement
- Perfect theme parity, dark-mode polish, and final design-token tuning after the source-level migration
- Custom wrapper abstractions that hide MUI components behind project-specific APIs
QA target
Document dry-run against sample monorepo: ../backstage (C:/Users/pschu/Projects/backstage/backstage).
Changeset (when implementing)
- Package:
@backstage/mui4-to-bui-migration-recipe
- Bump: minor (initial release)
Blocked by
Implementation notes
- Target directory:
codemods/misc/mui4-to-bui-migration-recipe/
- Branch/worktree:
.worktrees/feat/mui4-to-bui/mui4-to-bui-migration-recipe
- One PR; merge after the codemod issues are merged and published
Summary
Add a
miscmigration recipe workflow that chains every deterministic MUI 4 to BUI codemod in a single ordered run for Backstage app and plugin repositories.This recipe is not tied to a single Backstage release. It is the orchestration package for the ongoing MUI 4 to BUI migration work.
Release sequencing (required)
Recipe workflow steps must use
source: '@backstage/<package>'(registry resolution), not local paths.Recipe order (proposed)
@backstage/migrate-mui-bootstrap-to-bui@backstage/migrate-mui-icons-to-remix-icons@backstage/migrate-mui-styles-to-bui-css-modules@backstage/migrate-mui-typography-to-text@backstage/migrate-mui-alert-to-bui-alert@backstage/migrate-mui-button-to-bui-button@backstage/migrate-mui-icon-button-to-button-icon@backstage/migrate-mui-tooltip-to-bui-tooltip@backstage/migrate-mui-dialog-to-bui-dialog@backstage/migrate-mui-tabs-to-bui-tabs@backstage/migrate-mui-menu-popover-to-bui-menu@backstage/migrate-mui-list-family-to-bui-list@backstage/migrate-mui-chip-to-tag@backstage/migrate-mui-select-family-to-bui-select@backstage/migrate-mui-textfield-to-bui-textfield@backstage/migrate-mui-accordion-to-bui-accordion@backstage/migrate-mui-radio-checkbox-groups-to-bui-groups@backstage/migrate-mui-slider-to-bui-slider@backstage/migrate-mui-layout-to-bui-layoutDeliverables
codemods/misc/mui4-to-bui-migration-recipe/directory (package.json,codemod.yaml,workflow.yaml,README.md,CHANGELOG.md)@backstage/mui4-to-bui-migration-recipeversion: '1'with sequentialcodemod:stepsRecipe behavior
aiFixupparameter.TODO(backstage-codemod)markers rather than embedded AI workflow nodes for ambiguous cases.Out of scope for recipe (document only in README)
Timelineand unsupported Material UI Lab widgets without a stable BUI equivalent@material-table/coreand broader table-system migrations that are not a safe 1:1 replacementQA target
Document dry-run against sample monorepo:
../backstage(C:/Users/pschu/Projects/backstage/backstage).Changeset (when implementing)
@backstage/mui4-to-bui-migration-recipeBlocked by
@backstage/migrate-mui-bootstrap-to-bui@backstage/migrate-mui-icons-to-remix-icons@backstage/migrate-mui-styles-to-bui-css-modules@backstage/migrate-mui-layout-to-bui-layout@backstage/migrate-mui-typography-to-text@backstage/migrate-mui-alert-to-bui-alert@backstage/migrate-mui-button-to-bui-button@backstage/migrate-mui-icon-button-to-button-icon@backstage/migrate-mui-tooltip-to-bui-tooltip@backstage/migrate-mui-dialog-to-bui-dialog@backstage/migrate-mui-tabs-to-bui-tabs@backstage/migrate-mui-menu-popover-to-bui-menu@backstage/migrate-mui-list-family-to-bui-list@backstage/migrate-mui-chip-to-tag@backstage/migrate-mui-select-family-to-bui-select@backstage/migrate-mui-textfield-to-bui-textfield@backstage/migrate-mui-accordion-to-bui-accordion@backstage/migrate-mui-radio-checkbox-groups-to-bui-groups@backstage/migrate-mui-slider-to-bui-sliderImplementation notes
codemods/misc/mui4-to-bui-migration-recipe/.worktrees/feat/mui4-to-bui/mui4-to-bui-migration-recipe