Skip to content

Migrate cards from Material-UI to @backstage/ui Card system#1444

Closed
gusevda wants to merge 7 commits intomainfrom
migrate-infocard-to-backstage-ui
Closed

Migrate cards from Material-UI to @backstage/ui Card system#1444
gusevda wants to merge 7 commits intomainfrom
migrate-infocard-to-backstage-ui

Conversation

@gusevda
Copy link
Contributor

@gusevda gusevda commented Mar 27, 2026

What does this PR do?

Migrates all custom card components from Material-UI's InfoCard (@backstage/core-components) and raw Card/CardContent (@material-ui/core) to the new @backstage/ui Card system, aligning with upstream Backstage's direction.

  • Creates a new InfoCard component in ui-react based on upstream's EntityInfoCard, using @backstage/ui primitives (Card, CardHeader, CardBody, CardFooter, Text, Flex)
  • Migrates 18 card components across gs and flux-react plugins
  • Replaces Material-UI Grid, Switch, FormGroup with @backstage/ui equivalents in card internals
  • Simplifies AboutField by removing gridSizes prop

What is the effect of this change to users?

Cards will render with consistent styling matching upstream Backstage's modern card design, resolving the visual discrepancy between custom cards (e.g., "Deploy application") and upstream cards (e.g., "About").

  • A changeset describing the change and affected packages was added. (more info)

gusevda added 7 commits March 26, 2026 16:53
Migrate route bindings to declarative config for NFS compatibility,
removing the imperative bindRoutes callback from createApp.
Route IDs are {pluginId}.{routeName}, not {pluginId}.externalRoutes.{routeName}.
Reorganize imports and features array by group (app, GS, upstream, legacy),
move flux overrides from src/flux/ to src/modules/flux/ for consistency,
and align flux module exports with other module patterns.
Move the ai-chat-verbose-debugging feature flag registration from the
app-level AppOverrides module to the ai-chat plugin where it belongs.
Create a new InfoCard component in ui-react using @backstage/ui primitives
(Card, CardHeader, CardBody, CardFooter, Text, Flex) to align with upstream
Backstage's migration away from Material-UI based InfoCard. Migrate all 14
usages across gs and flux-react plugins to the new component.
Replace direct Material-UI Card+CardContent usage with the new InfoCard
component in ClusterToolsCard, DeploymentToolsCard, ResourcesCard, and
GitOpsCard for consistent card styling across the application.
Replace Material-UI Grid, Switch, FormGroup with @backstage/ui Flex,
Grid.Root, and Switch components. Simplify AboutField by removing
gridSizes prop and using plain div instead of Grid item.
@gusevda gusevda closed this Mar 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant