docs/releases/v1.50.0-next.2-changelog.md
Upgrade Helper: https://backstage.github.io/upgrade-helper/?to=1.50.0-next.2
toError utility function is now available for converting unknown values to ErrorLike objects. If the value is already error-like it is returned as-is, strings are used directly as the error message, and all other values are wrapped as unknown error '<stringified>'. Non-error causes passed to CustomErrorBase are now converted and stored using toError rather than discarded.b4a1875: BREAKING: Tab href values in the Header component are now resolved through the router context instead of being passed raw to the <a> tag. This means relative href values (e.g. sub3, ./sub4, ../catalog) are now resolved against the current route, and absolute href values may be affected by the router's basename configuration.
Migration:
Tab navigation should work the same for absolute href values in most setups. If you use relative href values in tabs, verify they resolve as expected. If your app configures a router basename, check that absolute tab href values still navigate correctly.
Affected components: Header
4032ad7: Added new Badge component for non-interactive labeling and categorization of content. It shares the visual appearance of Tag but renders as a plain DOM element with no interactive states.
Affected components: Badge
b4a1875: Added automatic active tab detection to the Header component. When activeTabId is omitted, the active tab is now auto-detected from the current route using matchRoutes. Pass an explicit activeTabId to override, or null for no active tab.
Affected components: Header
aa47a37: Add an initial CheckboxGroup component implementation and docs coverage.
386972f: Fixed the Tabs active indicator not hiding when no tab matches the current route.
Affected components: Tabs
federatedLogout: true in the Auth0 provider config to clear both the Auth0 session and any upstream IdP session on sign-out. The authenticator returns a logout URL that redirects the browser to Auth0's /v2/logout?federated endpoint, ensuring users must fully re-authenticate after signing out.location_entity_ref column to the locations database table that stores the full entity ref of the corresponding kind: Location catalog entity for each registered location row. The value is pre-computed and persisted so that it no longer needs to be recomputed from the location's type and target on every read.PermissionAuthorizer support and the createPermissionIntegrationRouter fallback path from CatalogBuilder. The permissionsRegistry service is now required, and permissions is always a PermissionsService.addPermissions and addPermissionRules methods from CatalogBuilder, and removed the catalogPermissionExtensionPoint wiring from CatalogPlugin. Custom permission rules and permissions should be registered via coreServices.permissionsRegistry directly.assertError to toError for error handling.056e18e: BREAKING ALPHA: Removed the deprecated CatalogPermissionRuleInput, CatalogPermissionExtensionPoint, and catalogPermissionExtensionPoint exports. Use coreServices.permissionsRegistry directly to register catalog entity permission rules and permissions.
7a03196: BREAKING ALPHA: Removed the following deprecated exports from @backstage/plugin-catalog-node/alpha:
catalogServiceRef — use catalogServiceRef from @backstage/plugin-catalog-node insteadCatalogLocationsExtensionPoint / catalogLocationsExtensionPoint — use the non-alpha equivalents from @backstage/plugin-catalog-node insteadCatalogProcessingExtensionPoint / catalogProcessingExtensionPoint — use the non-alpha equivalents from @backstage/plugin-catalog-node insteadCatalogAnalysisExtensionPoint / catalogAnalysisExtensionPoint — use the non-alpha equivalents from @backstage/plugin-catalog-node insteadPermissionsRegistryService instead of the deprecated createPermissionIntegrationRouter. This fixes an issue where scaffolder permissions were not visible to RBAC plugins because the actionsRegistryServiceRef dependency caused an empty permissions metadata router to shadow the scaffolder's actual permission metadata. The old createPermissionIntegrationRouter path is retained as a fallback for standalone createRouter usage.assertError to toError for error handling.MetricsService from @backstage/backend-plugin-api/alpha instead of the raw @opentelemetry/api meter.assertError to toError for error handling.assertError to toError for error handling.HostDiscovery now logs a warning when backend.baseUrl is set to a localhost address while NODE_ENV is production, and when backend.baseUrl is not a valid URL.embedded-postgres as the database for local development. Set backend.database.client to embedded-postgres in your app config to enable this. The embedded-postgres package must be installed as an explicit dependency in your project.assertError to toError for error handling.assertError to toError for error handling.yarn pack operations to avoid packing packages and their dependencies simultaneously.embedded-postgres as the database for local development. Set backend.database.client to embedded-postgres in your app config to enable this. The embedded-postgres package must be installed as an explicit dependency in your project.assertError to toError for error handling.assertError to toError for error handling.assertError to toError for error handling.assertError to toError for error handling.logoutUrl in the logout response body. If the auth provider returns one (e.g. Auth0 federated logout), the browser is redirected to that URL to clear the provider's session cookies. This is backward compatible — providers that return an empty response are unaffected.assertError to toError for error handling.SingleInstanceGithubCredentialsProvider to return app credentials when getCredentials is called with a bare host URL (e.g. https://github.com) instead of falling back to a personal access token.assertError to toError for error handling.NODE_USE_ENV_PROXY instead of global-agent.a0100d4: Fixes occasional duplication of v5 class name prefix for MUI 5 components.
Documentation added to explain how to resolve missing v5 prefix in class names when using MUI 5 components in main app.
logoutUrl in the logout response body. If the auth provider returns one (e.g. Auth0 federated logout), the browser is redirected to that URL to clear the provider's session cookies. This is backward compatible — providers that return an empty response are unaffected.assertError to toError for error handling.assertError to toError for error handling.OAuthAuthenticatorLogoutResult type. The logout method on OAuthAuthenticator can now optionally return { logoutUrl } to trigger a browser redirect after sign-out. This allows providers like Auth0 to clear their session cookies by redirecting to their logout endpoint.CatalogIndexPage from the ./alpha entry point, along with supporting types CatalogIndexPageProps, CatalogTableRow, and CatalogTableColumnsFunc. This allows adopters to use and customize the catalog index page within a PageBlueprint in the new frontend system.assertError to toError for error handling.aboutCard.kindField.label translation key was added.humanizeEntityRef usage with the Catalog Presentation API.analyzeBitbucketCloudWebhookEvent function is exported from the alpha entry point for custom integrations.GithubOrgEntityProvider and replaced the GraphQL client in GithubEntityProvider by this one as well, improving resilience against intermittent GitHub API failures.assertError to toError for error handling.showArrowHeads on page:catalog-graph and entity-card:catalog-graph/relations.assertError to toError for error handling.humanizeEntityRef usage with the Catalog Presentation API.assertError to toError for error handling.humanizeEntityRef and humanizeEntity in favor of the Catalog Presentation API. Use useEntityPresentation, EntityDisplayName, or entityPresentationApiRef instead.InspectEntityDialog from Material UI to Backstage UI components. Added new translation keys: inspectEntityDialog.overviewPage.copyAriaLabel, inspectEntityDialog.overviewPage.copiedStatus, inspectEntityDialog.overviewPage.helpLinkAriaLabel, and inspectEntityDialog.colocatedPage.entityListAriaLabel.assertError to toError for error handling.assertError to toError for error handling.GooglePubSubConsumingEventPublisher and EventConsumingGooglePubSubPublisher to use the new alpha MetricsServiceassertError to toError for error handling.assertError to toError for error handling.humanizeEntityRef usage with the Catalog Presentation API.humanizeEntityRef usage with the Catalog Presentation API.assertError to toError for error handling.PermissionResourceRef definitions for scaffolder resource types: scaffolderTemplatePermissionResourceRef, scaffolderActionPermissionResourceRef, and scaffolderTaskPermissionResourceRef. These are exported from @backstage/plugin-scaffolder-node/alpha.catalogServiceRef from @backstage/plugin-catalog-node/alpha to the stable catalogServiceRef from @backstage/plugin-catalog-node.assertError to toError for error handling.humanizeEntityRef usage with the Catalog Presentation API.assertError to toError for error handling.catalogServiceRef from @backstage/plugin-catalog-node/alpha to the stable catalogServiceRef from @backstage/plugin-catalog-node.assertError to toError for error handling.