diff --git a/code/frameworks/angular/src/client/angular-beta/AbstractRenderer.ts b/code/frameworks/angular/src/client/angular-beta/AbstractRenderer.ts index 6ca3c5151a3f..368dddf11d2e 100644 --- a/code/frameworks/angular/src/client/angular-beta/AbstractRenderer.ts +++ b/code/frameworks/angular/src/client/angular-beta/AbstractRenderer.ts @@ -9,6 +9,7 @@ import { getApplication } from './StorybookModule'; import { storyPropsProvider } from './StorybookProvider'; import { queueBootstrapping } from './utils/BootstrapQueue'; import { PropertyExtractor } from './utils/PropertyExtractor'; +import { getProvideZonelessChangeDetectionFn } from './utils/Zoneless'; type StoryRenderInfo = { storyFnAngular: StoryFnAngularReturnType; @@ -127,11 +128,12 @@ export abstract class AbstractRenderer { ]; if (STORYBOOK_ANGULAR_OPTIONS?.experimentalZoneless) { - const { provideExperimentalZonelessChangeDetection } = await import('@angular/core'); - if (!provideExperimentalZonelessChangeDetection) { - throw new Error('Experimental zoneless change detection requires Angular 18 or higher'); + const provideZonelessChangeDetectionFn = await getProvideZonelessChangeDetectionFn(); + + if (!provideZonelessChangeDetectionFn) { + throw new Error('Zoneless change detection requires Angular 18 or higher'); } else { - providers.unshift(provideExperimentalZonelessChangeDetection()); + providers.unshift(provideZonelessChangeDetectionFn()); } } diff --git a/code/frameworks/angular/src/client/angular-beta/utils/Zoneless.ts b/code/frameworks/angular/src/client/angular-beta/utils/Zoneless.ts new file mode 100644 index 000000000000..f168ceab083d --- /dev/null +++ b/code/frameworks/angular/src/client/angular-beta/utils/Zoneless.ts @@ -0,0 +1,9 @@ +export const getProvideZonelessChangeDetectionFn = async () => { + const angularCore: any = await import('@angular/core'); + + return 'provideExperimentalZonelessChangeDetection' in angularCore + ? angularCore.provideExperimentalZonelessChangeDetection + : 'provideZonelessChangeDetection' in angularCore + ? angularCore.provideZonelessChangeDetection + : null; +};