Josias Leal

Two Forms of Pre-rendering in NextJS

Next.js has two forms of pre-rendering: Static Generation and Server-side Rendering. The difference is in when it generates the HTML for a page.

  • Static Generation is the pre-rendering method that generates the HTML at build time. The pre-rendered HTML is then reused on each request.
  • Server-side Rendering is the pre-rendering method that generates the HTML on each request.

Importantly, Next.js let's you choose which pre-rendering form to use for each page. You can create a "hybrid" Next.js app by using Static Generation for most pages and using Server-side Rendering for others.

This makes it possible for your application to perform much better with much faster loading through pre-renders.

It's recommended using Static Generation (with and without data) whenever possible because your page can be built once and served by CDN, which makes it much faster than having a server render the page on every request, because it will cost much more time.

You can use Static Generation for many types of pages, including:

  • Marketing pages
  • Blog posts
  • E-commerce product listings
  • Help and documentation

If the answer of the question: "Can I pre-render this page ahead of a user's request?" is yes, then you should choose Static Generation.

On the other hand, Static Generation is not a good idea if you cannot pre-render a page ahead of a user's request. Maybe your page shows frequently updated data, and the page content changes on every request.

In that case, you can use Server-Side Rendering. It will be slower, but the pre-rendered page will always be up-to-date. In this case, NextJS allows you to control the cache for this dynamic responses and avoid too much re-renders if the cached value is still fresh.

You also can skip pre-rendering and use client-side JavaScript to populate data.

You can found more information about this in the NextJS documentation an tutorials here NextJS Tutorial