Skip to main content


These are the release notes for the v1.23.0 release of Backstage.

A huge thanks to the whole team of maintainers and contributors as well as the amazing Backstage Community for the hard work in getting this release developed and done.


Auth module migrations

Several more auth providers have been migrated to be implemented as standalone modules, adding support for them in the new backend system. The migrated providers are microsoft, oidc, and aws-alb. If you detect any issues, please reach out on Discord or open an issue.


We’ve removed the last of the legacy exports from /alpha. Please open an issue if there’s a reason why you still need to use them.

If you’re using the New Backend System and the Scaffolder plugin, the built in modules have been trimmed down, so you’ll need to install other modules in order to pull in additional actions. You can read more in the migration guide

New Module: @backstage/plugin-scaffolder-backend-module-gitea

Provides actions to the Scaffolder for creating repositories and pushing to Gitea. Thanks to @cmoulliard!

New Modules: @backstage/plugin-scaffolder-backend-module-bitbucket-cloud and @backstage/plugin-scaffolder-backend-module-bitbucket-server

Thanks to @pjungermann’s work, we’ve now broken apart the BitBucket module into two separate modules to provide different actions to support the different BitBucket offerings.

This change also deprecates the original @backstage/plugin-scaffolder-backend-module-bitbucket, so if you’re using the new Backend System we encourage you to move towards using these new modules instead.

New lint rule to forbid top-level MUI imports

The @backstage/eslint-rules package now provides the @backstage/no-top-level-material-ui-4-imports rule that forbids imports such as import { Box } from '@material-ui/core'. This rule is currently disabled by default and needs to be manually enabled in .eslintrc.js:

module.exports = require('@backstage/cli/config/eslint-factory')(__dirname, {
rules: {
'@backstage/no-top-level-material-ui-4-imports': 'error',

Automatic package repository fields

The backstage-cli repo fix command will now update the repository fields in all workspace packages, as long as the root package.json has the repository field set.

Kubernetes cluster name uniqueness check

The Kubernetes plugin now enforces the policy of all configured clusters having unique names. The backend will now fail to start if that is not the case.

Auth backend SAML provider dependency switch

The implementation of the SAML provider in the auth backend is now based on @node-saml/passport-saml instead of the deprecated passport-saml package. This is a breaking change since the audience configuration is now mandatory, and the wantAuthnResponseSigned and wantAssertionsSigned options are enabled by default but possible to configure.

Update repo-tools OpenAPI commands structure

The schema openapi commands of the @backstage/repo-tools package have been restructured. They are now divided into package schema openapi and repo schema openapi commands. For a more detailed list of changes, see the changelog of the repo-tools changelog.

Gerrit integration now requires Gitiles

When integrating a Gerrit instance with Backstage it is now required to have the Gitiles plugin installed in Gerrit. This allowed the Backstage integration to use a richer set of APIs, rather than interacting only over the git protocol.

This behavior can be temporarily disabled via setting DISABLE_GERRIT_GITILES_REQUIREMENT=1 in the environment. This flag will be removed in a future release, so if you depend on this behavior please open an issue.

Security Fixes

This release contains an improvement to the default backend error handling middleware that will filter out some known error types that should never be returned in client responses.

Below you can find a list of links and references to help you learn about and start using this new release.

Sign up for our newsletter if you want to be informed about what is happening in the world of Backstage.