Roadie
Backstage Weekly · Issue 126

New Frontend System Becomes Default, AI Context & IDP Architecture

Backstage v1.49.0 makes the New Frontend System the default, marking the end of a multi-year migration. Plus, Roadie explores IDP architecture tradeoffs and how the catalog becomes critical infrastructure for AI agents.

Profile picture David TuiteDavid Tuite·

News

The New Frontend System hit its 1.0 Release Candidate this week with v1.49.0, making it the default for all new Backstage apps. After years of parallel development, the framework switchover is complete. The --next flag is now --legacy, and the ecosystem has a stable foundation for the next chapter of plugin development. Meanwhile, as BackstageCon Europe approaches on March 23, two new pieces from Roadie examine Backstage's architectural position in the IDP market and how the catalog becomes context infrastructure for AI agents.

Contibfest

Backstage v1.49.0 ships with New Frontend System 1.0 Release Candidate

Backstage v1.49.0 dropped on March 18. It brings the New Frontend System to 1.0 Release Candidate status, making it the default for all newly created Backstage apps. The old --next flag for create-app has been replaced with a --legacy flag. This is the effective end of a multi-year migration.

Key changes include significant Backstage UI migrations (entity cards moved from MUI to BUI, new SearchAutocomplete, List, and ListRow components), removal of long-deprecated integrations (Bitbucket, legacy Azure DevOps fields), and new requirements for the ScaffolderApi interface. AI and MCP capabilities expanded with new built-in actions (who-am-i, query-catalog-entities, list-scaffolder-actions, get-scaffolder-task-logs) and support for splitting MCP actions into multiple servers. The CLI was refactored into an extensible module system, the catalog gained predicate-based filtering with operators like $all, $any, and $contains, and a new ToastApi replaces AlertApi for rich notifications.

Additional improvements include permission batching for better performance, GitLab integration enhancements (configurable throttling, group access scaffolder action), and migration of OpenAPI schemas to version 3.1. Two catalog processors (AnnotateScmSlugEntityProcessor and CodeOwnersProcessor) were deprecated and moved to the Community Plugins repo.

Full release notes: https://github.com/backstage/backstage/releases/tag/v1.49.0

Roadie publishes architectural guide to Backstage and the IDP market

Backstage architecture diagram

Roadie published a technical deep dive on March 17 examining the choice most teams are actually making when evaluating developer portals. What architecture do you want to commit to for the next 5-10 years of developer experience?

The piece presents three possible paths. Self-hosted Backstage gives you framework ownership and architectural control, but you’re responsible for monthly releases that don't follow semver, the TypeScript tax of plugin compatibility, and the ongoing engineering effort to prevent upgrades from turning into periodic migrations. Proprietary SaaS portals offer speed through vendor-defined schemas and workflows but tie your service metadata to a product-defined model. SaaS portals built on the Backstage standard absorb framework lifecycle management while retaining plugin-based extensibility and catalog-driven context.

The guide includes a detailed look at the New Backend System migration as a case study in operational complexity. The shift from imperative plugin setup to declarative backend.add() calls, deprecated packages, and changed service communication patterns requires planning, testing, and staged rollouts for self-hosted teams. The article argues this is where the responsibility boundary matters. Self-hosting makes your team responsible for maintaining the framework itself, while SaaS shifts that boundary so teams can focus on extending and using the portal.

Read the full guide: https://roadie.io/blog/backstage-and-its-place-among-developer-portals/

Your IDP is an AI goldmine: Roadie explains context engineering

Your IDP Is an AI Goldmine

Roadie published a technical guide this week on how your IDP can become the context infrastructure that makes org-specific AI agents actually work. The gap between what LLMs can do and what they know about your systems is what kills AI adoption beyond code generation.

