Start here. This is the direct spoken answer to practice first.
Overview
Streaming is an end-to-end property; one buffering hop can preserve correctness while removing the expected progressive delivery.
I reproduce with the production build and inspect response timing and chunks rather than relying on the loading animation. Then I compare direct access to the Next.js server with each hop through the reverse proxy, load balancer, CDN, and compression layer. The first hop that buffers or rewrites the response is the likely cause, and it must support chunked transfer or HTTP/2 streaming without waiting for the whole body.