◐ Shell
clean mode source ↗

Building Your Application: Rendering

This page is also available as Markdown at /docs/pages/building-your-application/rendering.md. For an index of Next.js Pages Router documentation, see /docs/pages/llms.txt.

Last updated

March 3, 2026

By default, Next.js prerenders every page. This means that Next.js generates HTML for each page in advance, instead of having it all done by client-side JavaScript. Prerendering can result in better performance and SEO.

Each generated HTML is associated with minimal JavaScript code necessary for that page. When a page is loaded by the browser, its JavaScript code runs and makes the page fully interactive (this process is called hydration in React).

Prerendering

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

  • Static Generation: The HTML is generated at build time and will be reused on each request.
  • Server-side Rendering: The HTML is generated on each request.

Importantly, Next.js lets you choose which prerendering form you'd like 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.

We recommend using Static Generation over Server-side Rendering for performance reasons. Statically generated pages can be cached by CDN with no extra configuration to boost performance. However, in some cases, Server-side Rendering might be the only option.

You can also use client-side data fetching along with Static Generation or Server-side Rendering. That means some parts of a page can be rendered entirely by clientside JavaScript. To learn more, take a look at the Data Fetching documentation.