diff --git a/goldens/public-api/core/index.api.md b/goldens/public-api/core/index.api.md index c48f631f4d6..4f73671bba0 100644 --- a/goldens/public-api/core/index.api.md +++ b/goldens/public-api/core/index.api.md @@ -669,6 +669,9 @@ export abstract class EmbeddedViewRef extends ViewRef { // @public export function enableProdMode(): void; +// @public +export function enableProfiling(): () => void; + // @public @deprecated export const ENVIRONMENT_INITIALIZER: InjectionToken void)[]>; diff --git a/packages/core/src/core.ts b/packages/core/src/core.ts index a87d86bf775..15da95993e1 100644 --- a/packages/core/src/core.ts +++ b/packages/core/src/core.ts @@ -106,6 +106,7 @@ export {createComponent, reflectComponentType, ComponentMirror} from './render3/ export {isStandalone} from './render3/def_getters'; export {AfterRenderRef} from './render3/after_render/api'; export {publishExternalGlobalUtil as ɵpublishExternalGlobalUtil} from './render3/util/global_utils'; +export {enableProfiling} from './render3/debug/chrome_dev_tools_performance'; export { AfterRenderOptions, afterEveryRender, diff --git a/packages/core/src/render3/debug/chrome_dev_tools_performance.ts b/packages/core/src/render3/debug/chrome_dev_tools_performance.ts index 96442b690ee..b20f693b400 100644 --- a/packages/core/src/render3/debug/chrome_dev_tools_performance.ts +++ b/packages/core/src/render3/debug/chrome_dev_tools_performance.ts @@ -226,15 +226,22 @@ function getProviderTokenMeasureName(token: any) { * Start listening to the Angular's internal performance-related events and route those to the Chrome DevTools performance panel. * This enables Angular-specific data visualization when recording a performance profile directly in the Chrome DevTools. * + * Note: integration is enabled in the development mode only, this operation is noop in the production mode. + * + * @experimental + * * @returns a function that can be invoked to stop sending profiling data. */ export function enableProfiling() { performanceMarkFeature('Chrome DevTools profiling'); - const removeInjectorProfiler = setInjectorProfiler(chromeDevToolsInjectorProfiler); - const removeProfiler = setProfiler(devToolsProfiler); + if (typeof ngDevMode !== 'undefined' && ngDevMode) { + const removeInjectorProfiler = setInjectorProfiler(chromeDevToolsInjectorProfiler); + const removeProfiler = setProfiler(devToolsProfiler); - return () => { - removeInjectorProfiler(); - removeProfiler(); - }; + return () => { + removeInjectorProfiler(); + removeProfiler(); + }; + } + return () => {}; }