docs/releases/v1.47.0-changelog.md
Upgrade Helper: https://backstage.github.io/upgrade-helper/?to=1.47.0
6fc00e6: Added action filtering support with glob patterns and attribute constraints.
The ActionsService now 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: false
Filtering logic:
include: Rules for actions to include. Each rule can specify an id glob pattern and/or attributes constraints. 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.id and attributes with AND logic (both must match if specified).27f9061: BREAKING: The constructor for FetchUrlReader is now private. If you have to construct an instance of it, please use FetchUrlReader.fromConfig instead.
27f9061: BREAKING: coreServices.urlReader now validates that redirect chains are subject to the allow list in reading.allow of 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
readTree for GoogleGcsReaderresolveSafeChildPath and improve symlink handling when fetching remote and local fileszod-to-json-schema to latest versionapp plugin, this must be done with an app module instead.243e5e7: BREAKING: Redesigned Table component with new useTable hook API.
Table component (React Aria wrapper) is renamed to TableRootTable component that handles data display, pagination, sorting, and selectionuseTable hook is completely redesigned with a new API supporting three pagination modes (complete, offset, cursor)ColumnConfig, TableProps, TableItem, UseTableOptions, UseTableResultNew features include unified pagination modes, debounced query changes, stale data preservation during reloads, and row selection with toggle/replace behaviors.
Migration guide:
useTable hook:-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,
+});
-<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
95246eb: Breaking Updating color tokens to match the new neutral style on different surfaces.
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-tint can be replaced by --bui-bg-neutral-on-surface-0--bui-bg-tint-hover can be replaced by --bui-bg-neutral-on-surface-0-hover--bui-bg-tint-pressed can be replaced by --bui-bg-neutral-on-surface-0-pressed--bui-bg-tint-disabled can be replaced by --bui-bg-neutral-on-surface-0-disabledea0c6d8: Introduce new ToggleButton & ToggleButtonGroup components in Backstage UI
4ea1d15: BREAKING: Renamed CSS variable --bui-bg to --bui-bg-surface-0 for consistency.
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-label attributes to SearchField components in Select, MenuAutocomplete, and MenuAutocompleteListbox to 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 storybook from 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-shadow token 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, and maxWidth props for responsive layout control.
Affected components: Table, Column
b4a4911: Fixed SearchField startCollapsed prop 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 Link component 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 useTable hook and Table component. You can now configure pageSizeOptions to customize the page size dropdown, and hook into pagination events via onPageSizeChange, onNextPage, and onPreviousPage callbacks. When pageSize doesn'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 className and style props to the Table component.
Affected components: Table
@backstage/plugin-app.9ccf84e: Moved the following blueprints from @backstage/frontend-plugin-api:
AppRootWrapperBlueprintIconBundleBlueprintNavContentBlueprintRouterBlueprintSignInPageBlueprintSwappableComponentBlueprintThemeBlueprintTranslationBlueprintUpdated dependencies
user_created_at migration causing SQLiteError regarding use of non-constants for defaultsunprocessed-entities and other tabs to devtools when using the New Frontend systemfromBeginning) and autoCommitalpha(theme.palette.background.paper, 0.93) for better theme alignment instead of hardcoded RGBA63c459c: BREAKING: It's now possible to use the credentials from the integrations.awsS3 config to authenticate with AWS S3. The new priority is:
aws.accountstechdocs.publisher.awsS3.credentialsintegrations.awsS3In case of multiple integrations.awsS3 are present, the target integration is determined by the accessKeyId in techdocs.publisher.awsS3.credentials if provided. Otherwise, the default credential chain is used.
This means that depending on your setup, this feature may break your existing setup. In general:
aws.accounts, no action is requiredtechdocs.publisher.awsS3.credentials, no action is requiredintegrations.awsS3, no action is requiredintegrations.awsS3, make sure that the integration has access to the bucket you are using for TechDocsdefaultDockerImage to reflect the latest TechDocs Container version of v1.2.8isChildPathzod-to-json-schema to latest version@swc/core to support ES2023 and ES2024--include and --format options to backstage-cli info command for including additional packages via glob patterns and outputting as JSON or Text.@backstage/backend-test-utils to backend package templates.zod-validation-error to version 4@swc/core to avoid transpilation bugisChildPath3bd2a1a: Updated documentation for createApiRef to clarify the role of the ID in specifying the owning plugin of an API.
9ccf84e: The following blueprints are being restricted to only be used in app plugin overrides and modules. They are being moved to the @backstage/plugin-app-react package and have been deprecated:
AppRootWrapperBlueprintIconBundleBlueprintNavContentBlueprintRouterBlueprintSignInPageBlueprintSwappableComponentBlueprintThemeBlueprintTranslationBlueprint4554a4e: Added an alpha PluginWrapperBlueprint exported from @backstage/frontend-plugin-api/alpha, which can install components that will wrap all plugin elements.
872eb91: Upgrade zod-to-json-schema to latest version
ScmIntegration for GoogleGcsbackstage-repo-tools package schema openapi generate command.@types/swagger-ui-react to ^5.0.0.4554a4e: Implemented support for the new PluginWrapperBlueprint from @backstage/frontend-plugin-api/alpha.
9ccf84e: The following blueprints are being restricted to only be used in app plugin overrides and modules. They will now produce a deprecation warning when used outside of the app plugin:
AppRootWrapperBlueprintIconBundleBlueprintNavContentBlueprintRouterBlueprintSignInPageBlueprintSwappableComponentBlueprintThemeBlueprintTranslationBlueprintUpdated dependencies
startUrlSearchParams config property)zod-validation-error to version 4zod-to-json-schema to latest versionGithubOrgEntityProvider membership event handling and edit team. The provider now fetches only the specific user's teams instead of all organization users when processing membership events, and uses addEntitiesOperation instead of replaceEntitiesOperation to avoid unnecessary entity deletions.latest_report_status is undefinedqs library bump: the old array limit setting has changed to be more strict; you can no longer just give a zero to mean unlimited. So we choose an arbitrary high value, to at least go higher than the default 20.unprocessed-entities and other tabs to devtools when using the New Frontend systemunprocessed-entities and other tabs to devtools when using the New Frontend systemunprocessed-entities and other tabs to devtools when using the New Frontend systemunprocessed-entities and other tabs to devtools when using the New Frontend system@modelcontextprotocol/sdk from 1.24.3 to 1.25.2--bui-bg to --bui-bg-surface-0useGetEntities fallback so that Resources are included by default when no specific kinds are provided in the group ownership card.zod-to-json-schema to latest versionzod-to-json-schema to latest versionzod-to-json-schema to latest versionresolveSafeChildPath and improve symlink handling when fetching remote and local fileszod-to-json-schema to latest versionbb7088b: Added options to set workflow access level for repositories to github:repo:create
This is useful when creating repositories for GitHub Actions to manage access to the workflows during creation.
- action: github:repo:create
id: create-repo
input:
repoUrl: github.com?owner=owner&repo=repo
visibility: private
+ workflowAccess: organization
Updated dependencies
resolveSafeChildPath and improve symlink handling when fetching remote and local fileszod-to-json-schema to latest versionzod-to-json-schema to latest versionqs library bump: the old array limit setting has changed to be more strict; you can no longer just give a zero to mean unlimited. So we choose an arbitrary high value, to at least go higher than the default 20.mkdocs-material>=9.7publisher config options such as region, endpoint, accountId are now marked as @visibility backend instead of secret.