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,TaskStatusare 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 startcommand uses thedev/folder as the entry point and executesdev/index.tsxfile; - Running
yarn package start --entrypoint dev/alphawill instead usedev/alpha/as the entry point and executedev/alpha/index.tsfile.
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.
Links and References
Below you can find a list of links and references to help you learn about and start using this new release.
- Backstage official website, documentation, and getting started guide
- GitHub repository
- Backstage's versioning and support policy
- Community Discord for discussions and support
- Changelog
- Backstage Demos, Blog, Roadmap and Plugins
Sign up for our newsletter if you want to be informed about what is happening in the world of Backstage.