News
Here are the stories and projects that caught our attention this week:
CNCF End User Case Study Contest opens for Backstage adopters
The CNCF announced their End User Case Study Contest, which showcases proven, real-world adoption of CNCF technologies including Backstage by end user organizations. Winners will present a 5-minute live keynote at KubeCon + CloudNativeCon EU 2026 in Amsterdam (March 23-26, 2026) and have their case study published on cncf.io. The contest closes on January 30, 2026 at 11:59pm PT, with winners announced by February 25, 2026. End user case studies published on cncf.io during 2025 will also be considered.
Backstage agent skills for AI assistants
A community member shared a new GitHub repository called backstage-agent-skills that provides Backstage skills for AI agents. The project aims to help AI assistants interact with Backstage instances programmatically. This is part of the growing intersection between AI and developer platforms as organizations look to automate more workflows.
Code Wiki generates automated documentation for Backstage
A new tool called Code Wiki has appeared that automatically generates up-to-date documentation for codebases. The community discussion highlighted its potential application for the Backstage repository itself, providing automatically generated API references and architecture overviews without manual documentation work.
Backstage Changelog
A quick look at the changes that shipped in Backstage v1.47.0, released on January 20th.
Breaking Changes
-
Redesigned Table and useTable in @backstage/ui - The Table component now has pagination, sorting, selection, and data display built-in. The low-level wrapper is now TableRoot. The useTable hook supports three pagination modes: complete, offset, and cursor. Migration guide →
-
Updated color tokens in @backstage/ui - Color tokens updated to align with the new neutral surface-based design system. The
-tinttokens have been removed. -
Redirect validation in URL reader -
coreServices.urlReadernow validates redirect chains against the allow list inbackend.reading.allow. The FetchUrlReader class constructor is now private, replaced with afromConfigstatic factory method. -
Better AWS S3 auth handling in TechDocs - Auth priority is now: 1)
aws.accounts, 2)techdocs.publisher.awsS3.credentials, 3)integrations.awsS3, 4) Default credential chain.
Features
-
Backend action filtering support - ActionsService now supports action filtering based on configuration to control which actions are exposed to consumers like the MCP backend.
-
GitHub repository workflow access configuration - The scaffolder now supports configuring
workflowAccesslevel when creating GitHub repositories to control GitHub Actions workflow access. Contributed by @fearphage in #32237 -
Additional Kafka Events streaming settings - The Kafka event module now supports
fromBeginningoffsets andautoCommit. Contributed by @imod in #31410
Improvements
-
Home plugin UI improvements - Widget configuration changes now only save when the Save button is clicked. A new Cancel button lets users discard unsaved changes. Contributed by @kmikko in #31198
-
GithubOrgEntityProvider performance boost - The provider now fetches only specific user teams instead of all organization users when processing membership events, and uses
addEntitiesOperationinstead ofreplaceEntitiesOperationto avoid unnecessary deletions. Contributed by @angeliski in #32184 -
Link component navigation fix - The Link component now properly uses React Router's navigation system instead of causing full page refreshes for internal routes.
Deprecations
-
App customization blueprints moved - IconBundleBlueprint, NavContentBlueprint, RouterBlueprint, SignInPageBlueprint, SwappableComponentBlueprint, ThemeBlueprint, and TranslationBlueprint have been deprecated and moved to
@backstage/plugin-app-react. These are now restricted to use in the app plugin only. -
API factory restrictions - Plugins are now restricted from overriding core Utility APIs and API factories from other plugins. Overrides must be made using plugin overrides or modules.
Security Fixes
This release contains security fixes for Software Templates and reading external content.
Community Discussions
Here's what the Backstage community has been talking about this week:
Entity naming best practices
With auto-ingestion of GitHub repos, AWS resources, and Kubernetes resources, a community member asked about handling name clashes across entity types. The discussion covered using namespaces to scope things (kubens, aws, github) versus prefixing names. Using spec.title for more explicit names in the UI was also suggested as a way to maintain clean URLs while showing friendly names.
CLI templates and conditional file creation
Questions about the CLI templates feature revealed that you can name files with variables like plugin-{{ pluginId }}.prod.yaml.hbs and use conditional logic like {%- if values.some == "yes" -%}file-name.yaml{%- endif -%} to only create files when conditions are met. This applies both to file names and content within files.