A shared module is a regular module that exports providers so multiple other modules can use them. There is no special decorator — it is just a module with a well-defined exports array. Any module that needs its providers must explicitly import it. Because modules are singletons, all consumers share the same provider instances.
No special decorator — any module with a populated exports array is effectively a shared module.
Consumers must explicitly import it — dependencies are visible and traceable.
Singleton instances — all importers share the same provider objects.
Typical examples: CryptoModule, MailModule, HttpClientModule, PaginationModule.