Release v1.47.0
Upgrade Helper: https://backstage.github.io/upgrade-helper/?to=1.47.0
@backstage/backend-defaults@0.15.0
Minor Changes
-
6fc00e6: Added action filtering support with glob patterns and attribute constraints.
The
ActionsServicenow supports filtering actions based on configuration. This allows controlling which actions are exposed to consumers like the MCP backend.Configuration example:
backend:
actions:
pluginSources:
- catalog
- scaffolder
filter:
include:
- id: 'catalog:*'
attributes:
destructive: false
- id: 'scaffolder:*'
exclude:
- id: '*:delete-*'
- attributes:
readOnly: falseFiltering logic:
include: Rules for actions to include. Each rule can specify anidglob pattern and/orattributesconstraints. An action must match at least one rule to be included. If no include rules are specified, all actions are included by default.exclude: Rules for actions to exclude. Takes precedence over include rules.- Each rule combines
idandattributeswith AND logic (both must match if specified).
-
27f9061: BREAKING: The constructor for
FetchUrlReaderis now private. If you have to construct an instance of it, please useFetchUrlReader.fromConfiginstead. -
27f9061: BREAKING:
coreServices.urlReadernow validates that redirect chains are subject to the allow list inreading.allowof your app config. If you were relying on redirects that pointed to URLs that were not allowlisted, you will now have to add those to your config as well.Example:
backend:
reading:
allow:
- host: example.com
+ - host: storage-api.example.com
Patch Changes
- 3afeab4: Implementing
readTreeforGoogleGcsReader - c641c14: Wrap some of the action logic with
resolveSafeChildPathand improve symlink handling when fetching remote and local files - 7126bf2: Fixed a spelling mistake in root health service shutdown response.
- 872eb91: Upgrade
zod-to-json-schemato latest version - Updated dependencies
- @backstage/backend-plugin-api@1.6.1
- @backstage/backend-app-api@1.4.1
- @backstage/integration@1.19.2
- @backstage/plugin-auth-node@0.6.11
- @backstage/plugin-permission-node@0.10.8
@backstage/frontend-app-api@0.14.0
Minor Changes
- 3bd2a1a: BREAKING: The ability for plugins to override APIs has been restricted to only allow overrides of APIs within the same plugin. For example, a plugin can no longer override any of the core APIs provided by the
appplugin, this must be done with anappmodule instead.
Patch Changes
- Updated dependencies
- @backstage/frontend-plugin-api@0.13.3
- @backstage/frontend-defaults@0.3.5
@backstage/ui@0.11.0
Minor Changes
-
243e5e7: BREAKING: Redesigned Table component with new
useTablehook API.- The
Tablecomponent (React Aria wrapper) is renamed toTableRoot - New high-level
Tablecomponent that handles data display, pagination, sorting, and selection - The
useTablehook is completely redesigned with a new API supporting three pagination modes (complete, offset, cursor) - New types:
ColumnConfig,TableProps,TableItem,UseTableOptions,UseTableResult
New features include unified pagination modes, debounced query changes, stale data preservation during reloads, and row selection with toggle/replace behaviors.
Migration guide:
- Update imports and use the new
useTablehook:
-import { Table, useTable } from '@backstage/ui';
-const { data, paginationProps } = useTable({ data: items, pagination: {...} });
+import { Table, useTable, type ColumnConfig } from '@backstage/ui';
+const { tableProps } = useTable({
+ mode: 'complete',
+ getData: () => items,
+});- Define columns and render with the new Table API:
-<Table aria-label="My table">
- <TableHeader>...</TableHeader>
- <TableBody items={data}>...</TableBody>
-</Table>
-<TablePagination {...paginationProps} />
+const columns: ColumnConfig<Item>[] = [
+ { id: 'name', label: 'Name', isRowHeader: true, cell: item => <CellText title={item.name} /> },
+ { id: 'type', label: 'Type', cell: item => <CellText title={item.type} /> },
+];
+
+<Table columnConfig={columns} {...tableProps} />Affected components: Table, TableRoot, TablePagination
- The
-
95246eb: Breaking Updating color tokens to match the new neutral style on different surfaces.
Migration notes
There's no direct replacement for the old tint tokens but you can use the new neutral set of color tokens on surface 0 or 1 as a replacement.
--bui-bg-tintcan be replaced by--bui-bg-neutral-on-surface-0--bui-bg-tint-hovercan be replaced by--bui-bg-neutral-on-surface-0-hover--bui-bg-tint-pressedcan be replaced by--bui-bg-neutral-on-surface-0-pressed--bui-bg-tint-disabledcan be replaced by--bui-bg-neutral-on-surface-0-disabled
-
ea0c6d8: Introduce new
ToggleButton&ToggleButtonGroupcomponents in Backstage UI -
4ea1d15: BREAKING: Renamed CSS variable
--bui-bgto--bui-bg-surface-0for consistency.
Patch Changes
-
1880402: Fixes app background color on dark mode.
-
d2fdded: Added indeterminate state support to the Checkbox component for handling partial selection scenarios like table header checkboxes.
Affected components: Checkbox
-
4fb15d2: Added missing
aria-labelattributes toSearchFieldcomponents inSelect,MenuAutocomplete, andMenuAutocompleteListboxto fix accessibility warnings.Affected components: Select, MenuAutocomplete, MenuAutocompleteListbox
-
21c87cc: Fixes disabled state in primary and secondary buttons in Backstage UI.
-
9c76682: build(deps-dev): bump
storybookfrom 10.1.9 to 10.1.10 -
de80336: Fixed disabled tertiary buttons incorrectly showing hover effects on surfaces.
-
133d5c6: Added new Popover component for Backstage UI with automatic overflow handling, and full placement support. Also introduced
--bui-shadowtoken for consistent elevation styling across overlay components (Popover, Tooltip, Menu). -
973c839: Fixed Table sorting indicator not being visible when a column is actively sorted.
Affected components: Table, Column
-
df40cfc: Fixed Menu component trigger button not toggling correctly. Removed custom click-outside handler that was interfering with React Aria's built-in state management, allowing the menu to properly open and close when clicking the trigger button.
-
b01ab96: Added support for column width configuration in Table component. Columns now accept
width,defaultWidth,minWidth, andmaxWidthprops for responsive layout control.Affected components: Table, Column
-
b4a4911: Fixed SearchField
startCollapsedprop not working correctly in Backstage UI. The field now properly starts in a collapsed state, expands when clicked and focused, and collapses back when unfocused with no input. Also fixed CSS logic to work correctly in all layout contexts (flex row, flex column, and regular containers).Affected components: SearchField
-
b3253b6: Fixed
Linkcomponent causing hard page refreshes for internal routes. The component now properly uses React Router's navigation instead of full page reloads. -
fe7fe69: Added support for custom pagination options in
useTablehook andTablecomponent. You can now configurepageSizeOptionsto customize the page size dropdown, and hook into pagination events viaonPageSizeChange,onNextPage, andonPreviousPagecallbacks. WhenpageSizedoesn't match any option, the first option is used and a warning is logged.Affected components: Table, TablePagination
-
cfac8a4: Fixed missing border styles on table selection cells in multi-select mode.
Affected components: Table
-
2532d2a: Added
classNameandstyleprops to theTablecomponent.Affected components: Table
@backstage/plugin-app-react@0.1.0
Minor Changes
- 9ccf84e: Initial release of this web library for
@backstage/plugin-app.
Patch Changes
-
9ccf84e: Moved the following blueprints from
@backstage/frontend-plugin-api:AppRootWrapperBlueprintIconBundleBlueprintNavContentBlueprintRouterBlueprintSignInPageBlueprintSwappableComponentBlueprintThemeBlueprintTranslationBlueprint
-
Updated dependencies
- @backstage/frontend-plugin-api@0.13.3
@backstage/plugin-auth-backend@0.26.0
Minor Changes
- 7ffc873: Fix
user_created_atmigration causingSQLiteErrorregarding use of non-constants for defaults
Patch Changes
- Updated dependencies
- @backstage/backend-plugin-api@1.6.1
- @backstage/plugin-auth-node@0.6.11
@backstage/plugin-devtools-react@0.1.0
Minor Changes
- be6cef5: Add support for adding
unprocessed-entitiesand other tabs todevtoolswhen using the New Frontend system
Patch Changes
- Updated dependencies
- @backstage/frontend-plugin-api@0.13.3
@backstage/plugin-events-backend-module-kafka@0.3.0
Minor Changes
- ef5bbd8: Add support for Kafka offset configuration (
fromBeginning) andautoCommit
Patch Changes
- Updated dependencies
- @backstage/backend-plugin-api@1.6.1
@backstage/plugin-home@0.9.0
Minor Changes
- e091a83: Widget configurations are now only saved to storage when the Save button is explicitly clicked. Added a Cancel button that allows users to discard unsaved changes and revert to the last saved state.
Patch Changes
- bdda543: Updated WidgetOverlay color to use
alpha(theme.palette.background.paper, 0.93)for better theme alignment instead of hardcoded RGBA - Updated dependencies
- @backstage/frontend-plugin-api@0.13.3
- @backstage/core-components@0.18.5
- @backstage/plugin-catalog-react@1.21.5
- @backstage/plugin-home-react@0.1.34
@backstage/plugin-scaffolder-backend-module-sentry@0.3.0
Minor Changes
- ab606b2: Add ability to configure the API Base URL
Patch Changes
- Updated dependencies
- @backstage/backend-plugin-api@1.6.1
- @backstage/plugin-scaffolder-node@0.12.3
@backstage/plugin-techdocs-node@1.14.0
Minor Changes
-
63c459c: BREAKING: It's now possible to use the credentials from the
integrations.awsS3config to authenticate with AWS S3. The new priority is:aws.accountstechdocs.publisher.awsS3.credentialsintegrations.awsS3- Default credential chain
In case of multiple
integrations.awsS3are present, the target integration is determined by theaccessKeyIdintechdocs.publisher.awsS3.credentialsif provided. Otherwise, the default credential chain is used.This means that depending on your setup, this feature may break your existing setup. In general:
- if you are configuring
aws.accounts, no action is required - if you are configuring
techdocs.publisher.awsS3.credentials, no action is required - if you are configuring multiple integrations under
integrations.awsS3, no action is required - if you are configuring a single integration under
integrations.awsS3, make sure that the integration has access to the bucket you are using for TechDocs