---
title: "Independent awaits in sequence (next/sequential-await)"
description: "Each await waits for the previous one even though it doesn't use its result: the latencies add up (a waterfall) on every request."
url: http://localhost:4173/rules/next/sequential-await
updated: 2026-11-11
---

# Independent awaits in sequence

> `next/sequential-await` is a vetd rule. It flags: Independent awaits in sequence. It runs on every `check`, together with the TypeScript check.

| Fact | Value |
| --- | --- |
| Rule id | `next/sequential-await` |
| Severity | warning |
| Group | Server code: security and speed |
| Tags | performance, nextjs-16 |

## Why it matters

Each await waits for the previous one even though it doesn't use its result: the latencies add up (a waterfall) on every request.

## How to fix it

Start both, then await together: `const [a, b] = await Promise.all([readA(), readB()])`.

## Credit

Based on work by:

- [Vercel](https://vercel.com): The react-best-practices skill ranks eliminating async waterfalls with Promise.all as its top-impact rule.
- [Shu Ding](https://github.com/shuding): Author of better-all, a Promise.all variant that starts each dependent task at the earliest possible moment.

## References

- [Fetching Data](https://nextjs.org/docs/app/getting-started/fetching-data), Next.js
- [react-best-practices: Promise.all() for independent operations](https://github.com/vercel-labs/agent-skills/blob/main/skills/react-best-practices/rules/async-parallel.md), Vercel (vercel-labs/agent-skills)
- [Promise.all()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all), MDN Web Docs
- [better-all: Better Promise.all with automatic dependency optimization](https://github.com/shuding/better-all), GitHub (shuding)

## See it

Demos in the vetd Lab:

- [Start early, await late](http://localhost:4173/lab/react-perf/eliminate-async-waterfalls)
- [Fetch in parallel](http://localhost:4173/lab/nextjs/parallel-fetching)

## Related rules

- [`next/fetch-in-effect`](http://localhost:4173/rules/next/fetch-in-effect.md)

## Get this text from vetd

MCP: call `explain` with `{ "diagnosticId": "next/sequential-await" }`. CLI: `npx vetd explain next/sequential-await`.

---

[All 92 rules](http://localhost:4173/rules.md) · Previous: [`next/module-state`](http://localhost:4173/rules/next/module-state.md) · Next: [`next/floating-promise`](http://localhost:4173/rules/next/floating-promise.md)
