NestJS 12.1.3 fixes SSE and stops silently dropping request-scoped global enhancers
NestJS published v12.1.3 on 12 October, a patch release made up entirely of bug fixes in core, microservices and platform-express. Several of them change behaviour that applications may have been relying on without knowing it.
Global enhancers. Two fixes concern guards, interceptors, pipes and filters registered globally. One stops Nest from silently dropping request-scoped global enhancers; another makes a request-scoped class global enhancer fail at startup instead. A third makes transient global enhancers run on controllers in both core and microservices. An application that registered such an enhancer and saw no effect may now see it run — or see the app refuse to start until the registration is fixed.
Server-sent events. The largest group of fixes is in SSE handling. Nest now sends the status and headers a handler sets on SSE responses, commits headers for empty streams, sends the Expires header, settles the SSE lifecycle when a client disconnects early, ends streams whose event data cannot be serialised, and no longer mutates the message object when assigning an event id.

Startup and shutdown. Buffered logs are flushed when initialisation fails, so the reason for a failed boot is no longer lost. The shutdown sequence runs after a failed init, and a shutdown signal that arrives while close() is already in progress is honoured.
Routing and middleware. Fixes cover URI-versioned exclusions for the not-found handler, slash normalisation when mapping controllers for middleware, global prefix exclusions with overlapping versions, and a GET middleware exclusion now also covering HEAD requests. On the Express adapter, wildcard middleware runs on the bare global prefix path, an async request hook is guarded until completion, and a StreamableFile source is destroyed when the client disconnects.
What to check. The release is a drop-in patch, but two of its fixes are deliberately louder than the old behaviour: applications with request-scoped global enhancers should start once against 12.1.3 before deploying, and services streaming SSE should re-test early disconnects and empty streams.
Source: NestJS, release notes for v12.1.3 — https://github.com/nestjs/nest/releases/tag/v12.1.3