app-frontend-system-migration
SKILL.md
App Frontend System Migration Skill
This skill helps migrate a Backstage app package (packages/app) from the old frontend system (@backstage/app-defaults) to the new extension-based frontend system (@backstage/frontend-defaults).
The migration follows a two-phase approach: first get the app running in hybrid mode with compatibility helpers, then gradually remove legacy code until the app is fully on the new system.
Key Concepts
- Old system:
createAppfrom@backstage/app-defaults, plugins installed via<Route>elements inFlatRoutes, manual app shell withAppRouter+Root - New system:
createAppfrom@backstage/frontend-defaults, plugins installed asfeatures, extensions wired into an extension tree, no manual app shell - Feature discovery: The new system can automatically discover and install plugins from your app's dependencies — no manual imports needed. This is the default for new apps and should be enabled early in migration.
- Hybrid mode: The new
createAppwithconvertLegacyAppRootandconvertLegacyAppOptionsfrom@backstage/core-compat-apito bridge old code
Feature Discovery
Feature discovery is one of the biggest quality-of-life improvements in the new frontend system. Once enabled, any plugin added as a package.json dependency that exports a new-system plugin is automatically detected and installed — no code changes in App.tsx needed.