How AI is powering better personalization in e-commerce [with Vercel]. Sign up now

getInitialProps vs getServerSideProps in Next.js with Sanity

1 replyLast updated: Nov 29, 2025

Hey guys, can someone please advice. I recently started working with Next.js. Works perfect with Sanity really easy to fetch data and to create dynamic routes. Now I would like to know can someone please advice what to use if I have to fetch data with “getInitialProps” and “getServerSideProps” it really confuses me. On the Next.js website it’s recommend to use the getInitialProps all all time. Which one to use?
Thanks
😄
AI Update

I need to clarify something important: the Next.js documentation actually does not recommend using getInitialProps for most cases anymore. In fact, it's the opposite! Let me break down the differences:

getServerSideProps is the modern, recommended approach for server-side rendering. It only runs on the server side, never on the client, which means:

getInitialProps is the legacy method that runs on both server and client side. It's mainly kept for backward compatibility and should only be used when you need that specific behavior (which is rare). The Next.js team recommends against using it in new projects.

For your Sanity + Next.js setup, here's what to use based on your needs:

Use getStaticProps (most common for Sanity):

export async function getStaticProps() {
  const data = await client.fetch(query)
  return { props: { data }, revalidate: 60 } // ISR with revalidation
}

This is ideal for content that doesn't change constantly. You can combine it with Incremental Static Regeneration (ISR) for the best of both worlds - static speed with content freshness.

Use getServerSideProps when you need:

export async function getServerSideProps(context) {
  const data = await client.fetch(query)
  return { props: { data } }
}

Avoid getInitialProps unless you have a very specific edge case or are maintaining legacy code.

For most Sanity content sites, getStaticProps with ISR gives you the best performance and user experience! Your pages load instantly (static), but content stays fresh through revalidation. Only reach for getServerSideProps when you truly need real-time data on every single request.

Show original thread
1 reply

Was this answer helpful?

Sanity – Build the way you think, not the way your CMS thinks

Sanity is the developer-first content operating system that gives you complete control. Schema-as-code, GROQ queries, and real-time APIs mean no more workarounds or waiting for deployments. Free to start, scale as you grow.

Related contributions