Use LazyModuleLoader (available since NestJS 8). Inject it and call load() with the module reference. The module and its providers are initialized on first call and then cached as a singleton. Useful for rarely-used heavy modules like PDF generation or image processing.
Heavy modules not needed at startup (PDF, image processing, report generators).
Rarely-invoked admin or background features.
Modules only needed for specific user roles or premium features.
Note: controllers cannot be lazy-loaded — only service-level providers.