Spent a day chasing a slow dashboard where the network tab showed one fast request. The waterfall was server-side: three sequential awaits in one Server Component, each ~120ms, each waiting on the previous one's data shape — but not on its data.
// Slow: 360ms serialized
const user = await getUser()
const org = await getOrg(user.orgId)
const plan = await getPlan(org.planId)
// Fast: org/plan only need ids available from the session
const [user, org, plan] = await Promise.all([
getUser(),
getOrg(session.orgId),
getPlan(session.planId),
]) // ~120msServer waterfalls do not show up in the browser's network tab; they show up as one suspiciously slow document request. Now I grep for consecutive awaits in the same component during review — it is the cheapest performance audit I know.