diff --git a/packages/core-app-api/src/app/App.tsx b/packages/core-app-api/src/app/App.tsx
index c8bd8fec8f..7857c8b35f 100644
--- a/packages/core-app-api/src/app/App.tsx
+++ b/packages/core-app-api/src/app/App.tsx
@@ -66,7 +66,6 @@ import { RoutingProvider } from '../routing/RoutingProvider';
import { validateRoutes } from '../routing/validation';
import { AppContextProvider } from './AppContext';
import { AppIdentity } from './AppIdentity';
-import { AppThemeProvider } from './AppThemeProvider';
import {
AppComponents,
AppConfigLoader,
@@ -151,12 +150,14 @@ function useConfigLoader(
noConfigNode = ;
}
+ const { ThemeProvider } = components;
+
// Before the config is loaded we can't use a router, so exit early
if (noConfigNode) {
return {
node: (
- {noConfigNode}
+ {noConfigNode}
),
};
@@ -303,10 +304,12 @@ export class PrivateAppImpl implements BackstageApp {
return loadedConfig.node;
}
+ const { ThemeProvider } = this.components;
+
return (
-
+
{children}
-
+
);
diff --git a/packages/core-app-api/src/app/createApp.tsx b/packages/core-app-api/src/app/createApp.tsx
index 1d74f93add..a2d22c8dd0 100644
--- a/packages/core-app-api/src/app/createApp.tsx
+++ b/packages/core-app-api/src/app/createApp.tsx
@@ -27,6 +27,7 @@ import {
useInRouterContext,
} from 'react-router-dom';
import { PrivateAppImpl } from './App';
+import { AppThemeProvider } from './AppThemeProvider';
import { defaultApis } from './defaultApis';
import { defaultAppIcons } from './icons';
import {
@@ -149,6 +150,7 @@ export function createApp(options?: AppOptions) {
Progress: Progress,
Router: BrowserRouter,
ErrorBoundaryFallback: DefaultErrorBoundaryFallback,
+ ThemeProvider: AppThemeProvider,
...options?.components,
};
const themes = options?.themes ?? [
diff --git a/packages/core-app-api/src/app/types.ts b/packages/core-app-api/src/app/types.ts
index 30ce45abe9..09121f8105 100644
--- a/packages/core-app-api/src/app/types.ts
+++ b/packages/core-app-api/src/app/types.ts
@@ -72,6 +72,7 @@ export type AppComponents = {
Progress: ComponentType<{}>;
Router: ComponentType<{}>;
ErrorBoundaryFallback: ComponentType;
+ ThemeProvider: ComponentType<{}>;
/**
* An optional sign-in page that will be rendered instead of the AppRouter at startup.