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 thedev/
folder as the entry point and executesdev/index.tsx
file; - Running
yarn package start --entrypoint dev/alpha
will instead usedev/alpha/
as the entry point and executedev/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.
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.