Server-Side Rendering (SSR)

With server-side rendering, HTML pages are generated per HTTP request. Server-side rendering is used when a page exports an async function called getServerSideProps.

import { Database } from "../../lib/database";
// Next.js will call this function for every request
export async function getServerSideProps() {
  const db = new Database();
  const data = await db.getData();
  // passed to the page component as props
  return {
    props: { data },
export default function Page(props) {
  // Render...

Use getServerSideProps when:

  • The page must be rendered server-side using data that must be fetched for each request

If the page does not need to be rendered server-side, consider fetching data on the client side (opens in a new tab).

Errors during SSR rendering return HTTP 500 errors. See Customizing the 500 Page (opens in a new tab).

SSR pages can also be cached, but only if cache-control headers (opens in a new tab) are explicitly configured (opens in a new tab).