
Grab your gear: The official Sanity swag store
Read Grab your gear: The official Sanity swag storeBased on your description of content loading "bottom-to-top in a staggered sequence," this is almost certainly a Next.js rendering issue rather than anything Sanity-specific. Here are the most likely causes and solutions:
If you're using Next.js 13+ with the App Router, the default behavior uses streaming with React Server Components. This progressively sends HTML to the browser as components resolve, which can create that staggered loading effect.
Solutions:
loading.tsx file at your route level to show a loading state while everything resolvesIf you're fetching Sanity content with useEffect or client-side queries, each component renders empty first, then populates with data after hydration. This creates the exact "flash" you're describing.
Solution:
getStaticProps/getServerSideProps (Pages Router)If you're using custom fonts without proper optimization, text might be invisible (FOIT - Flash of Invisible Text) or render with fallback fonts first (FOUT - Flash of Unstyled Text), causing layout shifts as fonts load.
Solution:
next/font to automatically optimize font loadingIf you're using images without specified dimensions, content below them will shift as images load and establish their height.
Solution:
next/image with explicit width and height propspriority prop to above-the-fold imagesIf you're using styled-components, Emotion, or similar CSS-in-JS libraries without proper SSR setup, styles may load after HTML, causing a Flash of Unstyled Content.
Solution:
ssr: falseIf you're using next/dynamic with { ssr: false }, those components won't render until client-side hydration completes, causing content to pop in.
Solution:
window or browser APIs)Given the "bottom-to-top" staggered pattern, I'd bet on client-side data fetching combined with Suspense streaming. If you're fetching Sanity content in individual components rather than at the page level, each component will resolve independently, creating that staggered effect.
Try consolidating all your Sanity queries into a single server-side fetch at the page level, then pass that data down to child components as props. This should eliminate the staggered loading entirely.
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