docs/releases/v1.48.0-next.0-changelog.md
Upgrade Helper: https://backstage.github.io/upgrade-helper/?to=1.48.0-next.0
registerExtensionPoint with a single options argument and provide a factory for the extension point rather than a direct implementation. The factory is passed a context with a reportModuleStartupFailure method that makes it possible for plugins to report and attribute startup errors to the module that consumed the extension point.c38b74d: BREAKING: The following blueprints have been removed and are now only available from @backstage/plugin-app-react:
IconBundleBlueprintNavContentBlueprintRouterBlueprintSignInPageBlueprintSwappableComponentBlueprintThemeBlueprintTranslationBlueprint7edb810: Added a new internal option to createExtensionInput that marks the input as only allowing attachments from the same plugin.
9554c36: DEPRECATED: Multiple attachment points for extensions have been deprecated. The functionality continues to work for backward compatibility, but will log a deprecation warning and be removed in a future release.
Extensions using array attachment points should migrate to using Utility APIs instead. See the Sharing Extensions Across Multiple Locations guide for the recommended pattern.
53b6549: Plugins in the new frontend system now have a pluginId field rather than id to better align with naming conventions used throughout the frontend and backend systems. The old field is still present but marked as deprecated. All internal code has been updated to prefer pluginId while maintaining backward compatibility by falling back to id when needed.
69d880e: Bump to latest zod to ensure it has the latest features
Updated dependencies
b1f723b: BREAKING: Changed CSS selectors for ButtonIcon and ButtonLink components. Custom styles targeting .bui-Button to style these components must be updated to use .bui-ButtonIcon or .bui-ButtonLink respectively.
-/* This no longer styles ButtonIcon or ButtonLink */
-.bui-Button[data-variant="primary"] { ... }
+/* Use component-specific selectors */
+.bui-ButtonIcon[data-variant="primary"] { ... }
+.bui-ButtonLink[data-variant="primary"] { ... }
Affected components: ButtonIcon, ButtonLink
caeb9ad: BREAKING: The cell and header properties in ColumnConfig now return ReactElement instead of ReactNode.
This fixes an issue where React Aria's Collection component would inject an id prop into Fragment wrappers, causing "Invalid prop id supplied to React.Fragment" errors on render.
Migration:
const columns: ColumnConfig<MyItem>[] = [
{
id: 'name',
label: 'Name',
- cell: (item) => item.name,
+ cell: (item) => <CellText title={item.name} />,
- header: () => 'Name',
+ header: () => <Column>Name</Column>,
},
];
350c948: Fixed Box component to forward HTML attributes to the underlying div element.
Affected components: Box
7455dae: Use node prefix on native imports
508bd1a: Added new Alert component with support for status variants (info, success, warning, danger), icons, loading states, and custom actions.
Updated status color tokens for improved contrast and consistency across light and dark themes:
--bui-bg-info and --bui-fg-info tokens for info status--bui-bg-danger, --bui-fg-danger tokens--bui-bg-warning, --bui-fg-warning tokens--bui-bg-success, --bui-fg-success tokensAffected components: Alert
da30862: Fixed client-side navigation for container components by wrapping the container (not individual items) in RouterProvider. Components now conditionally provide routing context only when children have internal links, removing the Router context requirement when not needed. This also removes the need to wrap these components in MemoryRouter during tests when they are not using the href prop.
Additionally, when multiple tabs match the current URL via prefix matching, the tab with the most specific path (highest segment count) is now selected. For example, with URL /catalog/users/john, a tab with path /catalog/users is now selected over a tab with path /catalog.
Affected components: Tabs, Tab, TagGroup, Tag, Menu, MenuItem, MenuAutocomplete
092c453: Fixed an infinite render loop in Tabs when navigating to a URL that doesn't match any tab href.
5320aa8: Fixed components to not require a Router context when rendering without internal links.
Affected components: Link, ButtonLink, Row
cb090b4: Bump react-aria-components to v1.14.0
c429101: Fixed React 17 compatibility by using useId from react-aria instead of the built-in React hook which is only available in React 18+.
Updated dependencies
7edb810: BREAKING: Extensions created with the following blueprints must now be provided via an override or a module for the app plugin. Extensions from other plugins will now trigger a warning in the app and be ignored.
IconBundleBlueprintNavContentBlueprintRouterBlueprintSignInPageBlueprintSwappableComponentBlueprintThemeBlueprintTranslationBlueprintuserIdMatchingUserEntityAnnotation sign-in resolver that matches users by their GitHub user ID.{gitlab-integration-host}/user-id annotation to store GitLab's user ID (immutable) in user entities. Also includes addition of the userIdMatchingUserEntityAnnotation sign-in resolver that matches users by the new ID.onPluginModuleBootFailure configuration instead.@backstage/plugin-catalog-node instead of the deprecated alpha exports.{gitlab-integration-host}/user-id annotation to store GitLab's user ID (immutable) in user entities. Also includes addition of the userIdMatchingUserEntityAnnotation sign-in resolver that matches users by the new ID.@backstage/plugin-catalog-node instead of the deprecated alpha exports.cfd8103: Promoted stable catalog extension points from alpha to main export. The following extension points are now exported from @backstage/plugin-catalog-node instead of @backstage/plugin-catalog-node/alpha:
catalogLocationsExtensionPoint and CatalogLocationsExtensionPointcatalogProcessingExtensionPoint and CatalogProcessingExtensionPointcatalogAnalysisExtensionPoint and CatalogAnalysisExtensionPointThe old alpha exports for these extension points are now deprecated with @deprecated markers pointing to the new stable exports. Please update your imports from @backstage/plugin-catalog-node/alpha to @backstage/plugin-catalog-node.
Note: The catalogModelExtensionPoint, catalogPermissionExtensionPoint, and related types remain in alpha.
startTestBackend to support factory-based extension points (v1.1 format) in addition to the existing direct implementation format.@backstage/plugin-catalog-node instead of alpha exports.app.experimental.packages configuration. Replace existing usage directly with app.packages.@backstage/plugin-app-react.pluginId field rather than id to better align with naming conventions used throughout the frontend and backend systems. The old field is still present but marked as deprecated. All internal code has been updated to prefer pluginId while maintaining backward compatibility by falling back to id when needed.pluginId field rather than id to better align with naming conventions used throughout the frontend and backend systems. The old field is still present but marked as deprecated. All internal code has been updated to prefer pluginId while maintaining backward compatibility by falling back to id when needed.next-app template to use blueprint from @backstage/plugin-app-react.17e0eb3: Updated the behavior of the new API override logic to log a deprecation warning instead of rejecting the override and blocking app startup, as was originally intended.
7edb810: Implemented support for the internal extension input option.
492503a: Updated error reporting and app tree resolution logic to attribute errors to the correct extension and allow app startup to proceed more optimistically:
122d39c: Completely removed support for the deprecated app.experimental.packages configuration. Replace existing usage directly with app.packages.
9554c36: DEPRECATED: Deprecated support for multiple attachment points.
53b6549: Plugins in the new frontend system now have a pluginId field rather than id to better align with naming conventions used throughout the frontend and backend systems. The old field is still present but marked as deprecated. All internal code has been updated to prefer pluginId while maintaining backward compatibility by falling back to id when needed.
69d880e: Bump to latest zod to ensure it has the latest features
Updated dependencies
API_FACTORY_CONFLICT error is now treated as a warning and will not prevent the app from starting.app.experimental.packages configuration. Replace existing usage directly with app.packages.pluginId field rather than id to better align with naming conventions used throughout the frontend and backend systems. The old field is still present but marked as deprecated. All internal code has been updated to prefer pluginId while maintaining backward compatibility by falling back to id when needed.RouterBlueprint from @backstage/plugin-app-api.@backstage/frontend-plugin-api to this package.@backstage/plugin-app-react.@backstage/plugin-catalog-node instead of the deprecated alpha exports.@backstage/plugin-catalog-node instead of the deprecated alpha exports.@backstage/plugin-catalog-node instead of the deprecated alpha exports.@backstage/plugin-catalog-node instead of the deprecated alpha exports.@backstage/plugin-catalog-node instead of the deprecated alpha exports.@backstage/plugin-catalog-node instead of the deprecated alpha exports.@backstage/plugin-catalog-node instead of the deprecated alpha exports.@backstage/plugin-catalog-node instead of the deprecated alpha exports.@backstage/plugin-catalog-node instead of the deprecated alpha exports.@backstage/plugin-catalog-node instead of the deprecated alpha exports.@backstage/plugin-catalog-node instead of the deprecated alpha exports.@backstage/plugin-catalog-node instead of the deprecated alpha exports.@backstage/plugin-catalog-node instead of the deprecated alpha exports.@backstage/plugin-catalog-node instead of the deprecated alpha exports.@backstage/plugin-catalog-node instead of the deprecated alpha exports.@backstage/plugin-catalog-node instead of the deprecated alpha exports.@backstage/plugin-catalog-node instead of the deprecated alpha exports.EntityListProvider would not correctly hydrate query parameters if more than 20 were provided for the same key.7455dae: Use node prefix on native imports
2eeca03: Scaffolder form fields in the new frontend system now use a Utility API pattern instead of multiple attachment points. The FormFieldBlueprint now uses this new approach, and while form fields created with older versions still work, they will produce a deprecation warning and will stop working in a future release.
As part of this change, the following alpha exports were removed:
formFieldsApiRefScaffolderFormFieldsApi69d880e: Bump to latest zod to ensure it has the latest features
Updated dependencies
2eeca03: Scaffolder form fields in the new frontend system now use a Utility API pattern instead of multiple attachment points. The FormFieldBlueprint now uses this new approach, and while form fields created with older versions still work, they will produce a deprecation warning and will stop working in a future release.
As part of this change, the following alpha exports were removed:
formFieldsApiformFieldsApiRefScaffolderFormFieldsApi69d880e: Bump to latest zod to ensure it has the latest features
Updated dependencies
AddonBlueprint now uses this new approach, and while addons created with older versions still work, they will produce a deprecation warning and will stop working in a future release.22dce2b: TechDocs addons in the new frontend system now use a Utility API pattern instead of multiple attachment points. The AddonBlueprint now uses this new approach, and while addons created with older versions still work, they will produce a deprecation warning and will stop working in a future release.
As part of this change, the techDocsAddonDataRef alpha export was removed.
Updated dependencies