What is Angular lazy loading and preloading strategy?
Why Interviewers Ask This
Candidates at the intermediate level are expected to not only know this concept but explain the trade-offs involved. Interviewers use this question to see if you can reason about design decisions, not just recall facts.
Answer
Lazy loading splits the application into multiple JavaScript bundles and loads them on-demand when the user navigates to specific routes. Implementation: use loadChildren (for modules) or loadComponent (for standalone components): { path: "admin", loadChildren: () => import("./admin/admin.module").then(m => m.AdminModule) }. The build produces separate chunk files. Preloading strategies determine which lazy modules are pre-downloaded after initial load: (1) NoPreloading (default): modules load only when navigated. First visit to /admin has a loading delay; (2) PreloadAllModules: after initial app loads, background-download all lazy modules. Good if the app isn't too large: RouterModule.forRoot(routes, { preloadingStrategy: PreloadAllModules }). First navigation to /admin is instant; (3) Custom PreloadingStrategy: selectively preload based on route data or other conditions. Implement PreloadingStrategy interface: only preload routes with data: { preload: true }. Good for large apps where PreloadAllModules wastes bandwidth; (4) QuicklinkStrategy: preload links visible in the current viewport (IntersectionObserver) — preloads what the user is likely to click next. Third-party library ngx-quicklink. Bundle analysis: ng build --stats-json then npx webpack-bundle-analyzer dist/stats.json to visualize chunk sizes. Aim for: initial bundle <200KB gzipped, lazy chunks proportional to feature complexity.
Pro Tip
Back up your answer with a specific project or situation. Saying 'In my last Angular project, I used this when...' immediately makes your answer more credible and memorable.
Previous
What is the Angular NgRx state management library?
Next
What is Angular change detection with OnPush strategy?
More Angular Questions
View all →- Intermediate What is RxJS and how is it used in Angular?
- Intermediate What is the difference between switchMap, mergeMap, concatMap, and exhaustMap?
- Intermediate What is the difference between Subject, BehaviorSubject, ReplaySubject, and AsyncSubject?
- Intermediate What is the Angular NgRx state management library?
- Intermediate What is Angular change detection with OnPush strategy?