Merge pull request #30571 from backstage/blam/support-flags

`nfs`: support passthrough of `allowUnknownExtensionConfig` from `createApp`
This commit is contained in:
Patrik Oldsberg
2025-07-17 10:34:59 +02:00
committed by GitHub
4 changed files with 43 additions and 0 deletions
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/frontend-defaults': patch
---
Added support for passing through `allowUnknownExtensionConfig` as a flag
+4
View File
@@ -44,6 +44,10 @@ export interface CreateAppOptions {
| FrontendFeatureLoader
| CreateAppFeatureLoader
)[];
// (undocumented)
flags?: {
allowUnknownExtensionConfig?: boolean;
};
loadingComponent?: ReactNode;
// (undocumented)
pluginInfoResolver?: FrontendPluginInfoResolver;
@@ -282,6 +282,38 @@ describe('createApp', () => {
).resolves.toBeInTheDocument();
});
it('should allow unknown extension config if the flag is set', async () => {
const app = createApp({
configLoader: async () => ({
config: mockApis.config({
data: {
app: {
extensions: [{ 'unknown:lols/wut': false }],
},
},
}),
}),
features: [
appPlugin,
createFrontendPlugin({
pluginId: 'test',
extensions: [
PageBlueprint.make({
params: {
defaultPath: '/',
loader: async () => <div>Derp</div>,
},
}),
],
}),
],
flags: { allowUnknownExtensionConfig: true },
});
await renderWithEffects(app.createRoot());
await expect(screen.findByText('Derp')).resolves.toBeInTheDocument();
});
it('should make the app structure available through the AppTreeApi', async () => {
let appTreeApi: AppTreeApi | undefined = undefined;
@@ -80,6 +80,7 @@ export interface CreateAppOptions {
| ExtensionFactoryMiddleware
| ExtensionFactoryMiddleware[];
pluginInfoResolver?: FrontendPluginInfoResolver;
flags?: { allowUnknownExtensionConfig?: boolean };
}
/**
@@ -115,6 +116,7 @@ export function createApp(options?: CreateAppOptions): {
bindRoutes: options?.bindRoutes,
extensionFactoryMiddleware: options?.extensionFactoryMiddleware,
pluginInfoResolver: options?.pluginInfoResolver,
flags: options?.flags,
});
const rootEl = app.tree.root.instance!.getData(