backstage / backstage/community-plugins
MUI to BUI migration tracker
- Dominant language
- TypeScript
- Stars
- 422
- Forks
- 697
- Avg merge
- 2d 6h
- Merged PRs (30d)
- 286
Description
## π Migration Status Overview
This issue tracks the progress of migrating from Material-UI to `@backstage/ui` components across all workspace plugins in the Community Plugins repository.
```
ββββββββββββββββββββββββββββββββββββββββββββββββββ 16.4% Complete
```
| Status | Workspaces | Percentage |
|--------|------------|------------|
| β
Fully Migrated | 12 | 12.6% |
| π Mixed (Partial) | 14 | 14.7% |
| β Not Started | 69 | 72.6% |
## π¦ Per-Workspace Status
| Workspace | Total Files | MUI Files | BUI Files | Status | Progress |
|-----------|-------------|-----------|-----------|--------|----------|
| `kiali` | 373 | 105 | 0 | β | ββββββββββ 0% |
| `cost-insights` | 217 | 69 | 0 | β | ββββββββββ 0% |
| `apiiro` | 193 | 57 | 0 | β | ββββββββββ 0% |
| `git-release-manager` | 134 | 34 | 0 | β | ββββββββββ 0% |
| `ilert` | 72 | 29 | 0 | β | ββββββββββ 0% |
| `mcp-chat` | 97 | 25 | 0 | β | ββββββββββ 0% |
| `bazaar` | 78 | 22 | 0 | β | ββββββββββ 0% |
| `mend` | 88 | 22 | 0 | β | ββββββββββ 0% |
| `tech-radar` | 67 | 12 | 0 | β | ββββββββββ 0% |
| `mta` | 42 | 11 | 0 | β | ββββββββββ 0% |
| `report-portal` | 57 | 11 | 0 | β | ββββββββββ 0% |
| `cicd-statistics` | 63 | 10 | 0 | β | ββββββββββ 0% |
| `splunk` | 37 | 10 | 0 | β | ββββββββββ 0% |
| `acs` | 26 | 9 | 0 | β | ββββββββββ 0% |
| `servicenow` | 90 | 9 | 0 | β | ββββββββββ 0% |
| `agent-forge` | 29 | 8 | 0 | β | ββββββββββ 0% |
| `codescene` | 28 | 8 | 0 | β | ββββββββββ 0% |
| `feedback` | 68 | 8 | 0 | β | ββββββββββ 0% |
| `lighthouse` | 45 | 8 | 0 | β | ββββββββββ 0% |
| `newrelic` | 42 | 8 | 0 | β | ββββββββββ 0% |
| `microsoft-calendar` | 22 | 7 | 0 | β | ββββββββββ 0% |
| `n8n` | 39 | 7 | 0 | β | ββββββββββ 0% |
| `sonarqube` | 61 | 7 | 0 | β | ββββββββββ 0% |
| `apache-airflow` | 32 | 6 | 0 | β | ββββββββββ 0% |
| `entity-validation` | 24 | 6 | 0 | β | ββββββββββ 0% |
| `gcalendar` | 30 | 6 | 0 | β | ββββββββββ 0% |
| `gitops-profiles` | 24 | 6 | 0 | β | ββββββββββ 0% |
| `jenkins` | 86 | 6 | 0 | β | ββββββββββ 0% |
| `shortcuts` | 23 | 6 | 0 | β | ββββββββββ 0% |
| `wheel-of-names` | 19 | 6 | 0 | β | ββββββββββ 0% |
| `bitrise` | 31 | 5 | 0 | β | ββββββββββ 0% |
| `ocm` | 56 | 5 | 0 | β | ββββββββββ 0% |
| `bitbucket-pull-requests` | 20 | 4 | 0 | β | ββββββββββ 0% |
| `code-coverage` | 43 | 4 | 0 | β | ββββββββββ 0% |
| `entity-feedback` | 57 | 4 | 0 | β | ββββββββββ 0% |
| `linkerd` | 30 | 4 | 0 | β | ββββββββββ 0% |
| `npm` | 41 | 4 | 0 | β | ββββββββββ 0% |
| `puppetdb` | 28 | 4 | 0 | β | ββββββββββ 0% |
| `airbrake` | 39 | 3 | 0 | β | ββββββββββ 0% |
| `akeyless` | 39 | 3 | 0 | β | ββββββββββ 0% |
| `blackduck` | 41 | 3 | 0 | β | ββββββββββ 0% |
| `checkmarx` | 40 | 3 | 0 | β | ββββββββββ 0% |
| `fossa` | 22 | 3 | 0 | β | ββββββββββ 0% |
| `gcp-projects` | 20 | 3 | 0 | β | ββββββββββ 0% |
| `gocd` | 22 | 3 | 0 | β | ββββββββββ 0% |
| `graphiql` | 22 | 3 | 0 | β | ββββββββββ 0% |
| `healert` | 20 | 3 | 0 | β | ββββββββββ 0% |
| `octopus-deploy` | 25 | 3 | 0 | β | ββββββββββ 0% |
| `sentry` | 35 | 3 | 0 | β | ββββββββββ 0% |
| `stack-overflow` | 26 | 3 | 0 | β | ββββββββββ 0% |
| `stackstorm` | 27 | 3 | 0 | β | ββββββββββ 0% |
| `adr` | 38 | 2 | 0 | β | ββββββββββ 0% |
| `code-climate` | 19 | 2 | 0 | β | ββββββββββ 0% |
| `dynatrace` | 34 | 2 | 0 | β | ββββββββββ 0% |
| `firehydrant` | 21 | 2 | 0 | β | ββββββββββ 0% |
| `grafana` | 34 | 2 | 0 | β | ββββββββββ 0% |
| `jaeger` | 25 | 2 | 0 | β | ββββββββββ 0% |
| `opencost` | 27 | 2 | 0 | β | ββββββββββ 0% |
| `vault` | 40 | 2 | 0 | β | ββββββββββ 0% |
| `azure-sites` | 31 | 1 | 0 | β | ββββββββββ 0% |
| `azure-storage-explorer` | 26 | 1 | 0 | β | ββββββββββ 0% |
| `badges` | 30 | 1 | 0 | β | ββββββββββ 0% |
| `confluence` | 30 | 1 | 0 | β | ββββββββββ 0% |
| `graphql-voyager` | 16 | 1 | 0 | β | ββββββββββ 0% |
| `growthbook-flags` | 24 | 1 | 0 | β | ββββββββββ 0% |
| `kafka` | 37 | 1 | 0 | β | ββββββββββ 0% |
| `nomad` | 21 | 1 | 0 | β | ββββββββββ 0% |
| `rollbar` | 38 | 1 | 0 | β | ββββββββββ 0% |
| `todo` | 34 | 1 | 0 | β | ββββββββββ 0% |
| `rbac` | 264 | 43 | 4 | π | ββββββββββ 9% |
| `argocd` | 186 | 34 | 3 | π | ββββββββββ 8% |
| `tekton` | 166 | 33 | 4 | π | ββββββββββ 11% |
| `multi-source-security-viewer` | 87 | 29 | 2 | π | ββββββββββ 6% |
| `tech-insights` | 182 | 23 | 1 | π | ββββββββββ 4% |
| `playlist` | 86 | 18 | 1 | π | ββββββββββ 5% |
| `manage` | 235 | 17 | 23 | π | ββββββββββ 57% |
| `copilot` | 135 | 16 | 3 | π | ββββββββββ 16% |
| `xcmetrics` | 66 | 15 | 1 | π | ββββββββββ 6% |
| `azure-devops` | 165 | 11 | 6 | π | ββββββββββ 35% |
| `fairwinds-insights` | 26 | 8 | 1 | π | ββββββββββ 11% |
| `announcements` | 164 | 6 | 26 | π | ββββββββββ 81% |
| `bookmarks` | 50 | 6 | 2 | π | ββββββββββ 25% |
| `github` | 167 | 4 | 23 | π | ββββββββββ 85% |
| `acr` | 39 | 0 | 2 | β
| ββββββββββ 100% |
| `analytics` | 48 | 0 | 1 | β
| ββββββββββ 100% |
| `apollo-explorer` | 12 | 0 | 1 | β
| ββββββββββ 100% |
| `argo-workflows` | 83 | 0 | 15 | β
| ββββββββββ 100% |
| `cloudbuild` | 30 | 0 | 4 | β
| ββββββββββ 100% |
| `explore` | 87 | 0 | 9 | β
| ββββββββββ 100% |
| `flux` | 70 | 0 | 16 | β
| ββββββββββ 100% |
| `jfrog-artifactory` | 36 | 0 | 4 | β
| ββββββββββ 100% |
| `linguist` | 47 | 0 | 2 | β
| ββββββββββ 100% |
| `nexus-repository-manager` | 75 | 0 | 2 | β
| ββββββββββ 100% |
| `quay` | 81 | 0 | 8 | β
| ββββββββββ 100% |
| `topology` | 250 | 0 | 13 | β
| ββββββββββ 100% |
## π― Priority Workspaces
These workspaces should be prioritized for migration (sorted by number of MUI files):
1. **kiali** - 105 files with MUI imports
2. **cost-insights** - 69 files with MUI imports
3. **apiiro** - 57 files with MUI imports
4. **git-release-manager** - 34 files with MUI imports
5. **ilert** - 29 files with MUI imports
6. **mcp-chat** - 25 files with MUI imports
7. **bazaar** - 22 files with MUI imports
8. **mend** - 22 files with MUI imports
9. **tech-radar** - 12 files with MUI imports
10. **mta** - 11 files with MUI imports
11. **report-portal** - 11 files with MUI imports
12. **cicd-statistics** - 10 files with MUI imports
13. **splunk** - 10 files with MUI imports
14. **acs** - 9 files with MUI imports
15. **servicenow** - 9 files with MUI imports
16. **agent-forge** - 8 files with MUI imports
17. **codescene** - 8 files with MUI imports
18. **feedback** - 8 files with MUI imports
19. **lighthouse** - 8 files with MUI imports
20. **newrelic** - 8 files with MUI imports
## π§ Top 20 MUI Components (Need Migration)
| Rank | Component | Usage Count | Workspaces |
|------|-----------|-------------|------------|
| 1 | `Typography (MUI)` | 874 | 75 |
| 2 | `Box (MUI)` | 692 | 53 |
| 3 | `Grid (MUI)` | 552 | 58 |
| 4 | `TableCell (MUI)` | 196 | 17 |
| 5 | `Tooltip (MUI)` | 172 | 44 |
| 6 | `Button (MUI)` | 167 | 48 |
| 7 | `IconButton (MUI)` | 152 | 42 |
| 8 | `Chip (MUI)` | 118 | 37 |
| 9 | `Alert (MUI)` | 109 | 35 |
| 10 | `MenuItem (MUI)` | 100 | 29 |
| 11 | `TableRow (MUI)` | 69 | 16 |
| 12 | `TextField (MUI)` | 67 | 27 |
| 13 | `Card (MUI)` | 67 | 24 |
| 14 | `ListItemText (MUI)` | 65 | 26 |
| 15 | `CardContent (MUI)` | 64 | 24 |
| 16 | `Divider (MUI)` | 61 | 25 |
| 17 | `ListItem (MUI)` | 59 | 21 |
| 18 | `FormControl (MUI)` | 49 | 24 |
| 19 | `Select (MUI)` | 45 | 24 |
| 20 | `CircularProgress (MUI)` | 44 | 21 |
## β Top 20 Backstage UI Components (Migrated)
| Rank | Component | Usage Count | Workspaces |
|------|-----------|-------------|------------|
| 1 | `Text (BUI)` | 207 | 13 |
| 2 | `Flex (BUI)` | 152 | 14 |
| 3 | `Box (BUI)` | 58 | 12 |
| 4 | `Card (BUI)` | 38 | 8 |
| 5 | `CardBody (BUI)` | 38 | 8 |
| 6 | `Cell (BUI)` | 38 | 8 |
| 7 | `CellText (BUI)` | 38 | 7 |
| 8 | `Skeleton (BUI)` | 33 | 7 |
| 9 | `CardHeader (BUI)` | 32 | 8 |
| 10 | `Tooltip (BUI)` | 28 | 8 |
| 11 | `TooltipTrigger (BUI)` | 28 | 8 |
| 12 | `Button (BUI)` | 25 | 7 |
| 13 | `ButtonIcon (BUI)` | 24 | 6 |
| 14 | `Tag (BUI)` | 21 | 10 |
| 15 | `TagGroup (BUI)` | 19 | 10 |
| 16 | `Link (BUI)` | 18 | 4 |
| 17 | `Alert (BUI)` | 17 | 9 |
| 18 | `Table (BUI)` | 14 | 8 |
| 19 | `Container (BUI)` | 10 | 5 |
| 20 | `Select (BUI)` | 7 | 4 |
## π‘ Recommendations
### π΄ High Priority
- 70 workspaces still use MUI v4 (@material-ui). These should be prioritized for migration.
- Affected workspaces: acs, adr, airbrake, akeyless, announcements, apache-airflow, azure-devops, azure-sites, azure-storage-explorer, badges, and 60 more
### π‘ Medium Priority
- 14 workspaces have mixed imports. Focus on completing these migrations first for quick wins.
## π Library Usage Breakdown
| Library | Import Count | Files |
|---------|--------------|-------|
| `@material-ui/core` | 1465 | 546 |
| `@mui/material` | 956 | 306 |
| `@material-ui/icons` | 310 | 146 |
| `@mui/icons-material` | 250 | 118 |
| `@backstage/ui` | 179 | 177 |
| `@material-ui/lab` | 94 | 84 |
| `@mui/styles` | 13 | 13 |
| `@material-ui/pickers` | 8 | 4 |
## π Detailed Statistics
| Metric | Count |
|--------|-------|
| Total Workspaces Analyzed | 109 |
| Total Files Analyzed | 6577 |
| Files with MUI Imports | 900 |
| Files with Backstage UI Imports | 177 |
| Unique Components Found | 417 |
---
_This report is automatically generated by the [Community Plugins MUI to BUI Migration Analytics Script](../../scripts/mui-to-bui.js)_
**Last Updated:** 2026-09-14
Contributor guide
Research direction
Start with scripts/mui-to-bui.js, the analytics script named in the report, and review its generated workspace and component statistics. The issue does not define a bounded workspace or implementation entry point; completion would require selecting migration scope and reducing the reported MUI usage.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- frontend
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 20/100