Merge pull request #33356 from backstage/conditional-extensions

frontend-app-api: add phased app preparation
This commit is contained in:
Patrik Oldsberg
2026-03-17 14:44:00 +01:00
committed by GitHub
90 changed files with 6028 additions and 893 deletions
@@ -0,0 +1,5 @@
---
'@backstage/core-compat-api': patch
---
Added a missing dependency on `@backstage/filter-predicates` to `@backstage/core-compat-api`. This fixes package metadata for consumers that use compatibility helpers relying on filter predicate support.
@@ -0,0 +1,5 @@
---
'@backstage/core-components': patch
---
Fixed the shared `Progress` component to provide an accessible name for its loading indicator by default.
@@ -0,0 +1,5 @@
---
'@backstage/frontend-test-utils': patch
---
Added a missing dependency on `@backstage/filter-predicates` to `@backstage/frontend-test-utils`. This fixes package metadata for consumers using the frontend test app helpers with predicate-based behavior.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-permission-react': patch
---
Permission checks made in the same tick are now batched into a single call to the permission backend.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-app': patch
---
Updated the default app root to better support phased app preparation by allowing the app layout to be absent during bootstrap, routing bootstrap failures through the app root boundary, and avoiding installation of a guest identity in protected apps that do not provide a sign-in page.
@@ -0,0 +1,5 @@
---
'@backstage/frontend-app-api': patch
---
Added `prepareSpecializedApp` for two-phase app wiring so apps can render a bootstrap tree before full app finalization. The bootstrap phase now supports deferred `app/root.elements`, predicate-gated APIs, reusable `sessionState`, and warnings for bootstrap-visible predicates or bootstrap code that accessed APIs that only became available after finalization. Utility APIs that are materialized during bootstrap are also frozen for the lifetime of the app instance, causing deferred overrides of those APIs to be ignored and reported as app errors.
@@ -0,0 +1,5 @@
---
'@backstage/frontend-defaults': patch
---
Updated `createApp` to use the phased `prepareSpecializedApp` flow, allowing apps to render a bootstrap tree before the full app is finalized.
@@ -0,0 +1,5 @@
---
'@backstage/frontend-plugin-api': patch
---
Added support for `if` predicates on `createFrontendPlugin` and `createFrontendModule`, applying shared conditions to every extension in the feature. Plugin and extension overrides can now also replace or remove existing `if` predicates.