Generic tasks like writing unit tests work fine out of the box. But org-specific questions (who owns auth-gateway, did payments-service deploy in the last four hours, what's the runbook for queue consumer failures) require private structural knowledge no pre-trained model has. Most teams dump documentation into vector stores and call it RAG. This produces confident wrong answers when docs go stale or the agent retrieves a page describing your system as it existed eighteen months ago.

Your IDP already has the context you need. The Catalog API surfaces ownership graphs, dependency maps, deployment history, and incident data as structured, continuously-updated JSON. The article presents three wiring patterns for consuming it (RAG over catalog entities, MCP server wrapping the API, direct function-tool definitions), includes code examples for parsing entity JSON into context strings, and provides a Python script for auditing catalog completeness. The operational hygiene section emphasizes that AI agents are only as good as the catalog data they rely on. Missing `spec.owner` removes escalation paths during incidents, and empty descriptions degrade embedding quality, turning the catalog into unreliable context.

Read the full article: https://roadie.io/blog/idp-ai-goldmine-context-engineering/

Community Discussions

v1.49.0 ships with New Frontend System 1.0 RC

Backstage v1.49.0 was announced on March 18 in #announcements. The New Frontend System (NFS) has reached its 1.0 Release Candidate, meaning newly scaffolded Backstage apps now use NFS by default. The old --next flag for create-app has been inverted to --legacy, and yarn new templates now auto-detect which frontend system your app uses and present the appropriate plugin templates.

The release also brings significant Backstage UI (BUI) breaking changes: new SearchAutocomplete and List/ListRow components built on React Aria, a virtualized prop on Table, centralized BUIProvider routing requirements, and removal of deprecated CSS tokens and types. Entity cards (EntityAboutCard, EntityLinksCard, EntityLabelsCard, and others) have been migrated from MUI to BUI. Additionally, deprecated Bitbucket and legacy integrations have been removed, and ScaffolderApi methods (retry, listTasks, autocomplete, etc.) are now fully required on implementations.

The demo site upgraded to 1.49.0-next.2 on March 13 and the full stable release followed on March 18. See the complete release notes on GitHub .

v1.49.0 early upgrade issues: TSC OOMs and double headers

A thread that started within hours of the release in #general is already tracking real-world upgrade pain. Contributor drodil (Buildforce) reported that upgrading to 1.49.0 causes TypeScript compilation to OOM even with --max-old-space-size=16384, backstage-cli repo lint taking 466 seconds on a handful of files, and double headers appearing on catalog pages (one from BUI, one from the old core components). Maintainer Rugvip confirmed the double-header issue is a known transitional artifact while the BUI/NFS cleanup completes, and began investigating the TSC and lint regressions. If you're planning to upgrade, watch this thread before starting.

Framework SIG missed due to Daylight Saving Time confusion

A 33-message thread in #general on March 17 highlighted a community coordination issue around SIG scheduling. The biweekly Backstage Framework SIG was missed after the meeting time was configured in a US Eastern timezone, causing European participants (in Stockholm/Amsterdam, which had just entered DST) to see the event one hour earlier than expected.

Maintainer freben apologized for the miss, noting he was heads‑down on the v1.49.0 release. The thread turned into a discussion about how the community tracks SIG schedules, surfacing that Discord event exports use UTC without explicit timezone context, making them unreliable across DST transitions. The consensus was that SIG meetings in the shared Google Calendar should be set to CET/Europe/Stockholm rather than a US‑based timezone to avoid future drift.

Is NFS the default yet? Community asks about the switchover timeline

Jon Koops opened a short thread in #general on March 17, asking whether it made sense to make the New Frontend System the default for create-app, noting that the --next flag still felt opt-in while NFS had matured significantly. The question turned out to be perfectly timed. v1.49.0 (released the next morning) answered it definitively by flipping the default.

NFS migration challenges: Scaffolder TaskPageComponent missing and routing gaps

Multiple discussions in #frontend-system this week showed that teams are actively attempting the NFS migration and running into real gaps. One team (arlamaeen, March 5) discovered that TemplateWizardPageProps in the NFS scaffolder alpha doesn't expose a TaskPageComponent option (available in the legacy system), making it impossible to replace the task page UI without forking. Meanwhile, another user (Dinesh, March 12–13) reported a blank page on the base route after migrating the homepage . A separate thread showed teams struggling with custom routing for entity pages and the K8s plugin. Community member Sarabadu shared a practical migration logbook on dev.to (posted March 16) documenting their catalog plugin migration journey, which received a warm community reception. The prevailing sentiment is that the docs have gaps, routing for custom pages is the biggest blocker, and the community is learning in the open while the 1.0 RC stabilizes.

RBAC + OIDC role mapping: Dynamic role assignment from Keycloak

A detailed exchange in #plugins starting March 16 tackled a common enterprise pattern: how to dynamically assign RBAC roles to users based on roles returned from an OIDC provider (Keycloak), without hardcoding group memberships in policy.yaml. User Mattia Dell'Oca hit the Policy already set error when trying to stack a second policy implementation. Contributor pknight6443 pointed to RBAC providers as the correct approach. This involves creating a custom backend module that calls Keycloak at login time and invokes applyRoles and applyPermissions dynamically. This is a pattern many enterprise teams are converging on.

BackstageCon Plugins Panel soliciting community input

A #plugins post invited the Backstage community to submit questions for the Plugins Panel at BackstageCon Europe 2026 (March 23, Amsterdam, co-located with KubeCon). The panel will cover plugin stewardship, contribution barriers, balancing innovation with maintenance quality, and what should happen when a plugin is no longer maintained. If you're attending KubeCon or BackstageCon and have opinions on plugin health, ownership, or the contributor experience, there is still time to submit questions. A reminder in #adoption also asked who from the community will be present in Amsterdam.

Scale question: 200,000+ entities with 6+ relations each

A 4-message thread in #catalog from March 13 asked whether anyone had practical experience ingesting very large catalogs (200k+ entities each with six or more relations). User Hulmir reported hitting issues at scale and asked for guidance on tuning the catalog for this volume. freben jumped in to confirm the specific errors being seen, signaling the start of a troubleshooting discussion. This thread is worth monitoring if you're running or planning to run Backstage at this scale.

MCP/AI discoverability of skills in the catalog

A brief message in #catalog on March 16 from cal5barton asked how teams are making MCPs and AI skills discoverable within Backstage. The question drew reactions from multiple community members, suggesting broad interest, but no clear direction yet. With MCP becoming a widely-adopted standard for AI agent tooling, integrating MCP discovery into the Software Catalog (as a new kind, as annotations, or via a dedicated plugin) is an emerging topic that the community is starting to explore.

Changelog

v1.49.0

Released March 18, 2026

Highlights:

  • New Frontend System 1.0 Release Candidate (NFS now default for new apps)
  • Backstage UI breaking changes (new components, removed props, CSS token changes)
  • Entity cards migrated from MUI to BUI
  • Deprecated Bitbucket and legacy integrations removed
  • AI and MCP improvements (new built-in actions, MCP server splitting)
  • CLI Module System refactored into extensible architecture
  • Predicate-based catalog entity filtering
  • New ToastApi replaces AlertApi
  • Permission batching for improved performance

Full changelog: https://github.com/backstage/backstage/blob/master/docs/releases/v1.49.0-changelog.md