Skip to main content

v1.44.0

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

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

Highlights

Scaffolder Backend 3.0

BREAKING:

Removal of deprecated types and interfaces: CreateWorkerOptions, CurrentClaimedTask, DatabaseTaskStore, TaskManager, etc.

The TaskBroker interface now requires the cancel, recoverTasks, and retry methods to be implemented. If your implementation of TaskBroker doesn’t use these methods, you can replace them with a no-op () => void function. Please reach out to us in an issue as we're thinking about completely removing the TaskBroker extension point soon and would like to hear your use cases for the upcoming re-architecture of the scaffolder-backend plugin.

The scaffolderActionsExtensionPoint has been moved from /alpha to the main export.

// before
import { scaffolderActionsExtensionPoint } from '@backstage/plugin-scaffolder-node/alpha';

// after
import { scaffolderActionsExtensionPoint } from '@backstage/plugin-scaffolder-node';

DEPRECATION:

We're going to be working on refactoring a lot of the internals of the Scaffolder backend plugin, and with that come a lot of deprecations and removals for public types that are making these things hard.

If you're using these types, please reach out to us either on Discord or a GitHub issue with your use cases.

  • SerializedTask, SerializedTaskEvent, TaskBroker, TaskContext, TaskBrokerDispatchOptions, TaskBrokerDispatchResult, TaskCompletionState, TaskEventType, TaskFilter, TaskFilters, TaskStatus are the types that have now been marked as deprecated, and will be removed in a future release.

Design System: Backstage Theme

BREAKING Removed the built-in CssBaseline from UnifiedThemeProvider. If your Backstage instance looks broken after this update, you likely forgot to add our new Backstage UI global CSS. To do that, please import @backstage/ui/css/styles.css in packages/app/src/index.tsx:

import '@backstage/ui/css/styles.css';

This change also removes the noCssBaseline prop, which became redundant.

Design System: Backstage UI

NEW

Adding a new Dialog component to Backstage UI. Contributed by @ssjoblad in #31371 Added new virtualized, maxWidth and maxHeight props to Menu, MenuListBox, MenuAutocomplete and MenuAutocompleteListBox to allow for virtualization of long lists inside menus.

BREAKING

New PasswordField component - removed password and search types from TextField. Contributed by @birdhb in #31238 Restructured Backstage UI component styling to use CSS Modules instead of pure CSS. We don't expect this to be an issue in practice but it is important to call out that all styles are now loaded through CSS modules with generated class names. We are still providing fixed class names for all components to allow anyone to style their Backstage instance. The ScrollArea component has been removed from Backstage UI because it did not meet our accessibility standards. Removed Icon component in Backstage UI. This component was creating issues for tree-shaking. It is recommended to use icons from @remixicon/react until we find a better alternative in Backstage UI.

BREAKING: Extension testing with new renderTestApp

The extensions option was removed from renderInTestApp, because it led to confusing effects where the old and new frontend worlds were mixed. If you need to pass extensions to the test app, use the new renderTestApp utility instead.

Backstage CLI: Yarn plugin

Added automatic detection and support for the Backstage Yarn plugin when generating new packages with yarn new. When the plugin is installed, new packages will automatically use backstage:^ ranges for @backstage/* dependencies.

Backstage CLI: App entrypoints

Added a new --entrypoint option to the package start command, which allows you to specify a custom entry directory/file for development applications. This is particularly useful when maintaining separate dev apps for different versions of your plugin (e.g., stable and alpha).

For example, consider the following plugin dev folder structure:

dev/
index.tsx
alpha/
index.ts
  • The default yarn package start command uses the dev/ folder as the entry point and executes dev/index.tsx file;
  • Running yarn package start --entrypoint dev/alpha will instead use dev/alpha/ as the entry point and execute dev/alpha/index.ts file.

Support for custom external service auth methods

A new service ref has finally landed: the external token handler. This allows adopters to add custom handlers for authorization tokens that are sent to your backend plugins. So if your organization already has a settled service-to-service auth method in your backend flora, you can now seamlessly make Backstage accept those too. This complements the pre-existing support for static and JWKS-based tokens.

As usual, it's all documented in the corresponding service-to-service auth section on the microsite.

Contributed by @Sarabadu in #28942

New plugin: Themer

There’s a new Material UI to Backstage UI migration helper plugin. It adds a new page at /mui-to-bui that converts an existing MUI v5 theme into Backstage UI (BUI) CSS variables, with live preview and copy/download. There are some more details and screenshots in the pull request.

Relaxed linting in the new frontend system

The built-in lint rules used to forbid frontend plugin packages from importing other frontend plugin packages - those dependencies should normally be moved to a -react or -common package instead.

But in the new frontend system, it becomes a common desire to extend and adapt other plugins, which implies importing those plugins in code. So the lint rules have been relaxed to support this specific case, IF the plugin IDs of the two packages are the same.

This means that you can now make an (internal) frontend plugin package that your app imports, and then that internal package in turn imports the open source plugin you are adapting. So you no longer have to keep your adaptations inside the app itself!

Contributed by @drodil in #31373

TechDocs CLI serve now supports live reloading

The TechDocs CLI and its embedded app now leverage mkdocs live reload support. Let us know how it works out for you!

Contributed by @GabDug in #30541

Easier server options through config

You can now more easily set low level HTTP server options such as request timeouts for your backend, directly from your app-config without having to adapt your root HTTP router service. Check out the relevant service docs for more details!

Contributed by @BethGriggs in #30483

Security Fixes

This release does not contain any security fixes.

Upgrade path

We recommend that you keep your Backstage project up to date with this latest release. For more guidance on how to upgrade, check out the documentation for keeping Backstage updated.

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.