Server Parallel Fetching
Source: .agents/references/coding-standard/vercel-react-best-practices/rules/server-parallel-fetching.md
Metadata
- title: Parallel Data Fetching in Page Data Functions
- impact: CRITICAL
- impactDescription: eliminates server-side waterfalls
- tags: server, pages-router, parallel-fetching, getStaticProps, getServerSideProps
Content
This repo: Pages Router only — parallelize with
Promise.allinsidegetStaticProps/getServerSideProps(or shared data helpers), not async Server Component composition.
Parallel Data Fetching in Page Data Functions
Sequential await in a page data function creates waterfalls. Start independent fetches together.
Incorrect (sidebar data waits for header):
import type { GetServerSideProps } from 'next'
export const getServerSideProps: GetServerSideProps = async () => {
const header = await fetchHeader()
const sidebarItems = await fetchSidebarItems()
return {
props: { header, sidebarItems }
}
}
Correct (both fetch simultaneously):
import type { GetServerSideProps } from 'next'
export const getServerSideProps: GetServerSideProps = async () => {
const [header, sidebarItems] = await Promise.all([
fetchHeader(),
fetchSidebarItems()
])
return {
props: { header, sidebarItems }
}
}
With dependencies: start independent work first, then await dependents (see async-api-routes, async-parallel).