
Grab your gear: The official Sanity swag store
Read Grab your gear: The official Sanity swag storeGreat question! You're right that each Next.js data fetching method has trade-offs. The Sanity.io marketing site uses a sophisticated combination of approaches, primarily leveraging Incremental Static Regeneration (ISR) with tag-based revalidation via revalidateTag.
The Sanity team uses the Next.js App Router with React Server Components, which allows data fetching directly in components without getStaticProps or getServerSideProps. The key is controlling cache behavior through:
1. Tag-based cache invalidation - This is the secret sauce. When fetching content, they tag queries with document types:
const posts = await sanityFetch({
query: POSTS_QUERY,
tags: ['post', 'author', 'category'],
})Then when content changes in Sanity, they use revalidateTag() to surgically invalidate only the affected cached content - not the entire site. This solves ISR's biggest limitation: you don't need to wait for a time-based revalidation period or rebuild everything.
2. Granular control - For individual pages, they can even tag with specific identifiers:
tags: [`post:${params.slug}`, 'author', 'category']This means editing one blog post only revalidates that specific page, not all blog posts.
This approach combines the best of all worlds:
Tag-based revalidation is especially powerful for connected content. If a blog post references authors and categories, you can invalidate all three document types when any changes, ensuring consistency across your entire site.
For new projects, Sanity now offers the Live Content API (GA as of March 2025), which handles fetching, rendering, caching, and invalidation automatically without manual cache management. It provides real-time updates without websockets and works seamlessly with Next.js App Router through the next-sanity toolkit.
The Live Content API essentially makes your content "live by default" - when editors publish changes in Sanity Studio, those updates appear instantly across all your applications without any cache invalidation code. This eliminates the complexity of managing revalidateTag calls and webhook configurations entirely.
For most production Next.js + Sanity sites:
Both approaches are production-ready and used at scale. The combination of ISR + tag-based revalidation remains popular because it gives you fine-grained control, while the Live Content API represents the future direction with less infrastructure to manage.
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.
Content operations
Content backend


The only platform powering content operations
By Industry


Tecovas strengthens their customer connections
Build and Share

Grab your gear: The official Sanity swag store
Read Grab your gear: The official Sanity swag store