<?xml version="1.0" encoding="utf-8"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Backstage Weekly</title><link>https://roadie.io/backstage-weekly/</link><description>Weekly roundup of Backstage news, articles, and community updates.</description><lastBuildDate>Thu, 08 Oct 2026 06:59:29 GMT</lastBuildDate><docs>https://validator.w3.org/feed/docs/rss2.html</docs><generator>https://github.com/jpmonette/feed</generator><language>en</language><copyright>All rights reserved 2026, Roadie</copyright><item><title><![CDATA[MCP Actions Security, Node.js CVE and Context Window Costs]]></title><link>https://roadie.io/backstage-weekly/139-mcp-permissions-cve-context-window/</link><guid isPermaLink="false">https://roadie.io/backstage-weekly/139-mcp-permissions-cve-context-window/</guid><pubDate>Thu, 25 Jun 2026 13:00:00 GMT</pubDate><description><![CDATA[The catalog MCP unregister-entity action gets a permission enforcement fix, Node.js 24.17 breaks Cloudflare Access Provider authentication, and the Roadie blog covers why MCP server tool definitions can eat your context window.]]></description><content:encoded><![CDATA[<p>👋 Welcome to Backstage Weekly 139.</p><p>TL;DR</p><p>A security patch is in review for the catalog MCP unregister-entity action, which currently bypasses resource-level permission checks. Node.js 24.17 and 22.23 break Cloudflare Access Provider authentication - pin to 24.16 or 22.22 until a Backstage patch ships. We published a post on why MCP tool definitions can cost up to 55k tokens and how progressive disclosure cuts that.</p><p><img src="https://images.ctfassets.net/hcqpbvoqhwhm/3ux74Zff5vvF5P419M3NWb/a6ff293753aead05acba03495553e947/roa-13.png?w=500&#x26;h=500&#x26;fm=webp" alt="MCP Actions Security, Node.js CVE and Context Window Costs"></p><h2>MCP permissions and Node.js CVE</h2><p>No new stable release this week. Two security items are worth addressing before your next upgrade.</p><p><a href="https://github.com/backstage/backstage/pull/34631">PR #34631</a> by yashoswalyo fixes <a href="https://github.com/backstage/backstage/issues/34617">issue #34617</a>: the catalog's <code>catalog:unregister-entity</code> MCP action currently skips resource-level authorization. Any user with a valid authentication token can call the MCP endpoint directly and unregister catalog locations they don't own, bypassing the <code>catalogEntityDeletePermission</code> check the frontend enforces. The PR adds bulk authorization checks against colocated entities before deletion. It's open for review and targeting a patch release. If you're running catalog MCP actions in production, this is worth watching.</p><p>Node.js 24.17 and 22.23 changed keep-alive socket behavior in a way that breaks <code>@backstage/plugin-auth-backend-module-cloudflare-access-provider</code>. Users see "premature close" errors on login. Pin to Node.js 24.16 or 22.22 until a Backstage-side patch ships (<a href="https://github.com/backstage/backstage/issues/34651">issue #34651</a>).</p><h2>From the Roadie blog</h2><p>We published <a href="https://roadie.io/blog/mcp-server-context-window/">Why Your MCP Server Might Be Eating Your Context Window</a> in May. The post picks up an Apideck finding: MCP tool definitions can consume up to 55,000 tokens before user input reaches the model. At that scale, tool definitions crowd out the entity data, ownership annotations, and operational context that make catalog-backed agents accurate.</p><p>The solution the post documents is progressive disclosure - delivering only the tools relevant to the current agent session rather than injecting the full MCP tool catalog upfront. For a Backstage-backed MCP server, that means scoping context delivery to the query at hand: a service's owning team, its dependencies, and its operational state, rather than all 20,000 entities in the catalog.</p><p>The post includes benchmarks comparing naive full-catalog injection with progressive disclosure and walks through what a production configuration looks like at different scale tiers. If you're building agents on top of your service catalog, or evaluating how much catalog context to expose as MCP tools, start here if you are configuring catalog-backed agents at scale.</p><p><a href="https://roadie.io/blog/mcp-server-context-window/">Read it on the Roadie blog</a>.</p>
]]></content:encoded></item><item><title><![CDATA[Backstage v1.52.0, Connections Service and AI-Augmented Squads]]></title><link>https://roadie.io/backstage-weekly/138-v1-52-0-connections-ai-squads/</link><guid isPermaLink="false">https://roadie.io/backstage-weekly/138-v1-52-0-connections-ai-squads/</guid><pubDate>Thu, 18 Jun 2026 13:00:00 GMT</pubDate><description><![CDATA[Backstage v1.52.0 ships June 16 with a new discovery API default and the experimental connections service, v1.51.2 patches a msgraph user-drop, and a June 11 Roadie post examines why AI-augmented teams keep rebuilding services that already exist.]]></description><content:encoded><![CDATA[<blockquote><p>Backstage v1.52.0 ships June 16 with a new discovery API default and the experimental connections service, v1.51.2 patches a msgraph user-drop, and a June 11 Roadie post examines why AI-augmented teams keep rebuilding services that already exist.</p></blockquote><p><img src="https://images.ctfassets.net/hcqpbvoqhwhm/2ziKWimhA1KO9qa2h3fRdX/e9477ccb824a5327c370da3eac0f39f1/blog-11june.png?w=500&#x26;h=500&#x26;fm=webp" alt="Backstage v1.52.0, Connections Service and AI-Augmented Squads"></p><h2>Backstage v1.52.0 ships</h2><p>v1.52.0 landed June 16 with two breaking changes to address before upgrading. The discovery API default is now <code>FrontendHostDiscovery</code>, which honours per-plugin endpoint overrides from <code>discovery.endpoints</code> - if you route internal and external Backstage traffic to separate URLs, add a <code>target.internal</code> field to your config or all traffic routes to the external target. Immediate-mode catalog stitching is also removed. Drop <code>stitchingStrategy: 'immediate'</code> from your catalog config if it's still there.</p><p>The main new addition is <code>@backstage/connections</code> (BEP-0014): a centralised system for plugins to declare and access credentials to external services, with runtime enforcement preventing access to undeclared connection types. It's experimental in v1.52.</p><p>v1.51.2 (June 10) patches a silent user-drop in the msgraph module when <code>userSelect</code> is empty.</p><p><a href="https://github.com/backstage/backstage/releases/tag/v1.52.0">Full release notes</a>.</p><h2>From the Roadie blog</h2><p>We published <a href="https://roadie.io/blog/ai-augmented-squads-service-duplication/">Why AI-Augmented Squads Keep Building the Same Thing Twice</a> on June 11. We respond to a DX Annual panel (where speakers noted that AI-augmented teams were generating more duplication and tech debt even as they shipped faster) and argues the root cause is an infrastructure gap that reorganising squads doesn't close.</p><p>AI coding agents have no queryable access to what already exists in the system. An agent asked to help build a notifications service will build one, with no knowledge that three already exist. The post's core claim is that this is a context infrastructure problem - agents produce duplicates because there's no structured, queryable record of what's already in the system.</p><p>The practical argument is about catalog design. Most service catalogs are built for human browsing, but for agent query a catalog needs to be accurate, current, and structured enough that an agent can check what already exists before suggesting a new build. Most organisations haven't made that distinction, and the post walks through what it requires.</p><p><a href="https://roadie.io/blog/ai-augmented-squads-service-duplication/">Read it on the Roadie blog</a>.</p><h2>Community</h2><p>🔧 <a href="https://github.com/backstage/backstage/pull/34036">PR #34036</a> by polasudo (reviewed by Rugvip) adds a GraphQL fallback for scaffolder git push operations. In environments where a proxy with deep packet inspection blocks the git binary protocol, the scaffolder now falls back to GitHub's <code>createCommitOnBranch</code> GraphQL mutation - one API call regardless of file count. Fixes a production blocker in corporate networks with active deep packet inspection policies.</p><p>🔍 <a href="https://github.com/backstage/backstage/pull/34572">PR #34572</a> by 04kash makes <code>hasLabel.apply</code> and <code>hasAnnotation.apply</code> case insensitive in catalog filtering. Labels and annotations with mixed casing can now be matched without requiring exact case, reducing filter errors when naming conventions aren't consistently applied. Targeting v1.52.0.</p><h2>What shipped</h2><ul><li><code>@backstage/plugin-app</code> v0.5.0 - <code>FrontendHostDiscovery</code> now default discovery API; add <code>target.internal</code> to discovery config if routing internal/external traffic to separate URLs (BREAKING)</li><li><code>@backstage/plugin-catalog-backend</code> v3.8.0 - immediate-mode stitching removed; deferred queue only (BREAKING)</li><li><code>@backstage/connections</code> - new experimental package for plugin-scoped external service credentials (BEP-0014)</li><li><code>@backstage/ui</code> v0.16.0 - async collections in Select/Combobox; <code>ComboboxProps</code>/<code>SelectProps</code> changed to union types (BREAKING for interface extensions)</li><li><code>@backstage/plugin-catalog-backend</code> - msgraph empty <code>userSelect</code> user-drop fixed (v1.51.2)</li><li><code>v1.52.0</code> released June 16 (<a href="https://github.com/backstage/backstage/releases/tag/v1.52.0">full changelog</a>)</li></ul>
]]></content:encoded></item><item><title><![CDATA[v1.52.0-next.0, Catalog Stitching Fixes, and Engineering Org Opacity]]></title><link>https://roadie.io/backstage-weekly/137-v1-52-next-0-stitch-reliability/</link><guid isPermaLink="false">https://roadie.io/backstage-weekly/137-v1-52-next-0-stitch-reliability/</guid><pubDate>Mon, 08 Jun 2026 13:00:00 GMT</pubDate><description><![CDATA[Backstage v1.52.0-next.0 removes immediate-mode catalog stitching and fixes a stitch-queue race condition, with catalog reliability the headline. Plus why organizational opacity, not model limits, is what blocks AI agents.]]></description><content:encoded><![CDATA[<p>👋 Welcome to Backstage Weekly 137.</p><p><strong>TL;DR</strong></p><p>v1.52.0-next.0, the first pre-release for the June 16 stable, was cut on May 26 - and for operators the headline is catalog reliability: it removes the immediate-mode stitching strategy and fixes a stitch-queue race condition. It also bundles the catalog export and queryEntities work we covered in Issue 136, both now confirmed for the stable, plus a new <code>totalItems</code> option for skipping the entity count. On the Roadie blog, Jian Reis examines how organizational opacity blocks AI agents and why a well-maintained catalog is the first line of defense.</p><p><img src="https://images.ctfassets.net/hcqpbvoqhwhm/2cl4ZUwCCFSEEBqM5jcJ82/d005777a871d75fc23d736cf121c849b/blackbox.png?w=500&#x26;h=500&#x26;fm=webp" alt="v1.52.0-next.0, Catalog Stitching Fixes, and Engineering Org Opacity"></p><h2>v1.52.0-next.0 is out</h2><p>Backstage v1.52.0-next.0 was tagged on May 26, the first pre-release build ahead of the v1.52.0 stable window on June 16. It rolls up the streaming catalog export and the queryEntities list/count split we covered in Issue 136 - both now confirmed for the stable. The release also adds a <code>totalItems</code> parameter to <code>CatalogApi.queryEntities</code> and the <code>/entities/by-query</code> endpoint that goes a step further: where the Issue 136 change ran the list and count queries concurrently, <code>totalItems: 'exclude'</code> skips the count entirely for callers that only need the entity list - useful for paginated views that would otherwise pay for a full filtered-dataset scan on every page load.</p><p>The most substantial new change is the removal of immediate-mode stitching. <a href="https://github.com/backstage/backstage/pull/34193">PR #34193</a> by freben drops the strategy that ran stitching synchronously in-process on entity writes. All stitching now runs through the deferred worker queue. If your catalog configuration explicitly sets <code>stitchingStrategy: 'immediate'</code>, that option no longer does anything and should be removed. For most operators this change is invisible - immediate mode has been deprecated since v1.47 - but it's worth checking before upgrading.</p><p><a href="https://github.com/backstage/backstage/pull/34339">PR #34339</a> by freben fixes a race condition in the stitch queue: row locks were released before timestamp bumps completed, allowing duplicate stitching claims on the same entity. A related improvement makes pending re-stitches immediately eligible for pickup once a first stitch completes, reducing the window where a re-stitch could be missed under load.</p><p><a href="https://github.com/backstage/backstage/pull/34394">PR #34394</a> by benjdlambert adds an <code>app.disablePublicEntryPoint</code> config option to the app-backend plugin. Setting it to <code>true</code> disables the experimental behavior that automatically serves an unauthenticated sign-in page when a <code>dist/public</code> directory exists in the app bundle. Teams that have explicitly opted into this feature don't need to change anything.</p><h2>From the Roadie blog</h2><p>We published <a href="https://roadie.io/blog/engineering-organisation-opacity-ai-agents/">What Your Engineering Organisation Doesn't Know About Itself</a> on May 27. Jian Reis extends a dekodiert.de argument about how AI agent failures often trace back to organizational opacity rather than model limitations.</p><p>The post taxonomizes organizational knowledge into three groups: undocumented-but-knowable (21 items, including service ownership, deployment cadence, and incident history), tacit (7 items, including architectural intent and team conventions), and politically concealed (4 items). The first group is the largest and the most tractable for a platform team.</p><p>The piece argues that a well-maintained service catalog directly addresses the undocumented-but-knowable layer: entity graphs capture ownership, Tech Insights scores organizational legibility, and operational annotations - SLO targets, runbook links, deployment state - give AI agents the runtime context to make sound suggestions rather than locally correct but globally invalid ones.</p><p>The catalog reliability work landing in v1.52.0-next.0 this week connects directly to that argument. A stale or inconsistently stitched catalog propagates the opacity problem instead of reducing it. Better stitching semantics and faster queries are prerequisites for using the catalog as a reliable AI context source in production.</p><p><a href="https://roadie.io/blog/engineering-organisation-opacity-ai-agents/">Read it on the Roadie blog</a>.</p><h2>Community</h2><p>🔒 <a href="https://github.com/backstage/backstage/pull/34398">PR #34398</a> by robingileborg changes how Backstage treats Bitbucket usernames: they are no longer redacted as secrets in logs. Passwords and tokens remain redacted; this fix removes unintentional noise when debugging Bitbucket authentication failures.</p><p>🧩 <a href="https://github.com/backstage/backstage/pull/34264">PR #34264</a> by jabrks adds a <code>NumberField</code> component to <code>@backstage/ui</code>. It mirrors the <code>TextField</code> pattern using <code>react-aria-components</code> and supports min/max/step bounds, increment/decrement controls, an optional icon, and inline validation feedback. Approved by cdedreuille and Naycon; targeting v1.52.0.</p><p>📚 <a href="https://github.com/backstage/backstage/pull/34406">PR #34406</a> by deiga updates the official Backstage documentation to recommend <code>@react-hookz/web</code> over <code>react-use</code> for hooks in plugin development. <code>react-use</code> has had maintenance gaps; the change reduces risk for plugin authors starting new projects.</p><p>🔧 <a href="https://github.com/backstage/backstage/pull/34421">PR #34421</a> by freben increases MySQL connect and pool timeouts in <code>@backstage/backend-test-utils</code>. The fix addresses test flakiness in slow CI environments where MySQL initialization time caused connection failures before the test suite started.</p><h2>What shipped</h2><ul><li><code>@backstage/plugin-catalog-backend</code> - immediate-mode stitching removed; deferred queue only from v1.52.0 (#34193, freben)</li><li><code>@backstage/plugin-catalog-backend</code> - stitch queue race condition fixed; overlapping stitches for same entity prevented (#34339, freben)</li><li><code>@backstage/plugin-catalog-backend</code> - <code>totalItems</code> option added to <code>queryEntities</code> and <code>/entities/by-query</code> endpoint</li><li><code>@backstage/app-backend</code> - <code>app.disablePublicEntryPoint</code> config option added (#34394, benjdlambert)</li><li><code>@backstage/ui</code> - <code>NumberField</code> component added (#34264, jabrks)</li><li><code>v1.52.0-next.0</code> released May 26 (<a href="https://github.com/backstage/backstage/releases/tag/v1.52.0-next.0">full changelog</a>)</li></ul>
]]></content:encoded></item><item><title><![CDATA[Catalog Export, Query Performance and v1.52.0 Preview]]></title><link>https://roadie.io/backstage-weekly/136-catalog-export-query-performance/</link><guid isPermaLink="false">https://roadie.io/backstage-weekly/136-catalog-export-query-performance/</guid><pubDate>Thu, 04 Jun 2026 13:00:00 GMT</pubDate><description><![CDATA[The week after v1.51.0 stable, three features landed on main targeting v1.52.0: streaming catalog export, a 2-3x speedup on entity-list queries, and an OpenAPI auto-onboarding skill for backend plugin authors.]]></description><content:encoded><![CDATA[<blockquote><p>The week after v1.51.0 stable, three features landed on main targeting v1.52.0: streaming catalog export, a 2-3x speedup on entity-list queries, and an OpenAPI auto-onboarding skill for backend plugin authors. Community plugins are completing their v1.51.0 compatibility updates.</p></blockquote><p><img src="https://images.ctfassets.net/hcqpbvoqhwhm/5DPViHTa4iDQXFvpEOlrI4/97d0b011166789ca22061edbae79fc88/image1.png?w=500&#x26;h=500&#x26;fm=webp" alt="Catalog Export, Query Performance and v1.52.0 Preview"></p><h2>Catalog export and query performance in v1.52.0</h2><p>No new release this week, but two significant PRs merged for v1.52.0 (targeting June 16).</p><p><a href="https://github.com/backstage/backstage/pull/31837">PR #31837</a> by the-serious-programmer adds streaming CSV and JSON export to catalog index pages. The export dialog lets users select which columns to include. The implementation uses async generators to stream data directly to disk rather than buffering the full dataset in memory, so it handles large catalogs without memory pressure. On the legacy frontend system, it's opt-in via <code>&#x3C;CatalogIndexPage exportSettings={{ enabled: true }} /></code>; on the new frontend system, it's config-driven in <code>app-config.yaml</code>. Rugvip approved the PR before merge. The underlying feature request (#28960) has been open since February 2025.</p><p><a href="https://github.com/backstage/backstage/pull/34323">PRs #34323 and #34324</a> by freben address a PostgreSQL performance ceiling in the catalog's <code>queryEntities</code> method. The previous implementation used a Common Table Expression that PostgreSQL 12+ materializes before applying <code>LIMIT</code>, forcing a full filtered-dataset scan on every paginated query. The fix splits list and count into separate queries running concurrently via <code>Promise.all</code>. On a "Kind=component" first-page query, wall-clock time drops from 2.7s to approximately 1s. An unfiltered first page drops from 7.7s to approximately 5.5s. Both target v1.52.0.</p><h2>From the Roadie blog</h2><p>We published <a href="https://roadie.io/blog/context-engineering-for-developers-ai-infrastructure/">Context Engineering for Developers: The Infrastructure Layer That Makes AI Actually Useful</a> in April, and the catalog improvements landing this week connect directly to its central argument.</p><p>The post separates context engineering from prompt engineering. Prompt engineering is the interaction layer. Context engineering is the information architecture beneath it: how service metadata, ownership graphs, and operational annotations get structured, indexed, and delivered to AI systems at query time. The problem it names - "locally correct and globally invalid" suggestions from AI coding tools - comes from models that can't see the organizational context behind the code they're editing.</p><p>The practical starting point it recommends is metadata coverage: four specific fields - owner, system, dependsOn, and operational annotations like runbooks and SLO targets. The export capability merging for v1.52.0 this week is a direct enabler of that audit. Teams can now pull a structured snapshot of their catalog to check which entities are missing which fields before adding AI capabilities on top. The query performance improvement means that audit-and-refresh loop gets faster as the catalog grows.</p><p><a href="https://roadie.io/blog/context-engineering-for-developers-ai-infrastructure/">Read it on the Roadie blog</a>.</p><h2>Community</h2><p>🔧 <a href="https://github.com/backstage/backstage/pull/34179">PR #34179</a> by aramissennyeydd adds a skill to auto-onboard backend plugins to Backstage's validated OpenAPI tooling. Running it migrates a plugin's router to <code>createOpenApiRouter</code>, generates typed request handlers from the OpenAPI spec, and optionally sets up Jest test integration and client generation. Recommended by drodil; targeting v1.52.0.</p><p>🐛 <a href="https://github.com/backstage/backstage/pull/34347">PR #34347</a> by koalaty-code fixes a column type mismatch in catalog incremental ingestion: the <code>last_error</code> field was incorrectly typed, causing storage failures when ingestion errors were logged. If you're using the Microsoft Graph incremental ingestion module from v1.51.0, this fix is in main and targeting v1.52.0.</p><p>⚡ <a href="https://github.com/backstage/backstage/pull/34344">PR #34344</a> by mclarke47 changes the Kubernetes backend to pool HTTPS agents per cluster in <code>KubernetesFetcher</code> rather than opening a new connection per request. For environments with many Kubernetes entities or frequent catalog refresh cycles, this reduces connection overhead across each catalog update.</p><p>🔌 <a href="https://github.com/backstage/community-plugins/pull/8815">PR #8815</a> by jmezach adds New Frontend System support to the Octopus Deploy plugin, removing the need to bridge back to the legacy system for teams on the NFS migration path.</p><h2>What shipped</h2><ul><li><code>@backstage-community/plugin-rbac-backend</code> - compatibility bumped to v1.50.4</li><li><code>@backstage-community/plugin-argocd</code> - compatibility bumped to v1.50.4</li><li><code>@backstage-community/plugin-servicenow</code> - compatibility bumped to v1.50.4</li><li><code>@backstage-community/plugin-quay</code> - compatibility bumped to v1.50.4</li><li><code>@backstage-community/plugin-octopus-deploy</code> - new frontend system support (PR #8815, jmezach)</li><li><code>@backstage/plugin-catalog-backend</code> - queryEntities list/count split into concurrent queries; 2-3x speedup on broad first-page queries (targeting v1.52.0)</li><li><code>@backstage/plugin-catalog-react</code> - redundant entity fetches eliminated on filter initialization (targeting v1.52.0)</li><li><code>@backstage/plugin-kubernetes-backend</code> - HTTPS agent pooling per cluster in KubernetesFetcher (targeting v1.52.0)</li></ul>
]]></content:encoded></item><item><title><![CDATA[Backstage v1.51.0, AiResource Kind and Scaffolder 4.0]]></title><link>https://roadie.io/backstage-weekly/135-v1-51-0-airesource-kind-scaffolder-4/</link><guid isPermaLink="false">https://roadie.io/backstage-weekly/135-v1-51-0-airesource-kind-scaffolder-4/</guid><pubDate>Wed, 27 May 2026 13:00:00 GMT</pubDate><description><![CDATA[Backstage v1.51.0 ships as stable with a new AiResource entity kind for cataloguing AI tools and governance rules, MCP Server as a first-class API type, and scaffolder-backend promoted to 4.0 with step failure handling.]]></description><content:encoded><![CDATA[<blockquote><p>Backstage v1.51.0 ships as stable with a new AiResource entity kind for cataloguing AI tools and governance rules, MCP Server as a first-class API type, and scaffolder-backend promoted to 4.0 with step failure handling.</p></blockquote><p><img src="https://images.ctfassets.net/hcqpbvoqhwhm/GElnKjYfQ1wMumUdI8elo/b13fcde5dbb9973dec6f5d6eedea2618/roa-36.png?w=500&#x26;h=500&#x26;fm=webp" alt="Backstage v1.51.0, AiResource Kind and Scaffolder 4.0"></p><h2>Backstage v1.51.0</h2><p>The stable release of v1.51 landed May 19. The <a href="https://backstage.github.io/upgrade-helper/?to=1.51.0">upgrade helper</a> covers the full migration steps; here are the highlights.</p><p><code>@backstage/catalog-model@1.9.0</code> ships one new entity kind and one new <code>API</code> spec subtype via the opt-in <code>@backstage/plugin-catalog-backend-module-ai-model@0.1.0</code> module. <code>AiResource</code> gives your catalog a structured home for AI tools and governance rules: a <code>skill</code> subtype declares <code>disciplines</code>, <code>categories</code>, <code>agents</code>, and <code>dependsOn</code> fields; a <code>rule</code> subtype carries <code>category</code> (required) and <code>rationale</code> (required) as first-class catalog properties. The same module registers <code>spec.type: 'mcp-server'</code> on the existing <code>API</code> kind, with a <code>spec.remotes</code> list replacing the string <code>definition</code> field - implementing RFC #32062 (PR #34016, benjdlambert). Both are exported from <code>@backstage/catalog-model/alpha</code>.</p><p>Three breaking changes are the ones to check before upgrading. <code>NavItemBlueprint</code> is removed from <code>@backstage/frontend-plugin-api@0.17.0</code> - move <code>title</code> and <code>icon</code> to your <code>PageBlueprint.make()</code> call (PR #34299). OIDC defaults in <code>@backstage/plugin-auth-backend@0.29.0</code> replace the permissive <code>['*']</code> wildcard with explicit client patterns covering Claude, VS Code, the Backstage CLI, and Cursor; clients using CIMD need patterns in <code>auth.experimentalClientIdMetadataDocuments.allowedClientIdPatterns</code>, and clients using DCR need patterns in <code>auth.experimentalDynamicClientRegistration.allowedRedirectUriPatterns</code> (PR #34260). <code>PolicyQueryUser</code> in <code>@backstage/plugin-permission-node</code> drops <code>token</code> and <code>expiresInSeconds</code>; a new <code>CachedUserInfoService</code> with a 5-second TTL and in-flight request coalescing replaces them (PR #34252).</p><p>Scaffolder-react reaches 2.0.0 with an experimental BUI form theme (opt-in via extension config) and <code>FormDecoratorBlueprint</code> promoted from alpha to public. Scaffolder-backend 4.0.0 adds <code>always()</code> and <code>failure()</code> step condition functions for cleanup steps that need to run after a failure.</p><p><code>catalog.stitchingStrategy.mode: 'immediate'</code> is now deprecated with a startup warning - plan to remove it from your config before the next release (freben, PR #34278).</p><h2>From the Roadie blog</h2><p>We published <a href="https://roadie.io/blog/governance-gap-agent-stack/">"The Governance Gap in Agent-Stack Thinking"</a> in May, and the v1.51.0 release makes it worth a read.</p><p>The piece picks up where the four standard production-agent bets - identity, context, persistent execution, and purpose-built primitives - leave off. The argument is that the fifth layer, runtime governance, gets consistently skipped: who enforces which actions an agent can take, who audits what it did, and what happens when the context it consumed turns out to be stale or poorly provenance-tracked?</p><p>The <code>AiResource</code> entity kind in v1.51.0 is a partial, structural answer to that question. Your catalog now has a first-class place to declare AI tools with their dependency graph (<code>dependsOn</code>) and a <code>rule</code> subtype that carries governance constraints as catalog entities rather than inline prompt text or undocumented convention. The MCP Server API type puts MCP server definitions into your catalog rather than scattered <code>app-config.yaml</code> blocks - giving you a queryable, auditable record of the AI interfaces your platform exposes.</p><p>If your team is working through the governance layer for agents you're building or consuming, the piece is a useful framing document. <a href="https://roadie.io/blog/governance-gap-agent-stack/">Read it on the Roadie blog</a>.</p><h2>Community</h2><p><a href="https://github.com/backstage/community-plugins/pull/9121">PR #9121</a> by PatAKnight (merged May 18) hardens the RBAC backend against Casbin CSV poisoning: policy values containing <code>"</code> are now rejected, <code>loadPolicy</code> failures propagate rather than being swallowed, and malformed CSV lines are skipped with a warning instead of aborting ingestion. Released as <code>@backstage-community/plugin-rbac-backend@7.12.5</code>. A security patch worth applying before your next upgrade cycle.</p><p><a href="https://github.com/backstage/community-plugins/pull/8979">PR #8979</a> by JessicaJHee (merged May 19) adds a PingFederate auth provider module. It ships two sign-in resolvers: <code>ldapUuidMatchingAnnotation</code> (matches the LDAP UUID claim to a <code>backstage.io/ldap-uuid</code> annotation with a configurable claim key) and <code>subClaimMatchingPingIdentityUserId</code> (maps <code>sub</code> to <code>pingidentity.org/id</code> for orgs using the PingOne catalog provider).</p><p><a href="https://github.com/backstage/community-plugins/pull/7786">PR #7786</a> by driosalido (merged May 19) fixes ArgoCD entity pages that were throwing HTTP 500s for any multi-source application with a Helm chart source. The frontend was passing Helm chart version strings (e.g. <code>1.0.0</code>) to the revision metadata endpoint, which only accepts git SHAs. The fix detects chart sources and skips the revision metadata call.</p><h2>What shipped</h2><ul><li><code>@backstage/catalog-model@1.9.0</code> - AiResource entity kind; MCP Server spec type for API kind</li><li><code>@backstage/plugin-catalog-backend-module-ai-model@0.1.0</code> - new module to register AI entity kinds</li><li><code>@backstage/frontend-plugin-api@0.17.0</code> - NavItemBlueprint removed; PortableSchema.schema is now a method</li><li><code>@backstage/plugin-auth-backend@0.29.0</code> - OIDC patterns hardened; explicit client lists replace wildcards</li><li><code>@backstage/plugin-scaffolder-react@2.0.0</code> - BUI form theme (opt-in); FormDecoratorBlueprint stable</li><li><code>@backstage/plugin-scaffolder-backend@4.0.0</code> - <code>always()</code> and <code>failure()</code> step conditions; <code>formDecorators</code> stable</li><li><code>@backstage/ui@0.15.0</code> - DatePicker, DateRangePicker, Combobox; flex item props on Box, Card, Grid, Flex</li><li><code>@backstage/plugin-catalog-backend@3.7.0</code> - index-driven entity sorting; missing index on <code>relations.target_entity_ref</code> added</li><li><code>@backstage/plugin-permission-node</code> - PolicyQueryUser token/expiresInSeconds removed; CachedUserInfoService added</li><li><code>@backstage-community/plugin-rbac-backend@7.12.5</code> - Casbin CSV poisoning fix; error propagation hardened</li></ul>
]]></content:encoded></item><item><title><![CDATA[The Agent Stack's Missing Layer, Scaffolder Template Groups and Backstage v1.51.0-next.3]]></title><link>https://roadie.io/backstage-weekly/134-agent-stack-missing-layer/</link><guid isPermaLink="false">https://roadie.io/backstage-weekly/134-agent-stack-missing-layer/</guid><pubDate>Wed, 20 May 2026 13:00:00 GMT</pubDate><description><![CDATA[Backstage v1.51.0-next.3 ships scaffolder template grouping and index-driven catalog sorting that drops full-table scans on large deployments. Plus why runtime governance is the enforcement layer missing from every current agent stack.]]></description><content:encoded><![CDATA[<p>👋 Welcome to Backstage Weekly 134.</p><p>TL;DR</p><p>This week we published on the enforcement layer missing from every current agent stack. Backstage v1.51.0-next.3 ships with scaffolder template grouping and catalog index-driven sorting.</p><hr><p><img src="https://images.ctfassets.net/hcqpbvoqhwhm/1vl6RqN15qvZpOX9psWvo9/90c81fb5878f389290e9692e47004b66/roadie-blog-2.png?w=500&#x26;h=500&#x26;fm=webp" alt="The Agent Stack&#x27;s Missing Layer, Scaffolder Template Groups and Backstage v1.51.0-next.3"></p><h2>Backstage update</h2><p>The v1.51 pre-release cycle continued with v1.51.0-next.3 on May 12. Four items worth flagging:</p><ul><li>Scaffolder gets template grouping - the template list page now supports custom template groups, so platform teams can organise templates by team, workflow type, or whatever taxonomy makes sense. <code>EXPERIMENTAL_formDecorators</code> is also renamed to <code>formDecorators</code>; update your scaffolder config if you're using that field.</li><li><code>@backstage/plugin-catalog-backend@3.7.0-next.2</code> restructures entity listing to use index-driven sorting, removing full-table-scan patterns that affect large catalog deployments.</li><li><code>@backstage/ui@0.15.0-next.3</code> adds a DatePicker component built on React Aria with full keyboard and screen reader support.</li><li><code>@backstage/backend-plugin-api</code> ships an alpha <code>TracingService</code> for unified trace span emission across backend plugins. Migration steps are in the upgrade helper at <a href="https://backstage.github.io/upgrade-helper/?to=1.51.0-next.3">backstage.github.io/upgrade-helper</a>.</li></ul><h2>From the Roadie blog</h2><p>We published <a href="https://roadie.io/blog/the-agent-stacks-missing-layer/">The Agent Stack's Missing Layer</a> this week. The starting point is the PocketOS database deletion from late April: an AI coding agent (Cursor running Claude Opus 4.6) deleted a production database in nine seconds because of an architecture gap at the integration boundary.</p><p>The piece frames the current agent stack as three layers - model, prompt, and enforcement at the integration boundary. The first two were present in the PocketOS setup and performed as designed. The third was missing. That's the argument: when a model can reason about your safety rules, those rules are just text. Text doesn't bind.</p><p>The missing enforcement layer has a concrete shape - tokens scoped to the minimum operations a task requires (a domain-management credential shouldn't carry volume-delete authority), API gateways that require out-of-band confirmation before destructive calls, and backups stored outside the blast radius of what they protect. None of these are new ideas. They're how production systems already work for human operators. The gap is that they haven't been applied to agent operators yet.</p><p>If you're running production data behind any provider that gives agents a credential, the piece is a useful framing for the infrastructure conversation your team should be having. <a href="https://roadie.io/blog/the-agent-stacks-missing-layer/">Read it on the Roadie blog</a></p>
]]></content:encoded></item><item><title><![CDATA[Backstage v1.51.0-next.2, Microsoft Graph Ingestion and an MCP Glossary]]></title><link>https://roadie.io/backstage-weekly/133-v1-51-next-2-msgraph-agent-context/</link><guid isPermaLink="false">https://roadie.io/backstage-weekly/133-v1-51-next-2-msgraph-agent-context/</guid><pubDate>Wed, 13 May 2026 13:00:00 GMT</pubDate><description><![CDATA[Backstage v1.51.0-next.2 adds cursor-based Microsoft Graph ingestion for large Azure AD tenants and air-gapped TechDocs support, and v1.50.4 ships catalog security patches to apply first. Plus a working glossary for MCP and context engineering.]]></description><content:encoded><![CDATA[<p>👋 Welcome to Backstage Weekly 133.</p><p>TL;DR</p><p>Backstage v1.51.0-next.2 shipped May 6 with cursor-based Microsoft Graph ingestion for large Azure AD tenants and air-gapped TechDocs support. v1.50.4 delivered security patches for the catalog unprocessed-entities plugins - apply before moving to the v1.51 cycle. We published a working glossary for MCP and context engineering, defining the vocabulary platform teams need as they connect service catalogs to AI agents.</p><hr><p><img src="https://images.ctfassets.net/hcqpbvoqhwhm/5GMIEaTbrty33NVYnLGEJL/d97bd3371ba2ecdd12dae61302807394/roa-14-new.png?w=500&#x26;h=500&#x26;fm=webp" alt="Backstage v1.51.0-next.2, Microsoft Graph Ingestion and an MCP Glossary"></p><h2>Backstage v1.51.0-next.2</h2><p>The second pre-release of the v1.51 cycle landed May 6 with two substantive additions for catalog operators and TechDocs users.</p><p>The new <code>@backstage/plugin-catalog-backend-module-msgraph-incremental</code> module (v0.1.0-next.0) introduces cursor-based ingestion for Microsoft Graph. Rather than pulling entire user and group datasets into memory, it processes up to 999 users or 100 groups per burst and persists <code>@odata.nextLink</code> cursors so a pod restart picks up where it left off. Worth evaluating as a lower-memory alternative if you run large Azure Active Directory tenants in your Backstage user catalog.</p><p>TechDocs also gets air-gapped support: a new <code>--disableExternalFonts</code> flag on <code>techdocs-cli generate</code> and a matching <code>techdocs.generator.mkdocs.disableExternalFonts</code> app-config option, both stopping MkDocs from reaching Google Fonts during the build step - the missing piece for isolated networks.</p><p>From the v1.51.0-next.1 drop (April 28): the Header component's main CSS class was removed (breaking change for custom styles), and it gains <code>sticky</code>, <code>description</code>, <code>tags</code>, and <code>metadata</code> props with <code>breadcrumbs</code> deprecated. The upgrade helper at <a href="https://backstage.github.io/upgrade-helper/?to=1.51.0-next.2">backstage.github.io/upgrade-helper/?to=1.51.0-next.2</a> covers the full migration. v1.50.4 (April 29) delivered security patches for the catalog unprocessed-entities plugins - apply before moving to the v1.51 cycle.</p><h2>From the Roadie blog</h2><p>We published a working glossary this week for the vocabulary collision happening as platform teams start connecting their service catalogs to AI agents. The piece works through three concept clusters - agents, context, and MCP - that teams regularly conflate when discussing how to make internal developer portals agent-accessible.</p><p>The core definitions: an agent is an LLM-driven system that plans and executes multi-step work by combining reasoning with tool use. Context is the structured, scoped information an agent gets at inference time - a curated bundle assembled from your platform's knowledge graph, scoped to the query at hand. MCP (Model Context Protocol) is the interface layer, standardizing how agents call tools and how those tools respond.</p><p>For Backstage users, the mapping is direct. Configured as an MCP Server, your service catalog exposes typed entity data to agents in a queryable form. The ownership graph, SLA annotations, deployment records, and cost data in your catalog are exactly the business context agents need to produce accurate responses rather than plausible-sounding ones. The glossary also defines context planes, context bundles, skills, and agent identity - terms circulating in the community without agreed-upon meaning.</p><p>Worth a read if you're in conversations about making your Backstage instance agent-accessible, or fielding questions about MCP from engineering leadership. <a href="https://roadie.io/blog/context-agents-mcp-glossary/">Context, Agents, MCP: A Working Glossary for Platform Teams</a></p><h2>Community this week</h2><p>🗂️ Issue <a href="https://github.com/backstage/backstage/issues/34154">#34154</a> (May 7, @koalaty-code) details how <code>/api/catalog/entity-facets</code> generates <code>WHERE IN (subquery)</code> queries that force full table scans on the search table. On PostgreSQL 16 with millions of rows, a single facets request can run 10+ seconds and spike CPU to 100% under concurrent load. The proposed fix is to replace the subquery with an <code>INNER JOIN</code> so the planner scans the smaller filtered entity set first. Worth following if you run large catalogs on PostgreSQL.</p><p>🐛 @drodil filed issue <a href="https://github.com/backstage/backstage/issues/34146">#34146</a> on May 7 after entities created programmatically with <code>null</code> values in <code>metadata.annotations</code> triggered a <code>Cannot read properties of null (reading 'match')</code> TypeError in <code>OverviewPage.tsx</code>. Fix is already in PR <a href="https://github.com/backstage/backstage/pull/34171">#34171</a>; the open question of whether null annotations should be rejected at ingestion rather than crash the UI is still being discussed.</p><p>📋 @deiga's issue <a href="https://github.com/backstage/backstage/issues/34134">#34134</a> (May 5) is a nine-point checklist of frontend migration gaps from a real production migration: no decision guidance on extension overrides versus blueprints versus extension config, the App Visualizer buried in troubleshooting rather than promoted as a debugging tool, manual plugin imports silently suppressing auto-discovery, and a double-header rendering bug in hybrid mode. Useful field reference if you're mid-migration.</p><h2>What shipped</h2><ul><li><code>@backstage/plugin-catalog-backend-module-msgraph-incremental@0.1.0-next.0</code> - new cursor-based Microsoft Graph ingestion module</li><li><code>@techdocs/cli@1.11.0-next.1</code> - <code>--disableExternalFonts</code> flag for air-gapped TechDocs builds</li><li><code>@backstage/plugin-techdocs-backend@2.2.0-next.1</code> - <code>techdocs.generator.mkdocs.disableExternalFonts</code> app-config option</li><li><code>@backstage/ui@0.15.0-next.2</code> - Combobox component, Card keyboard focus fixes, <code>searchDebounceMs</code> and <code>filterDebounceMs</code> on useTable</li><li><code>@backstage/ui@0.15.0-next.1</code> - Header <code>sticky</code>, <code>description</code>, <code>tags</code>, <code>metadata</code> props; <code>breadcrumbs</code> deprecated (breaking: main header CSS class removed)</li><li><code>@backstage/core-components@0.18.10-next.1</code> - stable DOM markers for Page and Header layouts</li><li><code>@backstage/integration@2.0.2-next.1</code> - GitLab fetch mode fix; transient network error retry</li><li><code>@backstage/plugin-devtools@0.1.39-next.2</code> - ConfigContent migrated from Material UI to Backstage UI</li><li><code>@backstage/eslint-plugin@0.3.0-next.0</code> - <code>no-self-package-imports</code> lint rule</li><li><code>v1.50.4</code> (April 29) - security patches for the catalog unprocessed-entities plugins</li></ul>
]]></content:encoded></item><item><title><![CDATA[AI Assistants Can't See Your Platform, v1.50.3, and RemixIcons License Issue]]></title><link>https://roadie.io/backstage-weekly/132-ai-assistants-cant-see-your-platform/</link><guid isPermaLink="false">https://roadie.io/backstage-weekly/132-ai-assistants-cant-see-your-platform/</guid><pubDate>Mon, 04 May 2026 13:00:00 GMT</pubDate><description><![CDATA[We published a deep dive on why AI coding assistants fail in production, examining the four categories of missing platform context. Backstage v1.50.3 and v1.51.0-next.1 shipped, and the community flagged a RemixIcons licensing change that prompted an immediate dependency pin.]]></description><content:encoded><![CDATA[<p>👋 Let’s dive into Backstage Weekly #132.</p><p>In this issue:</p><ul><li>Why AI coding assistants break down in real production environments</li><li>What shipped this week (including v1.50.3 and what’s next)</li><li>Community highlights, from RemixIcons changes to migration tips</li></ul><p><img src="//images.ctfassets.net/hcqpbvoqhwhm/6OU5BfBFiHGjoMd7EbwfFn/9aaa81206a1bb81fd8d5819c187e1dcd/image1.png" alt="AI coding assistants can read your code, but they can&#x27;t see your platform."></p><h3>AI coding assistants can read your code, but they can't see your platform.</h3><p>We published a deep dive on why AI coding assistants fail in production engineering organizations.</p><p>The scenario: an engineer asks their assistant to refactor a synchronous call into retry logic with exponential backoff. The suggestion looks clean, tests pass, and the PR gets approved. But the assistant couldn't see that the service is already at 99.91% against a 99.9% SLO, p99 latency is at 450ms against a 500ms budget, and there's been a code freeze for 48 hours. The retry logic hammers a degraded downstream service, pushes latency past budget, and burns the remaining error budget in under an hour.</p><p>The model produced syntactically correct, architecturally reasonable code. Every piece of information that would have changed its output lived in the service catalog, the observability platform, and on-call tooling, none of which it could reach.</p><p>The article identifies four categories of missing platform context: service ownership, SLOs and reliability targets, deployment history, and incident history. It also explains why individual workarounds like GEMINI.md files don't scale beyond small teams. A file written this morning doesn't reflect the deployment that happened this afternoon.</p><p>The required shift is platform context engineering: structured, machine-readable operational data exposed through queryable APIs. The article walks through how to implement this architecture using Roadie and includes three practical steps teams can take this week.</p><p>Read the full article: <a href="https://roadie.io/blog/ai-coding-assistants-missing-platform-context/">AI Coding Assistants Can Read Your Code. They Can't See Your Platform.</a></p><h3>v1.50.3 and v1.51.0-next.1 releases</h3><p>Two releases shipped this week. <a href="https://github.com/backstage/backstage/releases/tag/v1.50.3">v1.50.3</a> (April 22) addresses two targeted fixes: homepage widgets that became non-draggable or non-resizable after the first save are now restored, and a facets endpoint performance regression triggered when filters or permissions are applied has been resolved. <a href="https://github.com/backstage/backstage/releases/tag/v1.51.0-next.1">v1.51.0-next.1</a> (April 28) marks the second canary iteration toward the next minor release, giving adopters and plugin authors an early look at upcoming changes.</p><h2>Community Discussions</h2><h3>RemixIcons license flagged, Backstage caps dependency at v4.8.0</h3><p>An OSPO (Open-Source Policy Office) member <a href="https://discord.com/channels/687207715902193673/1496796967894913075">flagged in #support</a> that <code>@remixicon/react</code> had switched from Apache 2.0 to a custom license starting with v4.9.0, a license not on the CNCF's approved allowlist. Rugvip responded within hours by opening <a href="https://github.com/backstage/backstage/pull/34045">PR #34045</a> to pin the dependency to <code>&#x3C; 4.9.0</code> across all Backstage packages until the licensing situation is fully understood. The original reporter thanked the team for the quick action, making this a textbook example of community-driven supply chain vigilance paying off.</p><h3>Codemod recipe for v1.49 to v1.50 migration</h3><p>In #general in the <a href="https://discord.com/channels/687207715902193673/1498351429151363102">"Codemods" thread</a>, Backstage maintainer schultzp2020 shared that he has been collaborating with the Codemod team to build a migration recipe for the v1.49 to v1.50 upgrade, now available on the Codemod Registry at <code>app.codemod.com/registry/@backstage/v1-50-0-migration-recipe</code>. The Backstage codemod repository is currently private but is expected to open up shortly. If you've been dreading the v1.50 migration, this automated recipe should significantly reduce the manual effort.</p><h3>React Aria dependency errors when upgrading to v1.51</h3><p>Users upgrading from v1.50 to v1.51 <a href="https://discord.com/channels/687207715902193673/1494240858453708852">ran into module resolution errors</a> (<code>Module not found: Can't resolve '@react-stately/layout'</code>) originating from <code>@backstage/ui</code> table components. Rugvip escalated the issue to the React Aria team and simultaneously patched <code>@backstage/ui</code> releases going back roughly six months to use <code>~</code> range specifiers for React Aria packages, which resolved the problem. If you're still seeing errors on v1.50.2 or later, remove all <code>@backstage/ui</code> blocks from your <code>yarn.lock</code> and re-run <code>yarn install</code> to pull in the patched package resolutions.</p><h3>Yarn 4.14.1 brings new security defaults</h3><p>A <a href="https://discord.com/channels/687207715902193673/1497203791886549012">PR to bump the community-plugins repo</a> from Yarn v4.12.0 to v4.14.1 (<a href="https://github.com/backstage/community-plugins/pull/8543">PR #8543</a>) prompted discussion in #maintenance about new security-focused defaults introduced in Yarn v4.13.0. The most notable change is the <code>enableScripts</code> lockdown. Maintainer Sarabadu chose the more restrictive defaults over allowing <code>enableScripts</code> everywhere, and is actively seeking sign-off from maintainers Peter "Parsifal-M" and Ahhhndre, given the change touches every workspace in the mono-repo. Worth watching if you maintain a large Backstage mono-repo with Yarn workspaces.</p><h2>Changelog</h2><h3>v1.50.3</h3><p>Released April 22, 2026</p><p>Highlights:</p><ul><li>Fixed homepage widgets becoming non-draggable or non-resizable after first save</li><li>Resolved facets endpoint performance regression when filters or permissions are applied</li><li>Patch release addressing issues from v1.50.0</li></ul><p>Full changelog: <a href="https://github.com/backstage/backstage/releases/tag/v1.50.3">https://github.com/backstage/backstage/releases/tag/v1.50.3</a></p><h3>v1.51.0-next.1</h3><p>Released April 28, 2026</p><p>Highlights:</p><ul><li>Second prerelease of v1.51 cycle</li><li>Available for testing on the next channel</li><li>Continued New Frontend System improvements</li></ul><p>Full changelog: <a href="https://github.com/backstage/backstage/releases/tag/v1.51.0-next.1">https://github.com/backstage/backstage/releases/tag/v1.51.0-next.1</a></p><hr><p>Read past issues: <a href="https://roadie.io/backstage-weekly/">https://roadie.io/backstage-weekly/</a></p>
]]></content:encoded></item><item><title><![CDATA[Context Engineering for Developers, AIContext RFC, and New Releases]]></title><link>https://roadie.io/backstage-weekly/131-context-engineering-for-developers-and-new-releases/</link><guid isPermaLink="false">https://roadie.io/backstage-weekly/131-context-engineering-for-developers-and-new-releases/</guid><pubDate>Mon, 27 Apr 2026 13:00:00 GMT</pubDate><description><![CDATA[We published a developer-focused deep dive on context engineering infrastructure, Backstage introduced a new AIContext catalog kind for AI agent integration, and v1.50.2 and v1.51.0-next.0 shipped with fixes and new features.]]></description><content:encoded><![CDATA[<p>We published a technical deep dive on context engineering for developers, examining why AI coding tools fail in production orgs and how to build the metadata infrastructure that produces reliable suggestions. Backstage maintainers introduced a new AIContext catalog kind via RFC for structured AI agent integration. Two new releases shipped: v1.50.2 with TechDocs improvements and v1.51.0-next.0 opening the next release cycle. The community resolved a React Aria breaking change affecting v1.50/v1.51 upgrades, diagnosed a production scaffolder memory leak, and surfaced critical gaps in the New Frontend System migration documentation.
<img src="https://backstage.io/assets/images/header-93351b4254863212ce2c149a2a5ea388.png" alt="Backstage Software Catalog"></p><h3>Context engineering for developers: Making AI actually useful for engineers</h3><p>We published a developer-focused deep dive explaining that AI coding tools often fail in production because of a lack of context rather than bad prompts. An engineer debugging p99 latency can get a suggestion that compiles cleanly but bypasses a PCI compliance boundary because that constraint doesn't live in source files.</p><p>This piece makes the case that context engineering is a distinct discipline from prompt engineering, one that happens at the data infrastructure layer.</p><p>We illustrate two production workflows with diagrams: one showing the context assembly loop engineers perform during incidents and another showing the same engineer querying a context infrastructure API and receiving the relevant information in a single call. The AI agent receives the same structured response and produces system-aware suggestions.</p><p>It also includes a practical first step: audit your service catalog for owner, system, dependsOn, and operational annotations. If 30%+ of entities are missing two or more fields, that should be your focus to fix AI productivity, not prompt tuning.</p><p>Read the full article: <a href="https://roadie.io/blog/context-engineering-for-developers-ai-infrastructure/">Context Engineering for Developers: Making AI Actually Useful for Engineers</a></p><h3>New AIContext catalog kind RFC for AI agent integration</h3><p>Core maintainer freben surfaced a significant RFC this week when a community member asked whether Backstage's catalog could serve as a Claude skills marketplace. freben's one-word response: "yes!" came with a link to GitHub RFC <a href="https://github.com/backstage/backstage/issues/33575">#33575</a>, which proposes introducing a new <code>AIContext</code> kind in the Software Catalog.</p><p>The RFC aims to make Backstage a structured source of context for AI coding agents like Claude Code, GitHub Copilot, and Cursor. An early implementation PR (<a href="https://github.com/backstage/backstage/pull/33663">#33663</a>) adds a catalog model layer system using JSON Schema-based kind declarations and is already available as an alpha feature. The proposal aligns directly with the context engineering architecture outlined in this week's article: a typed entity graph that AI agents can query deterministically for operational metadata.</p><h3>v1.50.2 and v1.51.0-next.0 releases</h3><p>Two releases shipped this week. <a href="https://github.com/backstage/backstage/releases/tag/v1.50.2">v1.50.2</a> (April 18) is a patch release that makes TechDocs sidebar positioning configurable via CSS custom properties and bumps the zod dependency to v4 for packages using <code>configSchema</code>. <a href="https://github.com/backstage/backstage/releases/tag/v1.51.0-next.0">v1.51.0-next.0</a> (April 21) marks the opening of the next release candidate cycle. Adopters running the next channel can begin testing now.</p><p>Additionally, a series of earlier patch releases (v1.47.4, v1.49.5) retroactively pinned React Aria packages to <code>~</code> ranges in response to a breaking change in the React Aria library that caused module resolution errors for teams upgrading to v1.50 and v1.51.</p><h2>Community Discussions</h2><h3>⚠️ React Aria breaking change hits Backstage upgrades</h3><p>Users upgrading to Backstage v1.50 and v1.51 <a href="https://discord.com/channels/687207715902193673/1494240858453708852">ran into a module resolution error</a>: <code>Module not found: Can't resolve '@react-stately/layout'</code>. The issue stems from an intentional breaking change in the React Aria library, which does not follow SemVer. Backstage maintainer Rugvip confirmed that the team patched <code>@backstage/ui</code> releases going back approximately six months to pin React Aria packages to <code>~</code> ranges. The fix: unlock and bump any <code>@backstage/ui</code> package in your lockfile where the issue appears. Some users reported the problem persisting even on v1.50.2, suggesting the patch may not yet cover all affected packages.</p><h3>🐛 Scaffolder memory leak traced to isolated-vm</h3><p>A production-impacting <a href="https://discord.com/channels/687207715902193673/1494743209073577994">memory leak in Scaffolder task execution</a> was diagnosed and a fix proposed this week. The user discovered that <code>isolated-vm</code> instances used for Scaffolder template rendering were not being garbage collected after task completion. Even a trivial log-only template caused a 10-15% memory spike per 100 runs, leading to eventual container crashes on ECS. The root cause was identified as the <code>SecureTemplater</code> failing to release VM contexts, and <a href="https://github.com/backstage/backstage/pull/33991">PR #33991</a> was opened to add an explicit <code>dispose()</code> method. The fix significantly reduces the spike, though the author notes some residual memory growth remains.</p><h3>🔍 Search backend breaks on upgrade to v1.50.0</h3><p>Users upgrading from v1.49.x to v1.50.0 <a href="https://discord.com/channels/687207715902193673/1493879011808641125">reported the search backend failing to start</a> with <code>TypeError: cannot read properties of undefined (reading 'id')</code>. The culprit was identified as community search backend modules, specifically <code>@backstage-community/search-backend-module-adr</code>, which weren’t updated to match a breaking interface change in the core search backend. Maintainer Ahhhndre identified four affected plugins and committed to releasing fixes by the end of the week, with a <a href="https://github.com/backstage/community-plugins/pull/8580">tracking PR #8580</a> open in the community plugins repo.</p><h3>📚 NFS migration docs need significant work</h3><p>Two separate threads this week highlighted gaps in the New Frontend System migration documentation. In <a href="https://discord.com/channels/687207715902193673/1491892650939383809">#techdocs</a>, a team mid-migration shared a detailed list of missing guidance: how to distinguish between extension overrides, blueprints, and extension config; how to handle custom EntityPage cards and plugin pages; why plugin auto-discovery silently fails when a plugin is also imported explicitly; and the notorious double-header issue caused by running legacy and modern headers simultaneously. Separately, in <a href="https://discord.com/channels/687207715902193673/1476212110970323045">#frontend-system</a>, Sarabadu shared a <a href="https://dev.to/sarabadu/backstage-logbook-migrating-the-catalog-plugin-to-the-new-frontend-system-f6">dev.to blog post</a> documenting their own catalog plugin migration experience, a valuable community resource filling a gap in the official docs.</p><h3>🤝 Bootstrapping internal plugin contributions is hard</h3><p>The #adoption channel hosted a <a href="https://discord.com/channels/687207715902193673/1493940580407840839">discussion about the challenge of growing internal plugin contributions</a>. Sarabadu noted a recurring pattern where teams build internal tools on their own servers rather than contributing plugins to the company Backstage instance. Their team is experimenting with reducing setup friction, adding plugin starter templates, and reframing the message as "you don't need to be a Backstage expert to build a plugin." Commenter drodil added that AI-assisted development has meaningfully lowered the bar. Good instructions now let someone "vibe code a plugin in a single prompt."</p><h3>🔧 Scaffolder form decorator API conflict after v1.47</h3><p>A <a href="https://discord.com/channels/687207715902193673/1493909066433564782">thread in #scaffolder</a> surfaced an <code>API_FACTORY_CONFLICT</code> error affecting teams upgrading to the New Frontend System: <code>plugin.scaffolder.form-decorators is already provided by plugin 'scaffolder', cannot also be provided by 'app'</code>. The conflict stems from a change introduced around v1.47 where the Scaffolder's <code>formDecoratorsApiRef</code> moved, and custom form decorators registered in <code>App.tsx</code> now collide with the plugin's own registration. A community member posted a code sample showing the correct NFS extension approach, and the thread links to the Backstage Experimental Features documentation for Scaffolder.</p><h2>Changelog</h2><h3>v1.50.2</h3><p>Released April 18, 2026</p><p>Highlights:</p><ul><li>TechDocs sidebar positioning now configurable via CSS custom properties</li><li>Zod dependency bumped to v4 for packages using <code>configSchema</code></li><li>Patch release addressing minor issues from v1.50.0</li></ul><p>Full changelog: <a href="https://github.com/backstage/backstage/releases/tag/v1.50.2">https://github.com/backstage/backstage/releases/tag/v1.50.2</a></p><h3>v1.51.0-next.0</h3><p>Released April 21, 2026</p><p>Highlights:</p><ul><li>First prerelease of v1.51 cycle</li><li>Available for testing on the next channel</li><li>Includes ongoing New Frontend System improvements</li></ul><p>Full changelog: <a href="https://github.com/backstage/backstage/releases/tag/v1.51.0-next.0">https://github.com/backstage/backstage/releases/tag/v1.51.0-next.0</a></p><hr><p>Read past issues: <a href="https://roadie.io/backstage-weekly/">https://roadie.io/backstage-weekly/</a></p>
]]></content:encoded></item><item><title><![CDATA[v1.50.0 Release, BackstageCon Recordings, and Context Engineering]]></title><link>https://roadie.io/backstage-weekly/130-v1-50-0-backstagecon-context-engineering/</link><guid isPermaLink="false">https://roadie.io/backstage-weekly/130-v1-50-0-backstagecon-context-engineering/</guid><pubDate>Mon, 20 Apr 2026 14:00:00 GMT</pubDate><description><![CDATA[Backstage v1.50.0 ships as a stable release, BackstageCon Amsterdam recordings go live on YouTube, and we published a deep dive on why RAG is one retrieval primitive inside a production context engineering system.]]></description><content:encoded><![CDATA[<p>Backstage v1.50.0 landed as a stable release on April 14 with several breaking changes. The full BackstageCon Amsterdam 2026 recordings went live on YouTube, and ING Bank announced plans to open-source their "Golden Path" and "Contributions Plugin." We published a technical deep dive on context engineering, examining why production AI systems fail when all context is routed through vector retrieval. The community discussed new frontend system migration challenges, proposed an Entity Patch plugin for direct catalog updates, and welcomed a new TechDocs contributor after KubeCon.
<img src="https://img.youtube.com/vi/93M6jStFEf4/maxresdefault.jpg" alt="BackstageCon Amsterdam 2026"></p><h3>Backstage v1.50.0 stable release with breaking changes</h3><p>Backstage <a href="https://github.com/backstage/backstage/releases/tag/v1.50.0">v1.50.0</a> landed on April 14 as a stable release. This release includes several breaking changes that teams should review before upgrading, including changes to identity token ownership claims, the removal of deprecated APIs, and updates to Backstage UI components.</p><p>Key breaking changes include the identity token ownership claim being removed by default (reducing token size), Standard Schema replacing the deprecated <code>createSchemaFromZod</code> helper, and React 18 becoming the minimum supported version. See the <a href="https://github.com/backstage/backstage/releases/tag/v1.50.0">full release notes</a> and <a href="https://backstage.io/docs/releases/v1.50.0/">v1.50.0 migration documentation</a> for detailed upgrade instructions.</p><h3>BackstageCon Amsterdam 2026 recordings available, ING Bank to open-source plugins</h3><p>The full <a href="https://www.youtube.com/playlist?list=PLj6h78yzYM2Py6kX3NDSsM53wAzF2JkV7">BackstageCon Amsterdam 2026 YouTube playlist</a> went live on April 14. The community had been waiting for the complete set of talks from the co-located KubeCon Europe event since "The State of Backstage in 2026" by Ben Lambert and Patrik Oldsberg from Spotify went up a few days earlier.</p><p>During their BackstageCon talk, ING Bank announced plans to release two of their internal plugins as open source: "Golden Path" and "Contributions Plugin." The community spotted the announcement <a href="https://discord.com/channels/687207715902193673/1211692810294788126/1493645126466277447">in #plugins</a>. The plugins were not yet in the community repository at the time of writing, but the community is watching closely for a release date.</p><h3>Context engineering covers more ground than RAG</h3><p><img src="//images.ctfassets.net/hcqpbvoqhwhm/4acJlQUWgCHnBDsA0TQyJu/fba1aaa5746be1d75b4f85572fded864/image1.png" alt="Why Conflating RAG with Context Engineering Costs You in Production">
We published a technical deep dive this week on why production AI systems fail when treating retrieval augmented generation as a complete context engineering system. The piece examines how context engineering involves intentionally designing every slot in an LLM’s context window, with RAG serving as one retrieval primitive within that system.</p><p>An AI ops agent that routes all queries through a vector store has wired up one context slot out of six. The remaining five depend on source systems with entirely different query mechanisms. When an agent escalates an incident to the wrong team, the runbook content is often correct, but the ownership data is stale because ownership records live as structured entity metadata in a service catalog rather than as documentation chunks in a vector index.</p><p>The article covers six distinct context source categories used in production systems: system prompts, structured entity metadata, conversation history, retrieved documents via RAG, tool call outputs, and agent working memory. Each source has different authority and staleness characteristics. A system prompt updated by a senior engineer carries different authority than a documentation chunk reflecting last year’s architecture. An entity graph record updated when service ownership changes is more authoritative for ownership questions than any passage in a runbook.</p><p>The highest value context is usually structured entity metadata, including service ownership, dependency graphs, on-call assignments, and API configurations. These change faster than documentation can keep up. The article includes a production architecture diagram showing how an incident triage agent assembles context from all six sources at once, including an entity graph, a vector store, and live APIs.</p><p>Read the full article: <a href="https://roadie.io/blog/rag-vs-context-engineering-production/">Context Engineering Is Not RAG: Here's the Difference</a></p><h2>Community Discussions</h2><h3>🧭 NavContentBlueprint breaking on 1.46 to 1.49 upgrade</h3><p>With 38 messages, the <a href="https://discord.com/channels/687207715902193673/1491719629087834265">most active thread in #frontend-system</a> this week was about an error thrown during the new frontend system upgrade: <code>NavContentBlueprint</code> returning <code>navItems is undefined</code>. The issue turned out to be caused by a user accidentally including <code>if(!navItems) return &#x3C;>&#x3C;/></code> in their component, which triggered an apiRef resolution error. The thread works as a debugging walkthrough for anyone migrating from the legacy frontend to the new BUI-based system.</p><h3>🧩 New community plugin: Entity Patch</h3><p>Sarabadu <a href="https://discord.com/channels/687207715902193673/1211692810294788126/1492995960853496010">proposed a new community plugin</a> called <strong>Entity Patch</strong> (<a href="https://github.com/backstage/community-plugins/pull/8510">PR #8510</a>) that lets teams update catalog entity metadata directly from the Backstage UI, with no YAML editing, custom frontend, or deployments required. The motivation was that Entra/Azure AD group custom fields are unreliable as a source of truth, and some teams need a lightweight escape hatch for manual data corrections.</p><h3>🔐 Axios security upgrade: Self-serve solution available</h3><p>Questions arose in <a href="https://discord.com/channels/687207715902193673/1493191312902459522">#general</a> about when the axios security upgrade in <a href="https://github.com/backstage/backstage/pull/33826">PR #33826</a> would be released. Maintainer Sarabadu clarified that the change is only in the app scaffolder template (not in Backstage's core package dependencies), meaning teams can immediately upgrade their own instance by running <code>yarn why axios</code> and <code>yarn up -R axios</code>. freben also linked to the <a href="https://backstage.io/docs/overview/threat-model#operator-responsibilities">Backstage Threat Model docs</a> explaining operator responsibilities for dependency management.</p><h3>📚 New TechDocs contributor joins post-KubeCon</h3><p>In #techdocs, Eva Gustavsson <a href="https://discord.com/channels/687207715902193673/1491892650939383809">introduced herself</a> after attending her first KubeCon in Amsterdam, where she was mentored by CNCF during the event. Now retired after many years writing documentation at Ericsson, she's looking to contribute to TechDocs and the "How to Guides Hard to Navigate" <a href="https://github.com/backstage/backstage/issues/30062">issue #30062</a>. A good example of the KubeCon hallway track bringing new contributors into the project.</p><h2>Changelog</h2><h3>v1.50.0</h3><p>Released April 14, 2026</p><p><strong>Breaking Changes:</strong></p><ul><li><p><strong>Identity token ownership claim removed by default:</strong> The <code>auth.omitIdentityTokenOwnershipClaim</code> setting now defaults to <code>true</code>. User tokens no longer contain the <code>ent</code> claim with ownership entity refs. Use the <code>userInfo</code> core service to get ownership info instead.</p></li><li><p><strong>Standard Schema replaces createSchemaFromZod:</strong> The deprecated <code>createSchemaFromZod</code> helper has been removed from <code>@backstage/frontend-plugin-api</code>. The new <code>configSchema</code> option accepts direct schema values from Standard Schema compatible libraries like zod v4. Zod v3 schemas require migration to a compatible version.</p></li><li><p><strong>Backstage UI updates:</strong> Header tabs now use <code>HeaderNavTabItem[]</code> instead of <code>HeaderTab[]</code>, with a new <code>activeTabId</code> prop for controlling highlighted tabs. Tab <code>href</code> values are now resolved through router context. The <code>toolbarWrapper</code> element has been removed from <code>PluginHeader</code>. Minimum React version is now 18.</p></li><li><p><strong>Removed deprecated PermissionedRoute:</strong> Use <code>RequirePermission</code> component from <code>@backstage/plugin-permission-react</code>.</p></li><li><p><strong>Removed deprecated signal service exports:</strong> Use <code>SignalsService</code> and <code>DefaultSignalsService</code> instead of the old <code>SignalService</code> and <code>DefaultSignalService</code> exports.</p></li><li><p><strong>Catalog node alpha exports removed:</strong> Several deprecated alpha exports removed from <code>@backstage/plugin-catalog-node/alpha</code>. Use stable exports from <code>@backstage/plugin-catalog-node</code> instead.</p></li><li><p><strong>Location entity refs and update method:</strong> The <code>Location</code> type now includes a required <code>entityRef</code> field. Code that produces <code>Location</code> objects must include this field. New <code>updateLocation</code> method added to <code>CatalogApi</code> and <code>CatalogService</code>.</p></li></ul><p><strong>Highlights:</strong></p><ul><li>New catalog model layer system (alpha, opt-in) for declaring and extending entity kinds, annotations, and relations using JSON Schema</li><li>Experimental embedded Postgres support for local development</li><li>New <code>DialogApi.open()</code> method</li><li>Enhanced Backstage UI components, including Badge, RangeSlider, and CheckboxGroup</li></ul><p>See the <a href="https://backstage.io/docs/releases/v1.50.0/">v1.50.0 migration documentation</a> for detailed upgrade guidance.</p><p>Full changelog: <a href="https://github.com/backstage/backstage/releases/tag/v1.50.0">https://github.com/backstage/backstage/releases/tag/v1.50.0</a></p><hr><p>Read past issues: <a href="https://roadie.io/backstage-weekly/">https://roadie.io/backstage-weekly/</a></p>
]]></content:encoded></item><item><title><![CDATA[Catalog Model Fragments RFC, OAuth Fix & Finland Meetup]]></title><link>https://roadie.io/backstage-weekly/129-catalog-model-fragments-rfc-oauth-fix-finland-meetup/</link><guid isPermaLink="false">https://roadie.io/backstage-weekly/129-catalog-model-fragments-rfc-oauth-fix-finland-meetup/</guid><pubDate>Mon, 13 Apr 2026 13:00:00 GMT</pubDate><description><![CDATA[freben proposes Catalog Model Fragments to formalize entity model extensions, v1.49.4 fixes OAuth regression affecting AI tools, and the first Backstage Finland User Group meetup is announced for May.
]]></description><content:encoded><![CDATA[<p>Core maintainer freben published a mini-RFC proposing Catalog Model Fragments, a new system for plugins to formally declare and extend the entity model. Backstage v1.49.4 shipped with an OAuth 2.0 fix affecting MCP and AI tool integrations. The community explored building Backstage MCP servers inspired by Spotify's AiKA, discussed Zod schema incompatibility blocking v1.49.x upgrades, and surfaced patterns for running multiple environments on shared PostgreSQL servers. A yarn tsc out-of-memory issue after Zod upgrades generated substantial discussion. The first Backstage Finland User Group meetup was announced for May 19 in Helsinki. April Fools brought a Windows 95-themed Backstage UI complete with Clippy assistant.</p><p><img src="https://secure.meetupstatic.com/photos/event/3/2/7/4/highres_533592916.webp?w=640" alt="Backstage Finland User Group"></p><h3>Catalog Model Fragments RFC: Formalizing entity model extensions</h3><p>Core maintainer freben <a href="https://discord.com/channels/687207715902193673/923144214580191282/1490702946533638274">announced in #catalog</a> that he'd opened a mini-RFC on GitHub (<a href="https://github.com/backstage/backstage/issues/33770">issue #33770</a>) calling for community input on a new alpha system for declaring, extending, and introspecting the catalog entity model. The proposal would let plugins register their own entity model fragments (custom fields, relationships, or metadata schemas) in a structured way that the catalog engine can reason about, rather than relying on ad hoc conventions.</p><p>The current model treats the catalog schema as implicit. Plugins add fields or relationships through convention, but there's no formal registration mechanism. This makes it difficult for tools to discover what fields are valid, for validation to catch schema drift, and for documentation to stay synchronized with actual usage. The RFC treats this as an API review opportunity ahead of implementation. Comment on the issue directly if you've ever wished plugins could formally advertise what they add to the catalog.</p><h3>v1.49.4 ships with OAuth fix for MCP and AI integrations</h3><p>Backstage <a href="https://github.com/backstage/backstage/releases/tag/v1.49.4">v1.49.4</a> landed on April 7 with a focused set of fixes. It addresses a previous regression where the OAuth 2.0 Protected Resource Metadata endpoint was returning the wrong URL, affecting MCP and AI tool integrations. It also fixes an incorrect legacy-frontend-plugin template name and several other minor issues.</p><p>The OAuth fix solved an issue where Backstage actions worked fine with GitHub Copilot in VS Code but failed with Claude Code. The community had already flagged this in <a href="https://discord.com/channels/687207715902193673/1034089724664610938">#backend-system</a>, and <a href="https://github.com/backstage/backstage/pull/33092">PR #33092</a> resolves it by correcting the metadata endpoint response.</p><h3>First Backstage Finland User Group meetup announced for May</h3><p>The <a href="https://www.meetup.com/backstage-finland-user-group/events/314169878/">Backstage Finland User Group</a> is hosting its inaugural meetup on Tuesday, May 19, 2026, the day before KubeCon Community Day in Helsinki. The event was <a href="https://discord.com/channels/687207715902193673/831533806899953715/1491302094190153890">announced in #meetups</a> by drodil on April 8. The community-organized event includes knowledge sharing, live demos, and networking. Speakers are welcome to present. Contact drodil directly if you're interested.</p><h2>Community Discussions</h2><h3>🤖 Community wants to build a Backstage MCP, inspired by Spotify's AiKA</h3><p>A Spotify R&#x26;D video titled "Build like Vincenzo: AiKA | Spotify for Backstage" sparked an <a href="https://discord.com/channels/687207715902193673/1489259833579409458">8-message thread in #general</a>, with community members asking about the MCP tooling used in the demo. SonilPro's team is trying to build a Backstage MCP server that can answer questions about their system, similar to how AiKA works internally at Spotify. freben joined in and suggested that Backstage's TechDocs search action would be a natural starting point for MCP tool definitions in documentation lookup use cases. Teams are actively exploring how to expose Backstage's catalog as context for AI coding agents, and this thread is a good snapshot of where that work stands.</p><h3>🔐 Service account vs. user token: permissions in multi-tool Backstage</h3><p>A <a href="https://discord.com/channels/687207715902193673/1489540420215111732">thread in #auth</a> surfaced a common architectural tension: when Backstage integrates with tools like Bitbucket, Jenkins, Kubernetes, and Jira via Keycloak, teams often use a shared service account token for backend-to-service communication, bypassing individual user permissions. This is particularly concerning when AI agents are granted Backstage access to open PRs. The thread explored whether Backstage should proxy user-scoped JWT tokens to downstream services and whether the permissions framework should support federated permission checks from external systems. No clear solution emerged, but teams building AI-augmented pipelines will increasingly run into this design problem.</p><h3>🔑 Zod schema incompatibility blocking upgrades to v1.49.x</h3><p>Jon Koops opened a <a href="https://discord.com/channels/687207715902193673/1489207408218734794">6-message thread in #general</a> requesting a backport of PR #33536 to the v1.49.x line. The change, which refactors APIs to use <code>TSchema extends ZodType</code> instead of <code>ZodSchema&#x3C;Output, ZodType...></code> decomposition, is blocking downstream consumers who can't jump directly to v1.50. freben explained that the team generally doesn't backport breaking-change fixes to stable branches, and the pragmatic workaround is a Yarn <code>resolution</code> override. A related <a href="https://discord.com/channels/687207715902193673/1006844959170764851/threads/1491001601740116059">#support thread</a> posted April 7 is also asking about Zod v4.x compatibility, and is still awaiting a maintainer response.</p><h3>🏗️ Running multiple Backstage environments on one PostgreSQL server</h3><p>A <a href="https://discord.com/channels/687207715902193673/1488838813538062467">thread in #general</a> explored how to isolate multiple Backstage environments (for example, <code>idp_dev</code> and <code>idp_uat</code>) on a single shared PostgreSQL server. Backstage creates one database per plugin (catalog, app, search), so running two full environments means managing <code>TOTAL_PLUGINS × N_ENVIRONMENTS</code> databases, which gets unwieldy fast. The thread covered schema-naming conventions and whether a shared server is actually worth the operational complexity compared to dedicated instances per environment.</p><h3>💾 yarn tsc out of memory after Zod upgrade</h3><p>A <a href="https://discord.com/channels/687207715902193673/1006844959170764851/threads/1488809734441144422">#support thread</a> from April 1 hit on a widespread pain point: after updating to recent Backstage versions, <code>yarn tsc</code> crashes with a JS heap out-of-memory error. Dinesh confirmed that updating from Zod v3 to Zod v4 resolved the OOM, and freben added context: ensure everything is at least <code>^3.25.0</code>, prefer <code>import { z }</code> over <code>import z</code>, and use <code>from 'zod/v3'</code> explicitly to avoid the v3/v4 ambiguity. A related <a href="https://discord.com/channels/687207715902193673/1483759483950862421">thread in #general</a> from the same week noted that migrating from the deprecated <code>makeFieldSchemaFromZod</code> to <code>makeFieldSchema</code> also stopped the OOM during type-checking.</p><h3>😄 Entity provider with delta mutation: How does it actually work?</h3><p>In a <a href="https://discord.com/channels/687207715902193673/1006844959170764851/threads/1488216961140920433">13-message thread in #support</a>, Enri Kapaj from Red Hat asked how delta-type entity providers know when to fire. Full-mutation providers run on a schedule you define, but delta providers are event-driven with no obvious wiring. freben clarified that some listen to PubSub messages, some run on a cadence, and some are triggered by API calls from a custom backend plugin. The catalog engine receives mutation commands without caring about the source. This thread is now a solid community reference for anyone building event-driven entity ingestion.</p><h3>📝 app-config.yaml intellisense: The community wants it, it's just hard</h3><p>Sarabadu kicked things off with a well-received meme ("I don't know if there is an easy way to get app-config intellisense, and at this point I'm too afraid to ask") that triggered an <a href="https://discord.com/channels/687207715902193673/1489734293818445927">8-message thread</a> about IDE support for <code>app-config.yaml</code>. Partial intellisense exists for the core framework via <code>config.d.ts</code> schema files, but it doesn't extend to installed community plugins. freben noted that plugin schema discovery is non-trivial, but hinted that the output of <code>backstage-cli config:schema</code> could potentially feed into standard VS Code JSON schema tooling. freben replied on April 7, so it's worth watching.</p><h3>😂 April Fools: Windows 95-themed Backstage UI with Clippy</h3><p>The community marked April 1 in their own way. Ballpointcarrot <a href="https://discord.com/channels/687207715902193673/1489008598901198968">shared a Windows 95-themed Backstage UI</a> complete with a "Clippy"-style assistant with benji saying it was better than his own half-finished "Backstage premium subscription plugin" joke. The "Backstage is dead" LinkedIn post shared by drodil ( from Zohar Einy and Spotify for Backstage) prompted a <a href="https://discord.com/channels/687207715902193673/1488903320377495655">6-message thread</a> including freben quipping "...you'd be poor 😂".</p><h2>Changelog</h2><h3>v1.49.4</h3><p>Released April 7, 2026</p><p>Highlights:</p><ul><li>Fixed OAuth 2.0 Protected Resource Metadata endpoint returning wrong URL (affecting MCP and AI tool integrations)</li><li>Corrected legacy-frontend-plugin template name</li><li>Additional minor bug fixes</li></ul><p>Full changelog: <a href="https://github.com/backstage/backstage/releases/tag/v1.49.4">https://github.com/backstage/backstage/releases/tag/v1.49.4</a></p><h3>v1.50.0-next.2</h3><p>Released April 7, 2026</p><p>Highlights:</p><ul><li>Second prerelease of v1.50 cycle</li><li>Continues work from v1.50.0-next.1</li></ul><p>Full changelog: <a href="https://github.com/backstage/backstage/releases/tag/v1.50.0-next.2">https://github.com/backstage/backstage/releases/tag/v1.50.0-next.2</a></p><hr><p>Read past issues: <a href="https://roadie.io/backstage-weekly/">https://roadie.io/backstage-weekly/</a></p>
]]></content:encoded></item><item><title><![CDATA[BackstageCon Recordings, DevLake Plugin, and Two New Releases]]></title><link>https://roadie.io/backstage-weekly/128-backstagecon-recordings-devlake-plugin-new-releases/</link><guid isPermaLink="false">https://roadie.io/backstage-weekly/128-backstagecon-recordings-devlake-plugin-new-releases/</guid><pubDate>Mon, 06 Apr 2026 13:00:00 GMT</pubDate><description><![CDATA[BackstageCon recordings are live, Unity contributes a DevLake DORA plugin, and the community surfaces critical upgrade issues in two releases shipped this week.]]></description><content:encoded><![CDATA[<p>BackstageCon Europe 2026 recordings are now available, including the KubeCon keynote Live Demo Showcase. We published a technical deep dive on context engineering as the prerequisite enterprise AI deployments are missing, examining why most initiatives stall when context layers are built on unstructured data. Unity's VP of Engineering contributed a DevLake-to-DORA backend module after community validation. The Backstage team shipped two releases (v1.49.3 and v1.50.0-next.1), but v1.49.3 introduced double headers and scaffolder regressions. Community discussions covered supply chain security hardening, plugin isolation architecture, and AI-powered scaffolder experiments replacing traditional templates with Copilot-backed chatbots.</p><p><img src="https://img.youtube.com/vi/cTXlkhKXgyE/maxresdefault.jpg" alt="Backstage: From Spreadsheet to Standard"></p><h3>BackstageCon Europe 2026 recordings now available</h3><p>The recordings from BackstageCon Europe 2026 are now live. The <a href="https://www.youtube.com/watch?v=cTXlkhKXgyE&#x26;t=298s">KubeCon keynote Live Demo Showcase</a> is available on YouTube, along with the CNCF documentary "Backstage: From Spreadsheet to Standard."</p><p>Co-chair balajisiva <a href="https://discord.com/channels/687207715902193673/687207715902193679/1487105297603494128">shared raw community feedback in #general</a> from the event. Highlights from the "what's working" side included good adoption momentum, easy upgrades, MCP actions becoming useful, and the flexible entity model. Pain points included ESM support gaps, breaking changes between minor versions, the complexity of the new frontend system, and keeping YAML-based component definitions in sync.</p><h3>Context engineering: The prerequisite your enterprise AI deployment is missing</h3><p>We published a technical piece this week on why most enterprise AI initiatives stall. It looks at context engineering as an architectural discipline that determines whether LLMs have accurate, current, and scoped information at inference time. The piece covers four layers: data collection and normalization, semantic modeling and entity resolution, retrieval strategy design, and context validation.</p><p>Enterprises accumulate context debt when LLM features are built on unstructured context layers. Service metadata sits distributed across GitHub, Jira, PagerDuty, Confluence, and custom CMDBs with no consistent schema. Ownership modeling defaults to ad hoc assignments with no canonical identity. Almost no tooling tracks lineage by default.</p><p>The guide includes a context readiness audit with five critical questions to ask before shipping your next AI feature. Five yes answers mean your context layer is ready to support an LLM feature. Fewer than five means you still have some architectural work to do. We also argue that a well-maintained software catalog already gives you the critical foundation for context infrastructure.</p><p>→ <a href="https://roadie.io/blog/context-engineering-enterprise-ai-prerequisite/">Read the full article</a></p><h3>Unity contributes DevLake DORA metrics plugin</h3><p>Miki Lior (VP Engineering at Unity) contributed a new <a href="https://github.com/backstage/community-plugins/pull/8364">DevLake-to-DORA Backend Module</a> after an <a href="https://discord.com/channels/687207715902193673/1211692810294788126/threads/1484915554996195399">18-message community validation thread in #plugins</a>. The plugin bridges Apache DevLake's engineering metrics API directly to the standard Backstage DORA plugin, featuring a new <code>EntityDoraCard</code> for the Catalog Overview, a Secure SQL Proxy for DevLake v1.0.2, and full compatibility with the new Backend System architecture. If your organization uses DevLake for engineering metrics, this provides a direct path to surface DORA metrics in your internal developer portal.</p><h3>Two releases this week, v1.49.3 ships with regressions</h3><p>The Backstage team shipped two releases in the past week. <a href="https://github.com/backstage/backstage/releases/tag/v1.49.3">v1.49.3</a> landed on March 28 with accidentally self-deprecating release notes. Maintainer freben forgot that the automation would take the release note text verbatim, resulting in notes that read "I messed up #33600 in a silly way so ... made this instead" (it got its own <a href="https://discord.com/channels/687207715902193673/687207715902193679/threads/1488081472337219604">#silly-goose thread</a>). <a href="https://github.com/backstage/backstage/releases/tag/v1.50.0-next.1">v1.50.0-next.1</a> landed on March 31, kicking off the next minor release cycle.</p><p>v1.49.3 introduced two significant regressions. Users upgrading from v1.48.3 to v1.49.3 are seeing <a href="https://discord.com/channels/687207715902193673/1101159492298743808/threads/1488185135953084449">two page headers render on most pages</a> in the new frontend system. Adam (tty0) <a href="https://discord.com/channels/687207715902193673/923143744176418836/threads/1486791112147337287">reported in #scaffolder</a> that v1.49.x broke the NFS custom field explorer, affecting both the template editor and custom field extension loading. Adam already opened <a href="https://github.com/backstage/backstage/pull/33599">PR #33599</a> to fix the scaffolder issue, so a patch should arrive soon. If you're planning to upgrade to v1.49.3, monitor these threads for fixes before pulling the trigger.</p><h2>Community Discussions</h2><h3>Supply chain security: yarn-install action uses version refs instead of hashes</h3><p>In #maintenance, a contributor from INGKA (IKEA Group) flagged that <code>backstage/actions/yarn-install</code><a href="https://discord.com/channels/687207715902193673/1201559534754345110/1488495628152475739">still pins its cache action using a version tag rather than a full commit hash</a>, which fails stricter supply chain security policies such as those required by the trivy toolchain. INGKA already issued an internal fix and opened <a href="https://github.com/backstage/actions/pull/184">PR #184</a> to pin the cache action version to a hash upstream. Teams using GitHub Actions with hardened supply chain policies should be aware of this until the fix is merged.</p><h3>Backend startup failure when upgrading from v1.46 to v1.47+</h3><p>A <a href="https://discord.com/channels/687207715902193673/1006844959170764851/threads/1486729815938699264">busy support thread</a> (21 messages) tackled a common pain point when upgrading from v1.46.x to v1.47+. The backend throws <code>Plugin 'catalog' startup failed; service or extension point dependencies of plugin 'catalog' are missing: serviceRef{alpha.core.metrics}</code> because the new alpha metrics service needs to be explicitly imported. The fix is to add <code>import { rootSystemMetadataServiceFactory } from '@backstage/backend-defaults/alpha'</code> to your <code>backend/index.ts</code>. A helpful tip from the thread: use <code>yarn why &#x3C;package-name></code> to diagnose version mismatches when upgrading.</p><h3>Plugin isolation and data access security architecture</h3><p>A <a href="https://discord.com/channels/687207715902193673/1041734397369532487/threads/1486363040407355452">12-message thread in #security</a> explored whether Backstage's plugin architecture provides sufficient isolation to prevent a compromised plugin from accessing sensitive data in other plugins via <code>code.api</code> calls. The thread examined whether Backstage's permissions framework can be used to restrict inter-plugin access. Peter "Parsifal-M" mentioned that OPA (Open Policy Agent) can help with this. The thread also discussed whether Dependabot surfaces community plugin vulnerabilities. Teams running Backstage in high-security environments should treat this as an open architectural question.</p><h3>Announcements plugin docs fixed after community-reported confusion</h3><p>A <a href="https://discord.com/channels/687207715902193673/1211692810294788126/threads/1487094223521058840">15-message thread in #plugins</a> surfaced that the documentation for configuring <code>NewAnnouncementsBanner</code> was incorrect. Specifically, the config key documented in <code>app-config.yaml</code> for disabling the banner didn't actually work. Community member Tyson tracked down the issue, and contributor kurtaking opened <a href="https://github.com/backstage/community-plugins/pull/8363">PR #8363</a> to fix the docs and add instructions for how to properly disable the banner.</p><h3>Scaffolder + AI: Replacing templates with Copilot-backed chatbots</h3><p>A discussion started in <a href="https://discord.com/channels/687207715902193673/923143744176418836">#scaffolder</a> when goldbug1 described experimenting with the <code>copilot-sdk</code> to replace traditional scaffolder templates with an AI-powered "create new app" chatbot backed by GitHub Copilot.
The chatbot uses Backstage scaffolder actions as tools so it can scaffold apps the same way a template would. The thread attracted community commentary and is an early signal of how teams are exploring AI-augmented scaffolding.</p><h3>Zod v3 to v4 migration underway internally</h3><p>A March 27 post in #general noted that the internal migration of <code>@backstage/backend-defaults</code> from Zod v3 to v4 is in progress (<a href="https://github.com/backstage/backstage/actions/runs/23655426685/job/68911291239?pr=33629">linked commit</a>). This is relevant for anyone building plugins that depend on Backstage's internal Zod usage, and for plugin maintainers who may want to align their own Zod versions ahead of any downstream breaking changes.</p><h2>Changelog</h2><h3>v1.49.3</h3><p>Released March 28, 2026</p><p>Highlights:</p><ul><li>Contains regressions: double headers in new frontend system, broken NFS custom field explorer</li><li>Accidentally self-deprecating release notes (automation artifact)</li><li>Patches expected soon</li></ul><p>Full changelog: <a href="https://github.com/backstage/backstage/releases/tag/v1.49.3">https://github.com/backstage/backstage/releases/tag/v1.49.3</a></p><h3>v1.50.0-next.1</h3><p>Released March 31, 2026</p><p>Highlights:</p><ul><li>First prerelease of v1.50 minor release cycle</li><li>Continues work from v1.50.0-next.0</li></ul><p>Full changelog: <a href="https://github.com/backstage/backstage/releases/tag/v1.50.0-next.1">https://github.com/backstage/backstage/releases/tag/v1.50.0-next.1</a></p><hr><p>Read past issues: <a href="https://roadie.io/backstage-weekly/">https://roadie.io/backstage-weekly/</a></p>
]]></content:encoded></item><item><title><![CDATA[KubeCon Recap, 4 Backstage Releases & Context Engineering Explained]]></title><link>https://roadie.io/backstage-weekly/127-kubecon-recap-backstage-releases-context-engineering/</link><guid isPermaLink="false">https://roadie.io/backstage-weekly/127-kubecon-recap-backstage-releases-context-engineering/</guid><pubDate>Mon, 30 Mar 2026 13:00:00 GMT</pubDate><description><![CDATA[KubeCon Europe recap, four Backstage releases in one week, the CNCF documentary premiere, and a closer look at why context engineering is becoming the real challenge for AI systems.]]></description><content:encoded><![CDATA[<p>A sprint week at KubeCon delivered four Backstage releases (v1.49.0 through v1.49.2, plus v1.50.0-next.0), fixing regressions and launching the next cycle. The CNCF documentary "Backstage: From Spreadsheet to Standard" premiered at KubeCon Amsterdam. Roadie's team presented on AI context engineering and agentic catalog management at BackstageCon Europe. A new piece from Roadie examines why most AI systems fail at the context engineering layer rather than the prompt. The community surfaced critical production issues, including PostgreSQL deadlocks in multi-replica deployments and TypeScript compiler OOMs after v1.49.0 upgrades.</p><p><img src="https://www.cncf.io/wp-content/uploads/2025/08/KCCNC-EU-25-CFP-1.jpg" alt="Backstage Logo"></p><h3>BackstageCon Europe 2026</h3><p>BackstageCon Europe 2026 took place on March 23 at RAI Amsterdam as a co-located event with KubeCon + CloudNativeCon Europe, featuring talks on AI integration with platform engineering, agentic software catalogs, and production patterns.</p><p>Roadie's team participated with two presentations. David Tuite delivered a <a href="https://colocatedeventseu2026.sched.com/event/2Djmz/backstagecon-sponsored-keynote-ai-cant-use-data-it-doesnt-have-david-tuite-roadie">sponsored keynote titled "AI Can't Use Data it Doesn't Have"</a>, covering how to provide AI the context it needs. He demoed live how Roadie can help platform teams use agents in production with 34% better answer correctness than direct MCP and up to 88% less token usage.</p><p>Sam Nixon presented <a href="https://colocatedeventseu2026.sched.com/event/2DY30/agentic-backstage-how-to-manage-an-ai-software-catalog-sam-nixon-roadie">"Agentic Backstage: How To Manage an AI Software Catalog"</a>, examining how autonomous agents increasingly become the primary users of engineering systems. When your software catalog serves AI agents, it needs fresher metadata, traversable relationships, structured low-token output, and actionability behind proper permissions. Provider-based ingestion beats manual YAML authoring at scale, and relationships matter more than perfect taxonomy.</p><p>Other BackstageCon sessions included <a href="https://kccnceu2026.sched.com/event/2EF6r/the-state-of-backstage-in-2026-ben-lambert-patrik-oldsberg-spotify">"The State of Backstage in 2026"</a> from core maintainers Ben Lambert and Patrik Oldsberg, and the <a href="https://kccnceu2026.sched.com/event/2EF7v/contribfest-supercharge-your-open-source-impact-backstage-contribfest-live-andre-wanlin-emma-indal-spotify-heikki-hellgren-op-financial-group-elaine-bezerra-db-systel-gmbh">Backstage ContribFest</a> for contributors to make direct open source impact. If you’ve been thinking about contributing, you can check out the [Getting Started Guide] (https://contribfest.backstage.io/getting-started/)
Available recordings from these sessions will be shared in upcoming newsletters.</p><p>The CNCF documentary "Backstage: From Spreadsheet to Standard" <a href="https://kccnceu2026.sched.com/event/2ILJt/documentary-premiere-backstage-from-spreadsheet-to-standard">premiered at KubeCon + CloudNativeCon Europe</a>. The film, produced with support from Spotify and Roadie, traces how Backstage evolved from an internal Spotify tool into a CNCF standard for developer portals. The documentary is <a href="https://youtu.be/gJHYTlO0VwA">now available on YouTube</a>.</p><p><a href="https://youtu.be/gJHYTlO0VwA"><img src="https://img.youtube.com/vi/gJHYTlO0VwA/maxresdefault.jpg" alt="Backstage: From Spreadsheet to Standard"></a></p><h3>Prompt Engineering vs Context Engineering: Roadie explains why AI systems fail</h3><p>Roadie published a technical guide this week on the distinction between prompt engineering (how you phrase instructions) and context engineering (what information actually reaches the model). As Andrej Karpathy frames it, the LLM is the CPU, and the context window is RAM. Everything the model can reason about must fit into that buffer before generation starts.</p><p>The guide argues that most AI projects fail because of poor context inputs rather than model limitations. A service dependency agent can have a perfectly crafted system prompt and still hallucinate answers when it runs without the relevant catalog metadata. The same prompt with actual entity data injected produces correct, grounded results, with the improvement coming entirely from what gets loaded into the context window.</p><p>The article examines four failure patterns that prompt-only approaches can't solve. <a href="https://arxiv.org/abs/2307.03172">Stanford's "Lost in the Middle" research</a> shows models ignore content in the middle of 20 documents, meaning positional attention degrades recall on long contexts. Context rot hits before token limits, with performance dropping as context grows even under 128K tokens. Static prompts can't track dynamic systems, so the model doesn't know that the on-call rotation shifted or the runbook was updated. Uncontrolled context produces non-determinism that's impossible to debug, where the same prompt yields different outputs with no way to reproduce them.</p><p>The guide includes a production context pipeline architecture, Python code for wiring the Backstage Catalog API into a retrieval pipeline, and a comparison table showing how prompt engineering and context engineering differ in scope, ownership, and failure modes.</p><p>Read the full article: https://roadie.io/blog/prompt-engineering-vs-context-engineering/</p><p><strong>Backstage ships v1.49.0 through v1.50.0-next.0 in one week</strong></p><p>The Backstage team shipped four releases between March 18-24. v1.49.0 dropped on March 18 with the New Frontend System 1.0 RC as the new default, marking a milestone in the platform's evolution. Patch releases v1.49.1 (March 20) and v1.49.2 (March 22) followed quickly to address regressions. The patch releases added a <code>titleLink</code> prop to <code>PageLayoutProps</code> so plugin header titles can link back to the plugin root, removed the now-unnecessary <code>@backstage/cli-module-new</code> package, and fixed OIDC/CIMD redirect URI matching to support any port on loopback addresses. The v1.50.0‑next.0 prerelease landed on March 24, opening the next release cycle.</p><p>Full release notes: <a href="https://github.com/backstage/backstage/releases/tag/v1.49.0">v1.49.0</a>, <a href="https://github.com/backstage/backstage/releases/tag/v1.49.1">v1.49.1</a>, <a href="https://github.com/backstage/backstage/releases/tag/v1.49.2">v1.49.2</a>, <a href="https://github.com/backstage/backstage/releases/tag/v1.50.0-next.0">v1.50.0-next.0</a></p><h2>Community Discussions</h2><p><strong>PostgreSQL deadlocks in the catalog backend with multiple replicas</strong></p><p>A <a href="https://discord.com/channels/687207715902193673/687207715902193679/threads/1484578906161021029">38-message thread in #general</a> uncovered a serious production issue for anyone running more than one Backstage replica. PostgreSQL deadlocks were occurring in the catalog backend's <code>refresh_state</code> table, surfacing as <code>"PostgreSQL error of type 'error' occurred (code: 40P01)"</code> in OTEL traces. The root cause is concurrent UPDATE statements racing during catalog stitching. Maintainer freben confirmed the first fix was merged and shipped in the <code>-next</code> prerelease on March 24, with the community still investigating a second potential deadlock path in <code>DefaultStitcher</code>. If you're running multiple replicas and seeing this error, watch the -next releases.</p><p><strong>TypeScript compiler OOMs after upgrading to v1.49.0</strong></p><p>Multiple community members hit TypeScript compiler (TSC) <a href="https://discord.com/channels/687207715902193673/1483759483950862421">out-of-memory crashes after upgrading to v1.49.0</a>. Maintainer freben identified the likely cause as mixed zod 3/zod 4 imports causing excessive type-checking memory usage. The fix involves ensuring your workspace uses at least <code>zod@^3.25.0</code>, preferring <code>import { z } from 'zod'</code> over the default import, and using explicit <code>from 'zod/v3'</code> paths where needed. Rugvip confirmed that v1.49.1 also addressed many related header alignment regressions introduced in v1.49.0, describing it as a hectic pre-KubeCon patch sprint.</p><p><strong>Scaffolder dry-run now strips task secrets</strong></p><p>A <a href="https://discord.com/channels/687207715902193673/1006844959170764851/threads/1484188141651755008">#support post</a> flagged that a recent security commit (<code>4f5ed06</code>) removed both environment variables and user-supplied <code>task.secrets</code> from Scaffolder dry-run executions. The change was motivated by preventing secret leakage, but the community noted that user-supplied secrets (distinct from env secrets) are now also stripped, breaking integration test suites that rely on the dry-run API with <code>tasks.secrets</code>. If your team uses dry-run executions for testing, review this before upgrading.</p><p><strong>Unity's VP of Engineering plans a DevLake to Backstage DORA plugin</strong></p><p>In a lively <a href="https://discord.com/channels/687207715902193673/1211692810294788126/threads/1484915554996195399">17-message thread in #plugins</a>, Miki Lior (VP of Engineering at Unity) announced plans to contribute a DevLake-to-DORA community backend module that maps DevLake APIs into the standard Backstage DORA plugin. This gives teams using Apache DevLake a way to surface DORA metrics in their IDP. After feedback from maintainer Ahhhndre (recommending the New Frontend System and Backstage UI components), Miki committed to building it as a community plugin, opening a GitHub issue first to gather feedback on the data mapping design. Unity has production use of DevLake, so long-term maintenance is on the table.</p><p><strong>yarn new template naming conflict in v1.49.0</strong></p><p>Community member Sarabadu spotted a bug in #general. Running <code>yarn new</code> in a fresh v1.49.0 workspace throws <code>Error: Invalid template configuration, received conflicting template name 'frontend-plugin'</code>. The cause is the legacy <code>frontend-plugin</code> template name colliding with the new naming convention. Sarabadu <a href="https://github.com/backstage/backstage/pull/33446">opened a PR (#33446)</a> to rename <code>frontend-plugin</code> to <code>legacy-frontend-plugin</code> as a fix. If you're initializing new Backstage workspaces on v1.49.x, this is worth watching.</p><p><strong>Scaffolder SIG skipped due to KubeCon week</strong></p><p>Blam <a href="https://discord.com/channels/687207715902193673/923143744176418836">posted in #scaffolder</a> that the Backstage Scaffolder SIG meeting was cancelled for the week of March 19 due to the KubeCon Amsterdam schedule and maintainers being heads-down in preparation. Community members with Scaffolder topics were invited to bring them up directly at the KubeCon pavilion instead. Regular SIG cadence should resume after the conference.</p><h2>Changelog</h2><h3>v1.49.0</h3><p>Released March 18, 2026</p><p>Highlights:</p><ul><li>New Frontend System 1.0 RC becomes the default frontend framework</li><li>Breaking changes to Backstage UI package</li><li>AI and MCP improvements</li><li>CLI Module System enhancements</li><li>Predicate-based catalog filtering</li></ul><p>Full changelog: <a href="https://github.com/backstage/backstage/releases/tag/v1.49.0">https://github.com/backstage/backstage/releases/tag/v1.49.0</a></p><h3>v1.49.1</h3><p>Released March 20, 2026</p><p>Highlights:</p><ul><li>Added <code>titleLink</code> prop to <code>PageLayoutProps</code> for plugin header navigation</li><li>Fixed header alignment regressions from v1.49.0</li><li>Addressed zod 3/4 type-checking issues</li></ul><p>Full changelog: <a href="https://github.com/backstage/backstage/releases/tag/v1.49.1">https://github.com/backstage/backstage/releases/tag/v1.49.1</a></p><h3>v1.49.2</h3><p>Released March 22, 2026</p><p>Highlights:</p><ul><li>Removed unnecessary <code>@backstage/cli-module-new</code> package</li><li>Fixed OIDC/CIMD redirect URI matching for loopback addresses</li><li>Additional regression fixes</li></ul><p>Full changelog: <a href="https://github.com/backstage/backstage/releases/tag/v1.49.2">https://github.com/backstage/backstage/releases/tag/v1.49.2</a></p><h3>v1.50.0-next.0</h3><p>Released March 24, 2026</p><p>Highlights:</p><ul><li>First prerelease of v1.50 cycle</li><li>PostgreSQL deadlock fix for multi-replica catalog deployments</li></ul><p>Full changelog: <a href="https://github.com/backstage/backstage/releases/tag/v1.50.0-next.0">https://github.com/backstage/backstage/releases/tag/v1.50.0-next.0</a></p>
]]></content:encoded></item><item><title><![CDATA[New Frontend System Becomes Default, AI Context & IDP Architecture]]></title><link>https://roadie.io/backstage-weekly/126-new-frontend-system-default-ai-context-idp-architecture/</link><guid isPermaLink="false">https://roadie.io/backstage-weekly/126-new-frontend-system-default-ai-context-idp-architecture/</guid><pubDate>Mon, 23 Mar 2026 15:00:00 GMT</pubDate><description><![CDATA[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.]]></description><content:encoded><![CDATA[<p>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 <code>--next</code> flag is now <code>--legacy</code>, 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.</p><p><img src="https://backstage.io/assets/images/backstage-contribfest-kubecon-web-app-header-aa55b2b3a64c012a90f1e0d2fbeb74ab.png" alt="Contibfest"></p><h3>Backstage v1.49.0 ships with New Frontend System 1.0 Release Candidate</h3><p>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 <code>--next</code> flag for <code>create-app</code> has been replaced with a <code>--legacy</code> flag. This is the effective end of a multi-year migration.</p><p>Key changes include significant Backstage UI migrations (entity cards moved from MUI to BUI, new <code>SearchAutocomplete</code>, <code>List</code>, and <code>ListRow</code> components), removal of long-deprecated integrations (Bitbucket, legacy Azure DevOps fields), and new requirements for the <code>ScaffolderApi</code> interface. AI and MCP capabilities expanded with new built-in actions (<code>who-am-i</code>, <code>query-catalog-entities</code>, <code>list-scaffolder-actions</code>, <code>get-scaffolder-task-logs</code>) 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 <code>$all</code>, <code>$any</code>, and <code>$contains</code>, and a new <code>ToastApi</code> replaces <code>AlertApi</code> for rich notifications.</p><p>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 (<code>AnnotateScmSlugEntityProcessor</code> and <code>CodeOwnersProcessor</code>) were deprecated and moved to the Community Plugins repo.</p><p>Full release notes: <a href="https://github.com/backstage/backstage/releases/tag/v1.49.0">https://github.com/backstage/backstage/releases/tag/v1.49.0</a></p><h3>Roadie publishes architectural guide to Backstage and the IDP market</h3><p><img src="https://images.ctfassets.net/hcqpbvoqhwhm/5ho2GN48V9YJynxcMS66eD/0600345f04fe3e54b06f0a0f67a2ae49/image1.png" alt="Backstage architecture diagram"></p><p>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?</p><p>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.</p><p>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 <code>backend.add()</code> 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.</p><p>Read the full guide: <a href="https://roadie.io/blog/backstage-and-its-place-among-developer-portals/">https://roadie.io/blog/backstage-and-its-place-among-developer-portals/</a></p><h3>Your IDP is an AI goldmine: Roadie explains context engineering</h3><p><img src="//images.ctfassets.net/hcqpbvoqhwhm/tN5AR7pE9s4VVydIsj8oh/b67e17b8f83989c1f41cc2dc3fa7fe50/image1.png" alt="Your IDP Is an AI Goldmine"></p><p>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.</p><p>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.</p><p>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.</p><p>Read the full article: <a href="https://roadie.io/blog/idp-ai-goldmine-context-engineering/">https://roadie.io/blog/idp-ai-goldmine-context-engineering/</a></p><h2>Community Discussions</h2><h3>v1.49.0 ships with New Frontend System 1.0 RC</h3><p><a href="https://discord.com/channels/687207715902193673/705123584468582400/1483613555369705562">Backstage v1.49.0 was announced on March 18</a> 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 <code>--next</code> flag for <code>create-app</code> has been inverted to <code>--legacy</code>, and <code>yarn new</code> templates now auto-detect which frontend system your app uses and present the appropriate plugin templates.</p><p>The release also brings significant Backstage UI (BUI) breaking changes: new <code>SearchAutocomplete</code> and <code>List</code>/<code>ListRow</code> components built on React Aria, a <code>virtualized</code> prop on <code>Table</code>, centralized <code>BUIProvider</code> routing requirements, and removal of deprecated CSS tokens and types. Entity cards (<code>EntityAboutCard</code>, <code>EntityLinksCard</code>, <code>EntityLabelsCard</code>, and others) have been migrated from MUI to BUI. Additionally, deprecated Bitbucket and legacy integrations have been removed, and <code>ScaffolderApi</code> methods (<code>retry</code>, <code>listTasks</code>, <code>autocomplete</code>, etc.) are now fully required on implementations.</p><p>The demo site upgraded to 1.49.0-next.2 on March 13 and the full stable release followed on March 18. See the <a href="https://github.com/backstage/backstage/releases/tag/v1.49.0">complete release notes on GitHub</a>.</p><h3>v1.49.0 early upgrade issues: TSC OOMs and double headers</h3><p><a href="https://discord.com/channels/687207715902193673/687207715902193679/threads/1483759483950862421">A thread that started within hours of the release</a> 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 <code>--max-old-space-size=16384</code>, <code>backstage-cli repo lint</code> 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.</p><h3>Framework SIG missed due to Daylight Saving Time confusion</h3><p>A <a href="https://discord.com/channels/687207715902193673/687207715902193679/threads/1483481281735037101">33-message thread in #general</a> 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.</p><p>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.</p><h3>Is NFS the default yet? Community asks about the switchover timeline</h3><p>Jon Koops opened a <a href="https://discord.com/channels/687207715902193673/687207715902193679/threads/1483495541991276749">short thread in #general</a> on March 17, asking whether it made sense to make the New Frontend System the default for <code>create-app</code>, noting that the <code>--next</code> 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.</p><h3>NFS migration challenges: Scaffolder TaskPageComponent missing and routing gaps</h3><p>Multiple discussions in <a href="https://discord.com/channels/687207715902193673/1101159492298743808/threads/1481889254559977533">#frontend-system</a> this week showed that teams are actively attempting the NFS migration and running into real gaps. One team (arlamaeen, March 5) discovered that <code>TemplateWizardPageProps</code> in the NFS scaffolder alpha doesn't expose a <code>TaskPageComponent</code> 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 <a href="https://discord.com/channels/687207715902193673/1101159492298743808/1481516281151754320">blank page on the base route after migrating the homepage</a>. A separate thread showed teams struggling with custom routing for entity pages and the K8s plugin. Community member Sarabadu shared a <a href="https://dev.to/sarabadu/backstage-logbook-migrating-the-catalog-plugin-to-the-new-frontend-system-f6">practical migration logbook on dev.to</a> (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.</p><h3>RBAC + OIDC role mapping: Dynamic role assignment from Keycloak</h3><p>A detailed <a href="https://discord.com/channels/687207715902193673/1211692810294788126/1483087771810660363">exchange in #plugins</a> 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 <code>policy.yaml</code>. User Mattia Dell'Oca hit the <code>Policy already set</code> 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 <code>applyRoles</code> and <code>applyPermissions</code> dynamically. This is a pattern many enterprise teams are converging on.</p><h3>BackstageCon Plugins Panel soliciting community input</h3><p>A <a href="https://discord.com/channels/687207715902193673/1211692810294788126/1481493339839922327">#plugins post</a> 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 <a href="https://discord.com/channels/687207715902193673/1045031039061479536">#adoption</a> also asked who from the community will be present in Amsterdam.</p><h3>Scale question: 200,000+ entities with 6+ relations each</h3><p>A <a href="https://discord.com/channels/687207715902193673/923144214580191282/threads/1481938196471349449">4-message thread in #catalog</a> 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.</p><h3>MCP/AI discoverability of skills in the catalog</h3><p>A brief <a href="https://discord.com/channels/687207715902193673/923144214580191282/1483144422613844099">message in #catalog</a> 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.</p><h2>Changelog</h2><h3>v1.49.0</h3><p>Released March 18, 2026</p><p><strong>Highlights:</strong></p><ul><li>New Frontend System 1.0 Release Candidate (NFS now default for new apps)</li><li>Backstage UI breaking changes (new components, removed props, CSS token changes)</li><li>Entity cards migrated from MUI to BUI</li><li>Deprecated Bitbucket and legacy integrations removed</li><li>AI and MCP improvements (new built-in actions, MCP server splitting)</li><li>CLI Module System refactored into extensible architecture</li><li>Predicate-based catalog entity filtering</li><li>New ToastApi replaces AlertApi</li><li>Permission batching for improved performance</li></ul><p>Full changelog: <a href="https://github.com/backstage/backstage/blob/master/docs/releases/v1.49.0-changelog.md">https://github.com/backstage/backstage/blob/master/docs/releases/v1.49.0-changelog.md</a></p>
]]></content:encoded></item><item><title><![CDATA[v1.49 Pre-Release, Context Engineering & MCP Discovery]]></title><link>https://roadie.io/backstage-weekly/125-v149-pre-release-context-engineering-mcp-discovery/</link><guid isPermaLink="false">https://roadie.io/backstage-weekly/125-v149-pre-release-context-engineering-mcp-discovery/</guid><pubDate>Mon, 16 Mar 2026 15:00:00 GMT</pubDate><description><![CDATA[Backstage v1.49.0-next.2 lands ahead of the March 17 release while the community debates DOM types, catalog modeling, and AI integrations. Roadie’s context engineering deep dive reframes IDPs as the missing layer for grounding AI development.]]></description><content:encoded><![CDATA[<p><img src="//images.ctfassets.net/hcqpbvoqhwhm/3C0J5TmmD5Nm2aaRL3WnlN/c4f545662c81eaa1d49d15004b139ae9/backstage-contribfest-kubecon-web-app-header-aa55b2b3a64c012a90f1e0d2fbeb74ab.png" alt="Backstage ContribFest Kubecon"></p><p>The pre-conference quiet continued this week. Backstage shipped v1.49.0-next.2 with incremental fixes ahead of the March 17 stable release, while the community focused on New Frontend System migrations and the recurring DOM types debate in backend packages.</p><p>Roadie published a deep dive on context engineering that reframes AI grounding as a platform discipline that requires structured catalog metadata, not just better prompts. With BackstageCon and KubeCon Europe eleven days away, Discord traffic is centered on migration patterns, MCP discovery, and getting production instances ready for Amsterdam.</p><h3>v1.49.0-next.2 ships incremental fixes</h3><p><a href="https://github.com/backstage/backstage/releases/tag/v1.49.0-next.2">Backstage v1.49.0-next.2</a> landed on March 10, the second weekly pre-release in the v1.49 cycle. This follows v1.49.0-next.1 from March 3 and keeps everything on track for the stable v1.49.0 release expected March 17. The full changelog is available in <code>docs/releases/v1.49.0-next.2-changelog.md</code>. The v1.49.0 release will be the last before KubeCon Europe and BackstageCon on March 23.</p><h3>Roadie publishes Context Engineering deep dive</h3><p><img src="https://roadie.io/_next/image/?url=https%3A%2F%2Fimages.ctfassets.net%2Fhcqpbvoqhwhm%2F5S9aa96TLOgqCIrFmAjIHN%2F7938e1870de4fd36d3640204b35ad00b%2Fimage1.png%3Fw%3D500%26h%3D500%26fm%3Dwebp&#x26;w=1080&#x26;q=75" alt="Context Engineering: The Missing Discipline in AI-Assisted Development"></p><p>Roadie published "<a href="https://roadie.io/blog/context-engineering-ai-development/">Context Engineering: The Missing Discipline in AI-Assisted Development</a>" this week, arguing that organizational context is the unsolved layer in AI coding tools. GitHub Copilot and Cursor handle local context and repository context reasonably well, but neither knows who owns <code>payment-service</code>, what lifecycle state <code>legacy-auth-api</code> is in, or what security constraints apply to production services. No amount of prompt engineering can retrieve information that doesn't exist in any repository.</p><p>The article frames the Internal Developer Portal as the natural solution to Layer 3 context. Your IDP already holds the two things an AI needs: metadata in <code>catalog-info.yaml</code> (owner, tier, lifecycle, dependencies) and semantics in TechDocs (ADRs, runbooks, how-to guides). Spotify proved this architecture works at scale with AiKA and Honk, both tightly integrated with Backstage's catalog and metadata graph. The piece walks through connecting AI tools via the Model Context Protocol (MCP), with Roadie acting as an MCP Server that exposes your catalog and TechDocs as queryable endpoints.</p><p>A key warning: the "dump everything into a vector database" approach produces context poisoning. A Confluence instance with 2,000 pages where only 300 are accurate means your AI retrieves from both canonical ADRs and three-year-old contradictory wiki pages with no way to distinguish them. The <code>catalog-info.yaml</code> schema enforces structure at the source. A deprecated service can't masquerade as current because its lifecycle field says otherwise. Context engineering starts with good catalog maintenance.</p><hr><h2>Community Discussions</h2><h3>Removing <code>node-fetch</code> and the DOM Types Problem</h3><p>Backstage maintainer Jon Koops opened a significant <a href="https://discord.com/channels/687207715902193673/687207715902193679/threads/1480626043483193394">architectural discussion in #general</a> (22 replies) about the implications of removing <code>node-fetch</code> from the main repo, as outlined in ADR14. As backend packages (like <code>@backstage/backend-defaults</code>) are built from the root TSConfig, they silently receive browser DOM types, which means that incorrect web-based types are provided anywhere the Fetch API behaves differently between Node.js and the browser. Jon proposes changing the TypeScript configurations so that backend-only packages are never exposed to library types from the web, and he plans to bring it to the framework SIG. The discussion also covers project references performance in CI, the upcoming tsgo compiler, and whether the change should be opt-in for adopters initially.</p><h3>State of AI in Backstage: MCP, RAG, and a Discoverability Gap</h3><p>A thread in #general titled <a href="https://discord.com/channels/687207715902193673/687207715902193679/threads/1480545349843161120">"ai"</a> (6 replies) kicked off a survey of what AI integration currently looks like in Backstage. The conversation catalogued the current landscape: an MCP chat plugin in the community plugins repo, a plugin for exposing Backstage actions as MCP tools (<code>mcp-actions-backend</code>), and Roadie's RAG-based AI assistant plugin for querying catalog and TechDocs knowledge. This knowledge is currently scattered across Discord threads and GitHub PRs, with no central tracking page. Thomvaill and drodil (a Backstage Framework maintainer) agreed that a dedicated documentation page listing all available MCP actions per plugin would be valuable. Drodil also noted a new PR (<a href="https://github.com/backstage/backstage/pull/33253">#33253</a>) they've made on the topic, though it's not yet clear whether it belongs in the main repo or community plugins.</p><h3>Templates and <code>partOf</code> Relations: A Design Clarification</h3><p>A <a href="https://discord.com/channels/687207715902193673/687207715902193679/threads/1480910931293765705">21-message thread in #general</a> surfaced a common point of confusion: why can't Scaffolder Templates reference entities outside of their <code>owner</code> using <code>partOf</code> relations? A user wanted to track which Component (a repo containing all their templates) each Template "belongs to" in the catalog graph. Maintainer Freben explained that this is an intentional design constraint of the System Model. Templates are not designed to have arbitrary cross-entity relations. Freben suggested the <code>Resource</code> kind as a better fit if the model needs to be extended. The thread links to the <a href="https://backstage.io/docs/features/software-catalog/extending-the-model#implementing-custom-model-extensions">Extending the Model docs</a> as the recommended solution.</p><h3>Finding Entities with Missing or Unknown Owners</h3><p>An <a href="https://discord.com/channels/687207715902193673/923144214580191282/threads/1478048303198376017">18-message thread in #catalog</a> explored how to hook into catalog ingestion to detect or process entities with invalid or unknown owners. Freben recommended the <a href="https://backstage.io/docs/features/software-catalog/faq#can-i-validate-relations-in-processors">Catalog FAQ's processor-based validation section</a> as a starting point, and followed up with a more advanced pattern: as you page through entities, you can call <code>.prime()</code> on the existence dataloader to pre-populate knowledge of which entities exist, then mark the ones that don't as having broken relations. This approach avoids storing the full catalog in memory or making repeated catalog API requests.</p><h3>Jest Removed from Backstage CLI: Community Plugin Impact</h3><p>Maintainer Ahhhndre <a href="https://discord.com/channels/687207715902193673/1201559534754345110/threads/1477050964237091181">investigated why removing Jest from the Backstage CLI in v1.46.0 hadn't broken anything yet</a>, and found the answer: a version of the Backstage CLI still exists in the root <code>package.json</code>, and CI is using that. Simply removing it would break most workspaces. The fix is a gradual migration. A <a href="https://github.com/backstage/community-plugins/pull/7867">PR for community plugins (#7867)</a> has been opened to migrate packages one by one, and Ahhhndre has also filed <a href="https://github.com/backstage/community-plugins/issues/7868">an issue (#7868)</a> for maintainer-owned workspaces so the community can help during ContribFest.</p><h3>Release Train: v1.49.0 Pre-Releases Are Rolling</h3><p>The <a href="https://discord.com/channels/687207715902193673/705123584468582400">#announcements</a> channel has been active with the v1.49.0 pre-release train. <strong>v1.49.0-next.2</strong> dropped on March 10, following <strong>v1.49.0-next.1</strong> on March 4 (which also updated the <a href="https://demo.backstage.io/">Backstage Demo site</a>). Before that, <strong>v1.48.2</strong> (Feb 24) included a fix to update <code>@microsoft/api-extractor</code> to 7.57.3 and restore <code>formFieldsApiRef</code> and <code>ScaffolderFormFieldsApi</code> alpha exports that had gone missing. If you're tracking pre-releases or running the demo, this is a good time to test against next.2 ahead of the stable v1.49.0 release.</p><h3>Templates Randomly Disappearing with Split Catalog Deployments</h3><p>A <a href="https://discord.com/channels/687207715902193673/923144214580191282">recent #catalog thread</a> flags a possible operational issue for anyone running Backstage at scale with a split read/write catalog deployment and HPA. One user reported that Template entities (and only Templates, not Components or APIs) were disappearing periodically from statically configured catalog locations. The logs showed a <code>ConflictError: Conflicting write of processing result for &#x3C;entity-id> with location key 'url:https://github.com/&#x3C;location-key>'</code> error. This appears to be a race condition specific to multi-pod catalog-write deployments; if you're running 2–4 catalog-write pods in production, this thread is worth watching.</p><h3>Backstage Documentary Premieres at KubeCon Amsterdam</h3><p>For those attending KubeCon + CloudNativeCon Europe in Amsterdam on March 23, don't miss the premiere of the <strong>CNCF Documentary: "Backstage: From Spreadsheet to Standard"</strong>, a film co-produced by Spotify, CNCF, and Roadie. The <a href="https://kccnceu2026.sched.com/event/2ILJt">screening is on the official KubeCon schedule</a>. The Community Plugins SIG scheduled for March 24 has been cancelled due to the KubeCon overlap, so the documentary event is the place to be for community networking around Backstage that week.</p><hr><h2>Changelog</h2><h3>v1.49.0-next.2 - March 10, 2026</h3><p><strong>Pre-release:</strong></p><ul><li>Incremental fixes and improvements ahead of v1.49.0 stable release</li></ul><p><strong>Release:</strong><a href="https://github.com/backstage/backstage/releases/tag/v1.49.0-next.2">v1.49.0-next.2</a></p>
]]></content:encoded></item><item><title><![CDATA[Critical TechDocs Security Fix, BackstageCon’s AI Vision & the First v1.49 Preview]]></title><link>https://roadie.io/backstage-weekly/124-techdocs-security-fix-backstagecon-ai-preview-v1-49/</link><guid isPermaLink="false">https://roadie.io/backstage-weekly/124-techdocs-security-fix-backstagecon-ai-preview-v1-49/</guid><pubDate>Mon, 09 Mar 2026 15:00:00 GMT</pubDate><description><![CDATA[Backstage v1.48.4 ships a high-severity TechDocs security fix, the CNCF previews an AI-focused BackstageCon Europe, Roadie publishes a deep Context Engineering glossary, and the first v1.49 pre-release lands ahead of KubeCon EU.]]></description><content:encoded><![CDATA[<p>This week's headline is a critical security release. Backstage v1.48.4 shipped on March 4 with fixes for three newly disclosed vulnerabilities, including a HIGH-severity TechDocs arbitrary code execution flaw that affects anyone running TechDocs in local mode. Teams need to upgrade immediately.</p><p>Beyond security, the CNCF published a BackstageCon Europe preview that positions AI integration as the defining theme for 2026, Roadie released a comprehensive Context Engineering Glossary that reframes catalog hygiene as an AI infrastructure concern, and the first v1.49.0 pre-release landed with quality-of-life fixes. With KubeCon Europe three weeks away, the community is in pre-conference mode.</p><p><img src="//images.ctfassets.net/hcqpbvoqhwhm/7nUhwtOyMgiUyip5HRObGc/26ced060a2d6c698348103cb2953e74e/CNCF-Website-Desktop.png" alt="CNCF Europe 2026"></p><h3>v1.48.4 addresses three security vulnerabilities, including HIGH-severity TechDocs flaw</h3><p><a href="https://github.com/backstage/backstage/releases/tag/v1.48.4">Backstage v1.48.4</a> shipped on March 4 alongside three GitHub Security Advisories. This is a security-focused patch release with no feature changes, making it a low-risk upgrade for all teams.</p><p>The most critical advisory is <a href="https://github.com/backstage/backstage/security/advisories/GHSA-928r-fm4v-mvrw">GHSA-928r-fm4v-mvrw</a>, rated HIGH. When TechDocs runs in <code>local</code> mode, an attacker who can modify a repository's <code>mkdocs.yml</code> file can execute arbitrary Python code on the TechDocs build server. The attack vector uses MkDocs hooks, a feature that allows custom Python execution during documentation builds. The <code>@backstage/plugin-techdocs-node</code> package didn't sanitize hook configurations before passing them to MkDocs, allowing embedded Python to run with full privileges of the TechDocs service. Teams running TechDocs with <code>runIn: local</code> should upgrade to v1.48.4 immediately or switch to <code>runIn: docker</code> as a workaround.</p><p>The two remaining advisories are rated LOW but still worth patching. <a href="https://github.com/backstage/backstage/security/advisories/GHSA-95v5-prp4-5gv5">GHSA-95v5-prp4-5gv5</a> affects <code>@backstage/integration</code> and could allow unauthorized reading of SCM URLs using the built-in token. <a href="https://github.com/backstage/backstage/security/advisories/GHSA-8qp7-fhr9-fw53">GHSA-8qp7-fhr9-fw53</a> affects <code>@backstage/plugin-scaffolder-backend</code> and relates to session token exfiltration via insufficient log redaction. All three advisories were authored by maintainer benjdlambert.</p><h3>v1.49.0-next.1 fixes MUI dependency and tab ordering issues</h3><p><a href="https://github.com/backstage/backstage/releases/tag/v1.49.0-next.1">Backstage v1.49.0-next.1</a> landed on March 3 as the first weekly pre-release in the v1.49 cycle. The release fixes the <code>@mui/material/styles</code> shared dependency key by removing a trailing slash that caused module resolution failures with Material UI package exports. It also resolves an issue where entity page tab groups weren't respecting the ordering specified in the groups configuration. The full changelog is available in <code>docs/releases/v1.49.0-next.1-changelog.md</code>. The stable v1.49.0 release is expected later in March, following Backstage's monthly cadence.</p><h3>CNCF frames BackstageCon Europe around AI and governance</h3><p>The CNCF published "<a href="https://www.cncf.io/blog/2026/02/27/kubecon-cloudnativecon-europe-2026-co-located-event-deep-dive-backstagecon/">KubeCon + CloudNativeCon Europe 2026 Co-located Event Deep Dive: BackstageCon</a>" on February 27, revealing the event's strategic focus: AI integration is the defining theme. Co-chairs Balaji Sivasubramanian and Bryan Landes describe the core thesis as "cloud native adoption colliding with AI-accelerated software delivery," with teams needing shared patterns for making the portal and catalog "the trusted context layer that AI copilots and agents can safely use."</p><p>BackstageCon takes place March 23 at RAI Amsterdam as a full-day CNCF-hosted co-located event alongside KubeCon + CloudNativeCon Europe (March 23-26). The event targets five audiences: platform engineering teams scaling Backstage in production, AI-forward organizations managing models and agents as first-class portal entities, maintainers and plugin developers, newcomers seeking production-grade implementation examples, and leaders evaluating Backstage adoption. Key topics include golden paths, standardized metadata, governance, plugin ecosystems, and observability. An All-Access Pass to KubeCon is required for entry. The Backstage ContribFest session follows on March 26.</p><h3>Roadie publishes Context Engineering Glossary for platform engineers</h3><p><img src="https://roadie.io/_next/image/?url=https%3A%2F%2Fimages.ctfassets.net%2Fhcqpbvoqhwhm%2F2YR1ZwHxUEFUTFhAnvEn9p%2Ff7a9637d5c0864c65fe0004baec1a88f%2Fimage1.png%3Fw%3D500%26h%3D500%26fm%3Dwebp&#x26;w=1080&#x26;q=75" alt="Context Engineering Glossary"></p><p>Roadie published "<a href="https://roadie.io/blog/context-engineering-glossary/">The Context Engineering Glossary for Platform Engineers</a>" on March 5, a comprehensive reference guide defining every key term in the context engineering stack through the lens of Internal Developer Portals. The timing aligns with BackstageCon's AI focus, as the CNCF positions the catalog as "the trusted context layer that AI copilots and agents can safely use" and Roadie's glossary defines the engineering discipline required to make that vision work in production.</p><p>The glossary covers five major sections: Context Fundamentals (context windows, grounding, what context engineering actually means), Architecture and Retrieval Terms (RAG, vector embeddings, semantic search), Platform Data Types (Service Catalog context, TechDocs context, operational context, golden paths), Agentic Capabilities (agentic context injection, function calling, system prompts), and Quality and Risk Definitions (hallucination, context drift, context poisoning, privilege leakage, implicit trust chains).</p><p>The guide frames context engineering as a core platform responsibility with dedicated engineering ownership. Its central argument is that an LLM is a powerful reasoning engine with no institutional memory, and context engineering is how you give it one. The glossary defines context engineering as the entire information supply chain feeding the model before it generates output, covering what the model is allowed to know, when, and why. For platform teams building AI assistants on top of Backstage, the piece emphasizes that poor catalog hygiene directly degrades AI output quality, context drift is an ongoing operational concern requiring automated re-indexing, and retrieval pipelines must enforce RBAC to prevent privilege leakage. The article includes practical architecture diagrams showing how Service Catalog metadata, TechDocs, and operational data flow through RAG systems to produce grounded responses.</p><hr><h2>Community Discussions</h2><h3>Release Updates: v1.48.3 and v1.49.0-next.1</h3><p>Two releases landed this week. v1.48.3 (February 26) is a patch that fixes a <code>@mui/material/styles</code> shared dependency key issue caused by a trailing slash, which was breaking module resolution with MUI package exports. Anyone using MUI-heavy customisations who encountered odd import failures after 1.48 should pick this up. Hot on its heels, v1.49.0-next.1 dropped on March 3, with the demo site already running it. See the <a href="https://discord.com/channels/687207715902193673/705123584468582400">announcements</a> for both releases.</p><h3>Security: Transitive Vulnerability Scan Results Shared in Community</h3><p>A detailed Snyk scan of a Backstage project uncovered 7 HIGH-severity vulnerabilities across 13 instances, with no Critical ones. Packages flagged included <code>tar@6.2.1</code> (Directory Traversal), <code>ajv@6.12.6</code> (ReDoS), <code>glob@10.4.5</code> (Command Injection), and <code>ip@2.0.1</code> (SSRF). The discussion highlighted that many of these are transitive dependencies deep in the dependency tree and cannot simply be overridden locally without breaking CLI linting. The thread had 17 messages with maintainer participation and is worth tracking if your security posture requires a clean Snyk report. See <a href="https://discord.com/channels/687207715902193673/1041734397369532487/threads/1473033473622151283">the discussion in #security</a>.</p><h3>New Frontend System Migration: Still the Community's Biggest Challenge</h3><p>The new frontend system continued to dominate support traffic this week. The most active thread, "New Frontend System migration" in #support, accumulated 37 messages and a resolved badge, with users working through migrating full Catalog plugin routing and internal plugins. A parallel thread titled "Catalog migration" in #frontend-system (17 messages, still active yesterday) saw a user sharing their complete <code>EntityContentBlueprint</code> and <code>createFrontendPlugin</code> patterns for migrating GitHub-releases entity tabs, while a first-time contributor asking how to add a catalog entity card using the new frontend API received 14 replies in under a day. Maintainer Ahhhndre pointed users toward the <a href="https://backstage.io/docs/frontend-system/building-apps/migrating">migration docs</a> and noted that the catalog plugin's README is still lagging behind. Join the discussion <a href="https://discord.com/channels/687207715902193673/1101159492298743808/threads/1476212110970323045">in #frontend-system</a> or the <a href="https://discord.com/channels/687207715902193673/1101159492298743808/threads/1478670797865488495">first-plugin thread</a>.</p><h3>BUI vs MUI: Which UI System for New Instances?</h3><p>With v1.48 shipping Backstage's new BUI component system alongside continued MUI support, a thread in #general sparked debate about the recommended upgrade path. A team upgrading from v1.12 to v1.48 discovered that many of their custom screens are not fully supported in BUI and asked whether staying on MUI is viable for production. Maintainer Ahhhndre confirmed both systems are currently supported, but the direction of travel is clearly toward BUI. This mirrors a parallel support thread ("Upgrade failure", 16 messages) where another user faced the same BUI vs MUI decision mid-migration. The community consensus is that MUI remains the safe path for heavily customised portals for now. See the <a href="https://discord.com/channels/687207715902193673/687207715902193679/threads/1477904643009941504">bui vs mui thread in #general</a>.</p><h3>Jest Removed from Backstage CLI 1.46.0: Community Plugin Impact</h3><p>A thread started by maintainer Ahhhndre in #maintenance revealed why removing Jest from the Backstage CLI in version 1.46.0 hadn't broken the community plugins repository CI: the CLI was still pinned in the root <code>package.json</code>. Removing that pin would break most workspaces. A migration PR (<a href="https://github.com/backstage/community-plugins/pull/7867">#7867</a>) has been opened to slowly migrate workspaces away, and a companion issue (<a href="https://github.com/backstage/community-plugins/issues/7868">#7868</a>) was logged to involve the community during ContribFest Amsterdam. If you maintain plugins in the community repo, the issue is a good place to volunteer. Follow the progress in the <a href="https://discord.com/channels/687207715902193673/1201559534754345110/threads/1477050964237091181">jest-gone thread in #maintenance</a>.</p><h3>Bug Report: GithubMultiOrgEntityProvider Misses Team Hierarchy on Webhook Events</h3><p>A well-documented bug report landed in #catalog this week. When using <code>GithubMultiOrgEntityProvider</code>, parent/child team relationships are <em>not</em> updated in real time via GitHub webhook events: the hierarchy only self-corrects on the next scheduled full sync. The root cause identified is that <code>GithubMultiOrgEntityProvider.onTeamEditedInOrganization()</code> updates team members but never calls <code>buildOrgHierarchy()</code>, unlike its single-org counterpart <code>GithubOrgEntityProvider</code>. The thread generated 7 messages with community-contributed analysis. If you're running the multi-org provider and rely on accurate team hierarchy, either trigger more frequent full syncs or watch for an upstream fix. Read the full investigation in the <a href="https://discord.com/channels/687207715902193673/923144214580191282/threads/1477135489000669256">#catalog thread</a>.</p><h3>How to Update Community Plugins Without Renovate</h3><p>A recurring question in #plugins was resolved clearly this week: <code>yarn backstage-cli versions:bump</code> only bumps core <code>@backstage/*</code> packages and will <strong>not</strong> update <code>@backstage-community/*</code> plugins. To bump community plugins manually, run <code>yarn backstage-cli versions:bump --pattern "@backstage-community/*"</code>. Maintainer Ahhhndre also recommended Renovate for automating this for monorepos, noting that Dependabot struggles with the mono-repo setup. See the full <a href="https://discord.com/channels/687207715902193673/1211692810294788126/threads/1465421694171877637">Plugin releases thread in #plugins</a>.</p><h2>Changelog</h2><h3>v1.48.4 - March 4, 2026</h3><p>Security Fixes:</p><ul><li>Fixed arbitrary code execution via MkDocs hooks in TechDocs (GHSA-928r-fm4v-mvrw, HIGH severity)</li><li>Fixed potential reading of SCM URLs using built-in token (GHSA-95v5-prp4-5gv5, LOW severity)</li><li>Fixed session token exfiltration via log redaction bypass (GHSA-8qp7-fhr9-fw53, LOW severity)</li></ul><p>Release: <a href="https://github.com/backstage/backstage/releases/tag/v1.48.4">v1.48.4</a></p><h3>v1.49.0-next.1 - March 3, 2026</h3><p>Fixes:</p><ul><li>Fixed <code>@mui/material/styles</code> shared dependency key by removing trailing slash</li><li>Fixed entity page tab groups not respecting ordering configuration</li></ul><p>Release: <a href="https://github.com/backstage/backstage/releases/tag/v1.49.0-next.1">v1.49.0-next.1</a></p>
]]></content:encoded></item><item><title><![CDATA[Scaffolder Fixes, ContribFest Launch & Backstage’s AI Shift]]></title><link>https://roadie.io/backstage-weekly/123-scaffolder-fix-contribfest-ai-native-backstage/</link><guid isPermaLink="false">https://roadie.io/backstage-weekly/123-scaffolder-fix-contribfest-ai-native-backstage/</guid><pubDate>Mon, 02 Mar 2026 15:00:00 GMT</pubDate><description><![CDATA[Backstage ships v1.48.2 to fix scaffolder regressions, launches the ContribFest web app ahead of KubeCon Europe, merges an alpha MetricsService into core, and the community dives deep into AI-native platform engineering, multi-agent systems, and scaling TechDocs.]]></description><content:encoded><![CDATA[<p>The week after v1.48.0's ambitious feature release was about stabilization and scaffolding the road to Amsterdam. Backstage shipped two patch releases to fix scaffolder regressions, launched the ContribFest web app ahead of KubeCon Europe, and continued its trajectory toward becoming an AI-native developer portal - with Spotify publishing a multi-agent architecture deep dive, Infralovers dropping a three-part series on AI-assisted Backstage development, and Roadie detailed how they split TechDocs out of their monolithic backend to solve resource contention at multi-tenant scale.</p><p><img src="https://backstage.io/assets/images/backstage-contribfest-kubecon-web-app-header-aa55b2b3a64c012a90f1e0d2fbeb74ab.png" alt="Backstage ContribFest banner"></p><h3>v1.48.2 fixes scaffolder form customization regression</h3><p><a href="https://github.com/backstage/backstage/releases/tag/v1.48.2">Backstage v1.48.2</a> landed on February 24, addressing a critical regression from v1.48.0. The patch restored <code>formFieldsApiRef</code> and <code>ScaffolderFormFieldsApi</code> alpha exports from <code>@backstage/plugin-scaffolder</code> that had been inadvertently removed, breaking teams relying on scaffolder form customization in the new frontend system. The release also bumped <code>@microsoft/api-extractor</code> to 7.57.3. Teams using scaffolder alpha APIs should upgrade immediately.</p><p>The earlier <a href="https://github.com/backstage/backstage/releases/tag/v1.48.1">v1.48.1 patch</a> (February 18) fixed a missing sidebar item in frontend system docs and a type compatibility issue in <code>FrontendFeature</code>. Together, these patches close the v1.48 stabilization window.</p><p><a href="https://github.com/backstage/backstage/releases/tag/v1.49.0-next.0">v1.49.0-next.0</a>, the first pre-release of the next monthly cycle, also appeared near the end of the week.</p><h3>ContribFest web app launches</h3><p>The Backstage blog published its first post of 2026 on February 25: "<a href="https://backstage.io/blog/2026/02/25/get-a-jump-on-contribfest/">Get a jump on ContribFest with the new web app</a>." Written by Elaine de Mattos Silva Bezerra (DB Systel), Heikki Hellgren (OP Financial Group), and André Wanlin (Spotify), the post announces <a href="https://contribfest.backstage.io/">contribfest.backstage.io</a> - a purpose-built app to onboard contributors for ContribFest at KubeCon Europe in Amsterdam on March 26 at 13:45 CET.</p><p>The app features five sections: Welcome, Getting Started, Curated Issues, Contrib Champs (celebrating past merged PRs), and Hall of Hosts. New Dev Containers support enables streamlined local setup using Docker Desktop and VS Code or IntelliJ. Past ContribFest contributions highlighted include TechDocs pagination, OpenShift auth provider work, and HTML rendering fixes in GitHub-flavored Markdown.</p><p>This cross-organization collaboration signals the project's maturation - contributor onboarding is now a community-driven effort, not just a maintainer task.</p><p><img src="https://openssf.org/wp-content/uploads/2025/11/Screenshot-2025-11-19-at-4.47.18-PM.png" alt="KubeCon + CloudNativeCon Europe 2026 in Amsterdam"></p><h3>Backstage Community Session - February 18, 2026</h3><p>The latest <a href="https://www.youtube.com/watch?v=YCfPv0RwEJY">Backstage Community Session</a> is now available on YouTube. Mihai kicks things off with a walkthrough of what's new in v1.48.0 - catalog extension points graduating out of alpha, stricter API override restrictions, experimental MCP authorization via Client ID Metadata Documents, and experimental token refresh support. From there, the session covers a call for community members to join the new <a href="https://github.com/backstage/backstage/issues/32794">Backstage reviewer program</a>, where your feedback shapes PR prioritization and your own PRs get priority review in return. The highlight of the session is a talk from Volvo Group's Mingdao and Tom, who share how one of the world's largest manufacturers adopted Backstage - rolling out golden paths, access provisioning, and community-driven templates while navigating the organizational challenges of a large-scale IDP rollout. A Q&#x26;A with the Volvo team follows. Watch the recording here.</p><h2>Publications</h2><h3>Roadie publishes TechDocs Guide</h3><p>Roadie published "<a href="https://roadie.io/blog/splitting-techdocs-out-of-our-monolithic-backstage-deployment/">Splitting TechDocs Out of Our Monolithic Backstage Deployment</a>" on February 26, detailing how they redesigned their multi-tenant Backstage architecture to solve resource contention issues. The article walks through their original monolithic design where each tenant ran a single Backstage backend pod containing all plugins (Catalog, Scaffolder, TechDocs, Auth), and how TechDocs' resource-intensive workload - fetching documentation files, rendering Markdown, running MkDocs generators - began causing CPU saturation and memory pressure that impacted unrelated functionality like catalog ingestion and authentication.</p><p>The solution was extracting TechDocs into a separate Backstage backend service that runs independently using Backstage's native discovery service for backend-to-backend communication. Each tenant now runs two distinct services: a core Backstage backend handling catalog, scaffolder, and auth, and a dedicated TechDocs backend. Results were immediate: cleaner cluster allocations with CPU and memory limits tuned specifically for documentation workloads, improved stability with documentation builds no longer pressuring core APIs, and easier debugging with resource spikes immediately attributable to the correct service. The article emphasizes that Backstage provides the primitives needed to support this modular design, and at scale, using them becomes "less of an optimization and more of a requirement." For teams running Backstage in multi-tenant or high-scale environments experiencing similar symptoms, the piece recommends examining heavy backend plugins and questioning whether they belong in the same process as core Backstage functionality.</p><h3>Spotify's multi-agent architecture for advertising</h3><p>Spotify Engineering published "<a href="https://engineering.atspotify.com/2026/2/our-multi-agent-architecture-for-smarter-advertising">Our Multi-Agent Architecture for Smarter Advertising</a>" on February 19, detailing how they built Ads AI - a multi-agent system using Google's Agent Development Kit (ADK) and Vertex AI. The system transforms media planning from a 15-30 minute manual process requiring 20+ form fields into a conversational interface generating optimized plans in 5-10 seconds using 1-3 natural language messages.</p><p>The architecture decomposes planning into specialized agents - RouterAgent, GoalResolverAgent, AudienceResolverAgent, BudgetAgent, ScheduleAgent, and MediaPlannerAgent - executing in parallel. Three key learnings resonate with the Backstage community: prompt engineering is software engineering (prompts need version control and testing), agent boundaries matter (one agent per distinct skill or data source), and evaluation requires new approaches beyond traditional unit testing.</p><p>While not a Backstage feature, this connects directly to where Backstage is heading. The v1.48.0 release shipped experimental Client ID Metadata Documents and experimental refresh token support - both designed to reduce MCP client authentication friction. Combined with the <code>@backstage/plugin-mcp-actions-backend</code> plugin and Spotify's AiKA AI Knowledge Assistant, the trajectory is clear: Backstage is becoming the MCP server hub for platform engineering.</p><h3>Infralovers' three-part series on AI-assisted Backstage development</h3><p>Infralovers, a Backstage consulting firm, published the final two parts of a notable three-part blog series during the week:</p><p><strong>Oct 31, 2025</strong> - "<a href="https://www.infralovers.com/blog/2025-10-31-building-backstage-with-ai-assisted-development/">Beyond Copy-Paste: Building Backstage with AI-Assisted Development</a>" detailed how Claude Sonnet 4.5 and GitHub Copilot helped navigate custom Backstage integrations with Crossplane and ArgoCD. The post documented real integration friction - scaffolder temporary directories, the <code>publish:github:pull-request</code> vs. <code>publish:github</code> distinction, ArgoCD rejecting <code>catalog-info.yaml</code> - and showed how AI pair programming resolved each issue faster than traditional documentation searching.</p><p><strong>Feb 20</strong> - "<a href="https://www.infralovers.com/blog/2026-02-20-fuenf-stufen-ki-entwicklung/">Five Levels of AI Development: Why the J-Curve Gets Everyone</a>" applied Dan Shapiro's five-level framework to developer tooling, arguing that 90% of "AI-native" developers are stuck at Level 2 (pair programming) when the real gains come at Levels 3-4 (specification-driven development and autonomous workflows).</p><p><strong>Feb 22</strong> - "<a href="https://www.infralovers.com/blog/2026-02-22-architektur-patterns-dark-factory/">Dark Factory Architecture: How Level 4 Actually Works</a>" got concrete about Level 4 in practice, referencing StrongDM's "Digital Twin Universe" approach and Boris Cherny's claim that 90% of Claude Code was written by Claude Code, with SemiAnalysis estimating 4% of public GitHub commits now attributable to Claude Code.</p><p>The series offers practical context for Backstage adopters evaluating where AI fits in their developer portal strategy - not as a chatbot bolted onto the sidebar, but as a fundamental shift in how platform engineering work gets done.</p><hr><h2>Community Discussions</h2><h3>Alpha MetricsService Merged into Backstage Core</h3><p>One of the most celebrated milestones in <code>#backend-system</code> this week: the initial alpha implementation of a native <code>MetricsService</code> was merged into the backstage/backstage repo. Community member <code>kurt</code> had been championing this effort for weeks and celebrated with the note "I am very stoked to see the initial alpha merged," thanking the maintainers who rallied to get <a href="https://github.com/backstage/backstage/pull/32358">PR #32358</a> (<code>feat(metrics): Implement MetricsService</code> by <code>benjdlambert</code>) across the finish line. The service provides a first-class, framework-native way to emit metrics from Backstage backends - an alternative to the community's current patchwork of OTel instrumentation. The next milestone is documenting the current state and migrating catalog metrics to the new abstraction; <code>kurt</code> opened a <a href="https://discord.com/channels/687207715902193673/1034089724664610938/threads/1469347165762490418">meta issue thread</a> to avoid duplicate effort.</p><h3>"How Do I Actually Delete a Catalog Entity?" - The Cache Mental Model</h3><p>An 8-message thread in <a href="https://discord.com/channels/687207715902193673/923144214580191282/threads/1476155714371190826">#catalog</a> surfaced a question many new adopters run into: a user tried to delete test entities via the OpenAPI spec by UID, only to find them reappearing with a new UID after a refresh. Maintainer <code>freben</code> delivered the canonical answer - "The catalog is sort of like a big cache, a mirror of externalities… the thing that generated the entity keeps generating the entity as it was instructed to. There's no functionality like 'delete this and refuse all future attempts at creating something with that name'." The resolution is to disconnect or modify the source (e.g., the GitHub repo), not the catalog record. This remains one of the most common conceptual hurdles for new Backstage adopters.</p><h3>Disabling Software Templates Registered from <code>catalog-info.yaml</code></h3><p>A lively 9-message thread in <a href="https://discord.com/channels/687207715902193673/687207715902193679/threads/1474435693978714348">#general</a> started when <code>phred-te</code> discovered that individual repositories can register their own software templates directly from <code>catalog-info.yaml</code>. The question was whether a platform team could disable this auto-discovery to prevent teams from self-registering templates they shouldn't. Core contributor <code>Peter "ParsiFal-M"</code> confirmed that <code>catalog.rules</code> governs this behavior and should prevent unwanted registrations - though the caveat is that the Backstage demo doesn't explicitly exercise this rule so community members were testing edge cases live.</p><h3>Migrating from GitHub GHEC to GitHub EMU - Running Dual Auth Providers</h3><p>A timely discussion landed in <a href="https://discord.com/channels/687207715902193673/978977570852835379/1476344287246549233">#auth</a> this week as <code>Pedro</code> described a real-world migration scenario: moving from <code>github.com</code> (GHEC) to GitHub Enterprise Managed Users (EMU), where users temporarily exist in both systems. The key questions: can Backstage run two GitHub auth providers simultaneously in the same instance? If not, what is the recommended EMU-first auth pattern with a fallback during the cutover window? Options discussed include a single provider routing by email domain/org membership, a custom sign-in resolver that attempts EMU first, or a custom auth provider with fallback logic. If you're planning a similar migration, this thread is worth following.</p><h3>Extending the Catalog Component Spec with Custom Fields</h3><p>A thoughtful architecture question in <a href="https://discord.com/channels/687207715902193673/923144214580191282/1476323508249165965">#catalog</a> from new adopter <code>Finn Molloy</code>: their team wants to add a <code>spec.license</code> field (SPDX identifier) and a <code>spec.thirdParty</code> boolean to the <code>Component</code> kind - and they've implemented it using a custom Zod schema validator and a custom processor plugin rather than annotations. Their reasoning: typed fields are preferable to string annotations, especially for booleans. They asked whether this approach is safe/recommended or whether company-specific annotations are the better path. This is a great practical exploration of the catalog's extensibility model that will resonate with any team standardising their component metadata.</p><h3>Community-Built Producer/Consumer Catalog Graph Processor</h3><p>In a standout community contribution post in <a href="https://discord.com/channels/687207715902193673/923144214580191282/1474101155322794179">#catalog</a>, <code>isaias.b</code> shared a custom catalog processor that creates symmetric relation types (<code>producesTo</code>/<code>producedBy</code>, <code>consumesFrom</code>/<code>consumedBy</code>) for modelling data flows between components - think Kafka topics, DB schemas, queues, and other resources. The processor and example <code>catalog.yaml</code> were shared directly in the channel with working screenshots of the resulting catalog graph. It's the kind of pattern that Backstage's extensibility model was designed for, and demonstrates how rich service dependency maps can be created without any core changes.</p><h3>Frontend System Migration: Beware of Duplicate Extension Errors</h3><p>An 8-message thread in <a href="https://discord.com/channels/687207715902193673/1101159492298743808/threads/1475497869954912519">#frontend-system</a> is a useful debugging reference for anyone currently migrating plugins to the new frontend system. <code>lgnd_seba</code> hit the <code>Plugin 'helm-dashboard' provided duplicate extensions: page:helm-dashboard</code> error while migrating a two-page plugin. The culprit: when a <code>PageBlueprint</code> extension is created, the <code>name</code> property must be kebab-case (<code>a-name-like-this</code> rather than <code>Something Like This</code>). Maintainer <code>vinzscam</code> confirmed this requirement. If your NFS migration is failing with duplicate extension errors, this is the first thing to check.</p><h3>API Extractor Issue Could Break CI for Community Plugin PRs on v1.48.0 Bump</h3><p>In <a href="https://discord.com/channels/687207715902193673/1201559534754345110/threads/1474830502446760027">#maintenance</a>, maintainer <code>Ahhhndre</code> flagged <a href="https://github.com/backstage/backstage/pull/32950">PR #32950</a> - an issue with the API Extractor tsdoc-base configuration that is expected to cause CI failures across community plugin PRs when the version bump to <code>1.48.0</code> runs. Plugin maintainers were advised to watch for this and may need to update PRs manually. Separately, the automated version bump scheduler was running as of Feb 24, generating <code>v1.48.2</code> community plugin bumps - see the <a href="https://discord.com/channels/687207715902193673/1201559534754345110/threads/1475766456670224414">auto-version-bump thread</a> for the schedule.</p><h2>Changelog</h2><h3>v1.48.2 - February 24, 2026</h3><p><strong>Fixes:</strong></p><ul><li>Restored <code>formFieldsApiRef</code> and <code>ScaffolderFormFieldsApi</code> alpha exports in <code>@backstage/plugin-scaffolder</code> that were removed in v1.48.0</li><li>Updated <code>@microsoft/api-extractor</code> to 7.57.3</li></ul><p><strong>Release:</strong><a href="https://github.com/backstage/backstage/releases/tag/v1.48.2">v1.48.2</a></p><h3>v1.49.0-next.0 - Pre-release</h3><p>The first pre-release of the v1.49.0 cycle is now available for early testing.</p><p><strong>Release:</strong><a href="https://github.com/backstage/backstage/releases/tag/v1.49.0-next.0">v1.49.0-next.0</a></p>
]]></content:encoded></item><item><title><![CDATA[Backstage v1.48 Ships, Patch Follows & CVE Alert]]></title><link>https://roadie.io/backstage-weekly/122-backstage-v1-48-ships-patch-follows-and-cve-alert/</link><guid isPermaLink="false">https://roadie.io/backstage-weekly/122-backstage-v1-48-ships-patch-follows-and-cve-alert/</guid><pubDate>Mon, 23 Feb 2026 14:00:00 GMT</pubDate><description><![CDATA[Backstage v1.48.0 introduces major New Frontend System updates, API restriction changes, and experimental MCP authorization support. We cover the 1.48.1 patch, CSS migration issues, ajv CVE-2025-69873, SCM webhook contributions, and new community plugins.]]></description><content:encoded><![CDATA[<p><img src="https://backstage.io/assets/images/kcon25-atl-contribfest-b92a27361da7f3bc16b3b957d716ac60.jpg" alt="Backstage ContribFest community collaboration"></p><h3>Backstage v1.48.0 Ships with Major New Frontend System Updates</h3><p>Backstage v1.48.0 shipped February 17 after nearly a month of pre-release testing. The release brings significant changes to the New Frontend System, including graduated catalog extension points, experimental MCP authorization support, and breaking changes to API restrictions.</p><p>Key highlights:</p><ul><li>Catalog processing extension points graduated from alpha to stable (remove <code>/alpha</code> imports).</li><li>API restrictions now enforced (plugins can only provide APIs to themselves, not other plugins). * New <code>createServiceMock</code> and <code>createApiMock</code> utilities for testing.</li><li>Plugin titles and icons now supported, and module federation enabled by default without build-time overhead.</li></ul><p>The release also introduces experimental <code>catalogScmEventsServiceRef</code> for instant catalog updates via webhooks, experimental Client ID Metadata Documents for MCP authorization (<code>auth.experimentalClientIdMetadataDocuments.enabled</code>), and experimental refresh token support to prevent hourly token expiration.</p><p>The breaking changes caught some teams off guard. Some users reported Soundcheck rendering issues tied to recently removed CSS variables in Backstage UI. Anyone running a custom theme should check that their files are referencing current CSS tokens before upgrading.</p><p><a href="https://github.com/backstage/backstage/releases/tag/v1.48.0">v1.48.0 release notes</a></p><h3>v1.48.1 Patch Fixes Type Compatibility and Documentation Issues</h3><p>A patch release shipped February 18, fixing two regressions from v1.48.0:</p><ul><li>A missing sharing extensions sidebar item in the frontend system architecture docs</li><li>A type compatibility issue for older plugins in the <code>FrontendFeature</code> type.</li></ul><p>If you upgraded to 1.48.0 and hit plugin type errors, update to 1.48.1.</p><p><a href="https://github.com/backstage/backstage/releases/tag/v1.48.1">v1.48.1 release notes</a></p><h3>Security Advisory: CVE-2025-69873 in ajv Dependency</h3><p>Community members flagged CVE-2025-69873 (CVSS 8.2) affecting ajv@6.12.6, a transitive dependency of <code>@backstage/cli@0.35.3</code>. The vulnerability involves potential denial-of-service via uncontrolled schema input. Maintainer freben assessed impact as low since ajv only runs during build, not in production applications. Teams that tried resolving it by upgrading to ajv@8.18.0 ran into breaking changes in the CLI's linting pipeline. The maintainers are still working through it.</p><p><a href="https://nvd.nist.gov/vuln/detail/CVE-2025-69873">CVE details</a></p><hr><h2>Roadie Blog</h2><p><img src="https://roadie.io/_next/image/?url=https%3A%2F%2Fimages.ctfassets.net%2Fhcqpbvoqhwhm%2F2ifARS13jPFyoGOHMJEIwr%2Fd82ab15ea3af3b5b226938731ea02d4a%2Fimage1.png%3Fw%3D500%26h%3D500%26fm%3Dwebp&#x26;w=640&#x26;q=75" alt="Supercharge your GitLab setup with Roadie&#x27;s Internal Developer Portal"></p><p>Roadie published a new post this week on GitLab integration: <a href="https://roadie.io/blog/supercharge-your-gitlab-setup/">Supercharge your GitLab setup with Roadie's Internal Developer Portal</a>. It covers how teams using GitLab can eliminate repo sprawl, centralize ownership and governance, and visualize CI/CD pipelines through Roadie's managed Backstage platform. The post focuses on getting a production-ready IDP running in hours rather than months.</p><h2>Community Discussions</h2><h3>Release Updates: Backstage v1.48.0 and v1.48.1</h3><p><a href="https://github.com/backstage/backstage/releases/tag/v1.48.0">Backstage v1.48.0</a> shipped on February 17, followed quickly by a <a href="https://github.com/backstage/backstage/releases/tag/v1.48.1">patch release v1.48.1</a> on February 18. The patch fixed two regressions introduced in 1.48.0: a missing sharing extensions sidebar item in the frontend system architecture docs, and a type compatibility issue for older plugins in the FrontendFeature type. Community members reported that some third-party plugins (notably Soundcheck) showed rendering issues after upgrading to 1.48.0, and a thread in <a href="https://discord.com/channels/687207715902193673/687207715902193679/threads/1473623389334667266">#general</a> noted that GabDug pointed to recently removed CSS variables in the latest Backstage UI update as a likely cause. Users encountering visual glitches after upgrading should check whether they need to update CSS variable references in custom theme files.</p><h3>New Frontend System: "Is It Production-Ready?" Gets a Definitive Answer</h3><p>One of the most active discussions of the week came from <a href="https://discord.com/channels/687207715902193673/1006844959170764851/threads/1473031098639450247">#support</a> (25 replies), where Dinesh asked whether the New Frontend System is production-ready, what the alpha/experimental status means, and whether teams should migrate now or wait.</p><p>Maintainer Ahhhndre gave a clear and confident answer: <em>the NFS has been announced as adoption-ready for several months and many organizations are already running it in production.</em> The thread evolved into a practical migration walkthrough, with Sarabadu and Ahhhndre helping Dinesh navigate the transition from <code>convertLegacyAppOptions</code> to the new <code>createApp</code> API and clarifying plugin compatibility with signals.</p><p>Key clarifications from maintainers:</p><ul><li>There is no difference from a deployment standpoint between the legacy and new frontend systems.</li><li><code>convertLegacyAppOptions</code> is a transitional helper that will be removed once the full migration is complete.</li><li><code>signalPlugin</code> is already NFS-compatible and should not be added to the legacy options during migration.</li></ul><p>If you're looking for more information, check out these <a href="https://backstage.io/docs/frontend-system/">docs and migration guides</a></p><h3>BUI Migration Pain Points: Theming and Missing Card Types</h3><p>Teams migrating to Backstage UI (BUI) ran into several friction points this week. In <a href="https://discord.com/channels/687207715902193673/1101159492298743808/threads/1472875207361433633">#frontend-system</a>, lgnd_seba reported being unable to apply a custom theme when migrating to BUI, finding that neither <code>import '@backstage/ui/css/styles.css'</code> nor the CSS variable approach using <code>[data-theme-mode='dark']</code> caused the component to pick up the custom font; it fell back to the BUI default system-ui. In the same channel, adders flagged that <code>EntityDependencyOfComponentsCard</code> is missing an entity-card equivalent in the NFS, with no clear workaround for using existing cards. Brian Wink noted that <code>type: summary</code> was removed in 1.48.0 for Overview cards, raising questions about how to place two smaller cards side-by-side without it.</p><h3>Security Advisory: CVE-2025-69873 in ajv@6.12.6 (Backstage CLI Dependency)</h3><p>A message thread in <a href="https://discord.com/channels/687207715902193673/1101159492298743808/threads/1472875207361433633">#security</a> raised a Snyk alert for ajv@6.12.6, which is a transitive dependency of @backstage/cli@0.35.3. The vulnerability is CVE-2025-69873 (CVSS 8.2, SNYK-JS-AJV-15274295) and involves a potential denial-of-service via uncontrolled schema input. Maintainer freben assessed the impact as low for Backstage since ajv is used only in the build process (not in the running application).</p><p>Teams attempting to resolve the issue by upgrading to ajv@8.18.0 reported that doing so breaks the CLI's linting pipeline with "NOT SUPPORTED: option missingRefs" errors. The thread was ongoing as of Feb 18, with the team investigating the correct version bump path.</p><p><a href="https://nvd.nist.gov/vuln/detail/CVE-2025-69873">CVE details</a></p><h3>Call for Help: SCM Webhook Event Handlers for the Catalog</h3><p>In <a href="https://discord.com/channels/687207715902193673/923144214580191282/1471821293983764551">#catalog</a>, maintainer freben shared an open call for community contributions. The Backstage catalog now has a generic interface for handling SCM events (things like file changes, repo renames/deletions, branch creation, and archiving), but only a GitHub adapter has been implemented so far. Teams using GitLab, Bitbucket, or other SCM providers that want instant reactive updates to catalog state are encouraged to contribute adapters. This was a required feature for the 1.48 release cycle.</p><p><a href="https://github.com/backstage/backstage/issues/32833">GitHub Issue #32833</a></p><h3>Community Plugin: Excalidraw-Style Catalog Graph</h3><p>Milan May'r shared a new community plugin in <a href="https://discord.com/channels/687207715902193673/696709358544879716/1470820083809914980">#visual-design</a> and <a href="https://discord.com/channels/687207715902193673/1211692810294788126/1470820170615492671">#plugins</a>: <code>backstage-plugin-roughjs-catalog-graph</code>, which replaces the standard Relations Graph on entity pages with one rendered using rough.js (the same hand-drawn aesthetic popularized by Excalidraw). The plugin takes approximately five minutes to install. It received positive reactions in the community and is a fun way to give the dependency graph a more casual, whiteboard-style look.</p><p><a href="https://github.com/milanmayr/backstage-plugin-roughjs-catalog-graph">View the plugin on GitHub</a></p><h3>Kubernetes-Ingestor Plugin: New Release with Cache Improvements</h3><p>A 9-message thread in <a href="https://discord.com/channels/687207715902193673/1471907254587490417">#plugins</a> tracked a community request for a new release of the kubernetes-ingestor plugin. User prims47 had contributed a PR improving cache behavior when resolving owner from namespace, and Thomvaill's team was waiting on the release to plan their project schedule. Plugin maintainer Scott Rosenberg (vRabbi) confirmed on Feb 17 that a new release went out with the changes, and prims47 noted significantly improved performance on local testing.</p><h3>Volvo Backstage Adoption Story Featured in Community Session</h3><p>In <a href="https://discord.com/channels/687207715902193673/696709358544879716">#adoption</a>, mihait announced that the upcoming Backstage Community Session (week of Feb 18) would feature Volvo showcasing their Backstage adoption journey. This continues the tradition of enterprise adoption stories in the monthly community calls and is a great resource for teams making the business case for Backstage internally.</p><h3>TechDocs Content Rendering Randomly Blank in 1.44.x</h3><p>A detailed bug report landed in <a href="https://discord.com/channels/687207715902193673/714754240933003266/1473120233639121040">#techdocs</a> from user RP on Feb 17: TechDocs pages randomly show a blank content area while the sidebar renders correctly, with the issue appearing after 3–20 navigation clicks through docs pages.</p><p>The instance is running Backstage 1.44.1 with an external builder and GCS publisher. Network inspection showed all requests completing with 200/304 responses and no timeouts, making it tricky to diagnose. RP noted the issue is more common on pages with nested navigation and a custom plugin linking TechDocs for 150+ technologies. The thread was open for community input as of this writing.</p><hr><h2>Changelog</h2><p><strong>v1.48.0</strong> (Feb 17, 2026)
Major release with graduated catalog extension points, NFS enhancements, module federation enabled by default, experimental MCP authorization, and breaking changes to API restrictions. Full changelog at <a href="https://github.com/backstage/backstage/blob/master/docs/releases/v1.48.0-changelog.md">docs/releases/v1.48.0-changelog.md</a>.</p><p><strong>v1.48.1</strong> (Feb 18, 2026)
Patch release fixing missing sharing extensions sidebar item in frontend system docs and type compatibility for older plugins.</p><p><a href="https://github.com/backstage/backstage/releases">All releases</a></p><hr>
]]></content:encoded></item><item><title><![CDATA[Wiz Plugin Reaches GA & Spotify Details Mobile Release Engineering with Backstage]]></title><link>https://roadie.io/backstage-weekly/121-wiz-plugin-ga-spotify-release-engineering/</link><guid isPermaLink="false">https://roadie.io/backstage-weekly/121-wiz-plugin-ga-spotify-release-engineering/</guid><pubDate>Mon, 16 Feb 2026 14:00:00 GMT</pubDate><description><![CDATA[This week highlights real-world Backstage adoption: Wiz launches its GA plugin, Spotify details its mobile release engineering dashboard, and the community dives into security advisories, scaffolder patterns, and backend challenges.]]></description><content:encoded><![CDATA[<h3>Wiz Plugin Reaches General Availability</h3><p><img src="https://www.datocms-assets.com/75231/1770136797-backstage-2x.png?dpr=0.5&#x26;fm=webp" alt="Wiz Plugin Reaches General Availability - Image from Wiz blog post"></p><p>Wiz published their first-party Backstage plugin on February 6. The <code>@wiz-sec/backstage-plugin-wiz</code> package surfaces Wiz Issues and Vulnerabilities directly in your portal by mapping Wiz projects to catalog components.</p><p>You can search and filter findings by rule, resource, or CVE, track severity, and navigate into Wiz for remediation without leaving Backstage. This is distinct from the earlier Roadie-built Wiz plugin, representing Wiz's own investment in the Backstage ecosystem.</p><p><a href="https://www.wiz.io/blog/wiz-spotify-backstage">Wiz blog post</a></p><h3>Spotify Details Mobile Release Engineering with Backstage</h3><p><img src="https://engineering.atspotify.com/_next/image?url=https%3A%2F%2Fimages.ctfassets.net%2Fp762jor363g1%2F71j14YPhkb7exdwGJVJTY7%2Fea363f7f74cd73bec5afad1a7a70c95c%2FHow_we_release_the_main_Spotify_app_Part_2_featured_final.png&#x26;w=750&#x26;q=75" alt="Spotify Mobile Release - Image from Spotify blog post"></p><p>Spotify Engineering published Part 2 of their mobile release process deep-dive on February 9. The post details how their Release Manager Dashboard, built as a Backstage plugin in React/TypeScript, uses the Software Catalog for build distribution configuration.</p><p>The article covers the evolution from Jira-based release tracking to a unified Backstage-powered dashboard, including backend optimization, automated release progression ("the Robot"), and data-driven release insights.</p><p><a href="https://engineering.atspotify.com/2026/2/how-we-release-the-spotify-app-part-2">Read the post</a> | <a href="https://engineering.atspotify.com/2025/04/how-we-release-the-spotify-app-part-1">Part 1 from April 2025</a></p><hr><h2>From the Roadie Blog</h2><p><img src="https://roadie.io/_next/image/?url=https%3A%2F%2Fimages.ctfassets.net%2Fhcqpbvoqhwhm%2F4vvjI8YXk62MaINfC6FQjw%2F7a56658a110c9ed0d65f7cc0e95a6c64%2Fimage1.png%3Fw%3D500%26h%3D500%26fm%3Dwebp&#x26;w=640&#x26;q=75" alt="">
We published <a href="https://roadie.io/blog/backstage-microservices-strategies/">Backstage Microservices Strategies: Taming Sprawl with a Service Catalog</a> on February 12.</p><p>The piece tackles the ownership problem: when a 3 AM incident cascades through your 400-microservice architecture, who owns what's broken? Without a centralized system of record, you accumulate "zombie services" that nobody claims until they fail.</p><p>Key sections cover the hidden cost of microservices at scale (Expedia's 5,000 developers managing 20,000 services), how Backstage functions as your microservices operating system, Golden Paths that eliminate the copy-paste tax (Spotify's new service creation time dropped from 14 days to 5 minutes), dependency visualization for blast radius analysis, and Tech Insights that gamify production readiness.</p><p>The article compares self-hosted versus managed options, noting self-hosted typically requires 2-3 dedicated FTEs with TypeScript/React expertise, while managed solutions like Roadie cost approximately $20/user/month with same-day setup.</p><hr><h2>Community Discussions</h2><h3>New Pull Request Review Workflow for Backstage Contributors</h3><p>The Backstage maintainers have <a href="https://github.com/backstage/backstage/issues/32794">launched a significantly improved pull request review process</a> that makes it easier for community members to become reviewers. The new workflow incorporates a dedicated reviewers group from the start, addressing long-standing feedback about contribution barriers. This change aims to make the review process more transparent and accessible, particularly for those wanting to contribute at a deeper level. The initiative comes with a call for new reviewers to join the program, with RBAC permissions to ensure only authorized platform team members can participate.</p><h3>Developer Experience: Manual Triggering of Scheduled Tasks</h3><p>A <a href="https://discord.com/channels/687207715902193673/1470354816193531945">significant discussion emerged</a> around the pain points of testing scheduled tasks during development. Currently, developers must modify task frequency in config, restart the app, and wait for execution—a slow feedback loop that can take several minutes per iteration. Community member Thomvaill proposed building a "Task Manager" plugin that would provide a UI at <code>/task-manager</code> to list and manually trigger tasks across all plugins, leveraging the existing scheduler trigger API (<code>POST /.backstage/scheduler/v1/tasks/&#x3C;taskId>/trigger</code>). The proposed solution would integrate with Backstage's native auth, support RBAC permissions, and show task status, run history, and cadence information. This resonated with multiple community members facing similar development workflow challenges.</p><h3>Security Vulnerability: tar Package Advisory</h3><p>Users <a href="https://discord.com/channels/687207715902193673/1468949919653171221">reported concerns</a> about the tar package vulnerability (versions &#x3C;=7.5.3) affecting Backstage 1.45.3 installations. The discussion focused on identifying remediation paths and whether upgrading to newer Backstage versions would resolve the issue. This thread included 14 messages with community members sharing workarounds and dependency resolution strategies, highlighting the ongoing need for security vigilance in the ecosystem.</p><h3>Scaffolder: Multiple Action Modules Support</h3><p><a href="https://discord.com/channels/687207715902193673/1471246543402307789">Discussion about scaffolder architecture</a> revealed questions about organizing multiple action modules within a single scaffolder backend module. When running <code>yarn backstage-cli new</code> to create a new action module, developers wondered whether multiple actions should live in separate subdirectories or if there's a recommended pattern for organizing multiple related actions. The conversation highlighted documentation gaps around scaffolder action organization patterns.</p><h3>Catalog Backend: SQLite Race Condition Issues</h3><p>Users <a href="https://discord.com/channels/687207715902193673/1471141097911750796">encountered race condition problems</a> when using SQLite for Backstage catalog backend storage, with multiple participants discussing whether this is a known limitation of the in-memory/SQLite configuration. The recommendation shifted toward using file storage or PostgreSQL for production deployments to avoid database locking issues during concurrent operations. This thread contained 8 messages exploring the technical details of the problem and referencing <a href="https://github.com/backstage/backstage/issues/22207">GitHub issue #22207</a>.</p><h3>Authentication: GitHub Enterprise OAuth Scope Errors</h3><p>Multiple users <a href="https://discord.com/channels/687207715902193673/978977570852835379">reported</a> "Refresh failed, session has not been granted the requested scope" errors when trying to access Backstage components. The discussion focused on GitHub integration configurations and whether certain auth providers properly handle scope refresh tokens. Additionally, there was a thread about GitHub Enterprise authentication CORS policy issues when the GitHub Actions plugin attempts to fetch CI/CD pipeline data from self-hosted instances.</p><h3>Backend System: OpenTelemetry Setup Challenges</h3><p>A user <a href="https://discord.com/channels/687207715902193673/1034089724664610938">struggled with internal Backstage metrics deployment</a> using Helm Chart, specifically around OpenTelemetry configuration. The thread included detailed troubleshooting with 2 messages pointing to <a href="https://github.com/backstage/charts/issues/307">GitHub issue #307</a> in the backstage/charts repository for documentation improvements around metrics setup.</p><h3>Community Plugin: rough.js-based Relations Graph</h3><p>A <a href="https://discord.com/channels/687207715902193673/1211692810294788126">new community plugin was shared</a> that updates the visuals of the Relations Graph using the <code>rough.js</code> library to give components a hand-drawn, sketch-like appearance inspired by Excalidraw. The implementation is described as simple and takes only 5 minutes to set up, offering an alternative visual style for catalog entity relationships. <a href="https://github.com/milanmayr/backstage-plugin-roughjs-catalog-graph">View the plugin on GitHub →</a></p><h3>Catalog Backend Actions Documentation</h3><p><a href="https://discord.com/channels/687207715902193673/1470547837950623866">A discussion emerged</a> about whether there should be formal documentation for the catalog-backend actions or if the community should rely on description and parameter descriptions within the code. The conversation highlighted interest in creating a basic README under the actions directory or in the top-level catalog plugin documentation to make these actions more discoverable for developers.</p><h3>CNCF Travel Support for KubeCon EU Contributors</h3><p>Community contributor Ayush More, who has been contributing to Backstage for several months, <a href="https://discord.com/channels/687207715902193673/1470708184217026662">received approval for a CNCF Travel Scholarship</a> to KubeCon EU. However, as a 17-year-old traveling solo from India, additional costs like the Tatkaal passport and Schengen visa aren't covered. The community discussed possibilities for a small $200-300 "contributor stipend" to help bridge this gap, highlighting the challenges young international contributors face attending events.</p><hr><h2>Changelog</h2><h3>Core Releases</h3><p><strong>v1.48.0-next.2</strong> (Feb 10, 2026)
Pre-release continuing v1.48.0 development. Full changelog at <a href="https://github.com/backstage/backstage/blob/master/docs/releases/v1.48.0-next.2-changelog.md">docs/releases/v1.48.0-next.2-changelog.md</a>. The <a href="https://demo.backstage.io/">demo site</a> runs this version for early testing.</p><p>Latest stable release remains v1.47.3 from February 2.</p><p><a href="https://github.com/backstage/backstage/releases">All releases</a></p>
]]></content:encoded></item><item><title><![CDATA[TechDocs Security Patch, 14+ Plugin Updates & BackstageCon EU]]></title><link>https://roadie.io/backstage-weekly/120-techdocs-security-patch-plugin-updates-backstagecon-eu/</link><guid isPermaLink="false">https://roadie.io/backstage-weekly/120-techdocs-security-patch-plugin-updates-backstagecon-eu/</guid><pubDate>Mon, 09 Feb 2026 14:00:00 GMT</pubDate><description><![CDATA[Backstage v1.47.3 ships a TechDocs security fix, 14+ community plugins update for compatibility, BackstageCon Europe dates are confirmed, and the community debates tar vulnerabilities, theming bugs, and Renovate PR overload.]]></description><content:encoded><![CDATA[<h3>TechDocs Security Patch Shipped</h3><p>Backstage v1.47.3 shipped February 2nd with security fixes for <code>@backstage/plugin-techdocs-node</code>. The patch addresses vulnerabilities in how TechDocs handles external content. If you're running TechDocs, upgrade now.</p><p>Still on 1.46.x? v1.46.5 backports the same fixes.</p><p>This follows the security improvements in v1.47.0 from January 20th for Software Templates and external content reading. Use the <a href="https://backstage.github.io/upgrade-helper/">Backstage Upgrade Helper</a> for your upgrade.</p><p><a href="https://github.com/backstage/backstage/releases/tag/v1.47.3">v1.47.3 release notes</a> | <a href="https://github.com/backstage/backstage/releases/tag/v1.46.5">v1.46.5 release notes</a></p><h3>14+ Community Plugins Updated</h3><p>Between February 4-5, over 14 community plugins got version bumps for v1.47.3 compatibility: SonarQube, Azure DevOps, RBAC, Jenkins, OCM, Tech Radar, ServiceNow, 3scale, Quay, Keycloak, and several scaffolder backend modules.</p><p>Beyond version bumps, a few substantial changes landed:</p><p>Cost Insights now supports custom date ranges (<a href="https://github.com/backstage/community-plugins/pull/7463">#7463</a>). You can analyze cloud costs over specific periods instead of fixed windows.</p><p>Confluence fixed legacy app-config compatibility for the search collector (<a href="https://github.com/backstage/community-plugins/pull/7494">#7494</a>).</p><p>MCP Chat updated to @modelcontextprotocol/sdk v1.26.0 (<a href="https://github.com/backstage/community-plugins/pull/7479">#7479</a>).</p><p><a href="https://github.com/backstage/community-plugins/pulls">Browse all updates</a></p><h3>BackstageCon Europe: Dates Confirmed</h3><p><img src="https://events.linuxfoundation.org/wp-content/uploads/2025/10/KC-CNC-EU-26-Subhero-1920x600.png" alt="BackstageCon and KubeCon + CloudNativeCon Europe 2025"></p><p>As we mentioned last week, BackstageCon Europe 2026 happens March 23-26 in Amsterdam, co-located with KubeCon + CloudNativeCon Europe. The sponsorship deadline passed February 2nd, but registration opens soon.</p><p>Amsterdam will also host a Backstage ContribFest session on March 26th where you can contribute directly to the project. <a href="https://kccnceu2026.sched.com/event/2EFTv">Full schedule here</a>.</p><p>If you missed BackstageCon North America 2025 in Atlanta, videos are available on <a href="https://www.youtube.com/playlist?list=PL8iP9yIjU0Q33vpSaBlAvIhgDb-9smXUU">Backstage Community YouTube</a>.</p><p><a href="https://events.linuxfoundation.org/kubecon-cloudnativecon-europe/co-located-events/backstagecon/">Event page</a></p><hr><h2>Ecosystem Pulse</h2><p>AI + Platform Engineering convergence continues to be a major theme for 2026. Jennifer Riggins at The New Stack published <a href="https://thenewstack.io/in-2026-ai-is-merging-with-platform-engineering-are-you-ready/">In 2026, AI Is Merging With Platform Engineering. Are You Ready?</a> noting that Spotify used AI agents to generate 1,500+ merged PRs with 60-90% time savings, and internal developer platforms have become "nearly universal" per the DORA report.</p><p>Roadie published <a href="https://roadie.io/blog/ai-is-showing-up-in-developer-portals/">AI, IDPs and Platform Teams: What We're Seeing</a> documenting how platform teams are experimenting with RAG over TechDocs, AI-powered scaffolder actions, and natural language queries across internal tools. Key challenge: AI agents are being built in silos without discoverability, ownership, or governance. Roadie's solution treats AI agents as first-class catalog entities, just like services, enabling teams to track who owns what, where PII flows, and whether agents follow security standards.</p><hr><h2>Community Discussions</h2><h3>Aliases Configuration Partially Broken</h3><p>A user <a href="https://discord.com/channels/687207715902193673/687207715902193679/1468509507092221952">deploying Backstage with multiple aliases in #general</a> hit customization issues on January 30. Ingress patches, CORS configuration, and Azure app callbacks all need fixes. Only some alias functionality works.</p><h3>Tar Vulnerability in 1.45.3</h3><p>The <a href="https://discord.com/channels/687207715902193673/687207715902193679/1468949919653171221">#general channel surfaced a discussion</a> February 5 about the tar (&#x3C; 7.5.3) vulnerability affecting Backstage 1.45.3. Tar is a transitive dependency. The bookworm-slim base image makes this worse because packages age without updates.</p><p>Users want remediation options. No clear path forward yet.</p><h3>Dark Mode Theming Broken</h3><p>Custom themes with company logos work in light mode but break in dark mode, according to <a href="https://discord.com/channels/687207715902193673/687207715902193679/1468948605720203324">a #general post tagged #visual-design</a> from February 5. The sidebar uses one theme, while catalog and home pages use different theming.</p><h3>Timezone Support Request</h3><p>A Sydney-based team <a href="https://discord.com/channels/687207715902193673/831533806899953715/1467662925299978441">asked in #meetups</a> on February 2 for different timezone support for community sessions and calls. Current times mean 2am calls.</p><h3>Renovate Creates Immortal PRs</h3><p>Renovate creates persistent PRs for Backstage security updates, <a href="https://discord.com/channels/687207715902193673/1201559534754345110/1466821865111552030">according to discussion in #maintenance</a> on January 30. OSV vulnerability alerts create too many PRs. You can't configure them at package level, only globally. These PRs block the concurrent PR limit.</p>
]]></content:encoded></item></channel></rss>