From e5a19cb736b91997ba3532c81985284e97ea451e Mon Sep 17 00:00:00 2001 From: Shuaib Hasan Akib Date: Fri, 7 Nov 2025 11:43:25 +0600 Subject: [PATCH] refactor(router): add ngDevMode guards to InjectionToken names and cleanup imports Wraps InjectionToken names with `typeof ngDevMode !== 'undefined' && ngDevMode` checks to enable tree-shaking of descriptive token names in production builds. This ensures debug-only strings are removed from production bundles, reducing size. Also removes unused imports found during refactor. (cherry picked from commit b0b834d7f1855d4bf50c31fb612795d6f6596ea8) --- packages/router/src/directives/router_outlet.ts | 4 +++- packages/router/src/operators/recognize.ts | 2 +- packages/router/src/provide_router.ts | 9 ++++++--- packages/router/src/router_scroller.ts | 4 +++- 4 files changed, 13 insertions(+), 6 deletions(-) diff --git a/packages/router/src/directives/router_outlet.ts b/packages/router/src/directives/router_outlet.ts index d28b871f2bb..ef855bb8906 100644 --- a/packages/router/src/directives/router_outlet.ts +++ b/packages/router/src/directives/router_outlet.ts @@ -434,7 +434,9 @@ class OutletInjector implements Injector { } } -export const INPUT_BINDER = new InjectionToken(''); +export const INPUT_BINDER = new InjectionToken( + typeof ngDevMode !== 'undefined' && ngDevMode ? 'Router Input Binder' : '', +); /** * Injectable used as a tree-shakable provider for opting in to binding router data to component diff --git a/packages/router/src/operators/recognize.ts b/packages/router/src/operators/recognize.ts index 0a9cadbd475..2dc6433bd69 100644 --- a/packages/router/src/operators/recognize.ts +++ b/packages/router/src/operators/recognize.ts @@ -24,7 +24,7 @@ import type {RouterConfigLoader} from '../router_config_loader'; import type {UrlSerializer} from '../url_tree'; const RECOGNIZE_IMPL = new InjectionToken( - 'RECOGNIZE_IMPL', + typeof ngDevMode !== 'undefined' && ngDevMode ? 'RECOGNIZE_IMPL' : '', { factory: () => { const USE_ASYNC_RECOGNIZE = true; diff --git a/packages/router/src/provide_router.ts b/packages/router/src/provide_router.ts index 571553fb1bf..d2f0025c2ce 100644 --- a/packages/router/src/provide_router.ts +++ b/packages/router/src/provide_router.ts @@ -142,9 +142,12 @@ function routerFeature( * An Injection token used to indicate whether `provideRouter` or `RouterModule.forRoot` was ever * called. */ -export const ROUTER_IS_PROVIDED = new InjectionToken('', { - factory: () => false, -}); +export const ROUTER_IS_PROVIDED = new InjectionToken( + typeof ngDevMode !== 'undefined' && ngDevMode ? 'Router is provided' : '', + { + factory: () => false, + }, +); const routerIsProvidedDevModeCheck = { provide: ENVIRONMENT_INITIALIZER, diff --git a/packages/router/src/router_scroller.ts b/packages/router/src/router_scroller.ts index 739c0e39b54..6db72fe62f1 100644 --- a/packages/router/src/router_scroller.ts +++ b/packages/router/src/router_scroller.ts @@ -22,7 +22,9 @@ import { import {NavigationTransitions} from './navigation_transition'; import {UrlSerializer} from './url_tree'; -export const ROUTER_SCROLLER = new InjectionToken(''); +export const ROUTER_SCROLLER = new InjectionToken( + typeof ngDevMode !== 'undefined' && ngDevMode ? 'Router Scroller' : '', +); @Injectable() export class RouterScroller implements OnDestroy {