Server side rendering with next.js vs traditional SSR

does next.js still make any server requests after the initial one, or does it act like a typical SPA with CRA from now on?

You got it right. The first (initial) request is handled by the server and after that the frontend handles the routing (at least in the case of Next.js).

If you want to see an example OpenCollective is built with Next.js. Try playing around with it and see the Network tab in the DevTools.

I am simply trying to understand why its called SSR since it seems to work different than the traditional SSR which I described on the beginning.

It is called SSR because the app is effectively being rendered on the server. The fact that frontend routing takes over after the initial render doesn't remove the fact that the server did the work of rendering the app as oppose to the user machine.


That's Not all the things that happen with Next.js, In Next.js You can build something called Hybrid apps.

In traditional SSR, all of your client requests get handled by the server. Every request goes to the server and gets responses. In classic CSR with something like React, as you said, all the things happens in the browser via the client-side javascript.

But, in Next.js you can define three different approaches (mainly two according to the docs) for pages to get delivered. based on the app needs and requirements, you can serve a couple of pages in pure traditional SSR mode, a couple of them in classic CSR mode, and a couple of in SSR mode via dynamic data that get fetched and rendered into the pages on the fly.

these features bring lots of flexibility to design a web-app that behaves perfectly in every different scenario that is needed.