Fix Vitest 5 test.sequential Removed Error

Code diff showing test.sequential and describe.sequential calls replaced with the concurrent: false option in Vitest 5
On this page

Why this got removed instead of deprecated

concurrent and sequential described the same thing from two directions. A test was either allowed to run concurrently with its siblings or it wasn’t, and sequential only ever meant “not concurrent.” Vitest’s own migration guide states the removal directly, in the section covering these removed options:

Vitest 5.0 removes the deprecated test.sequential, describe.sequential, and sequential test options. Use concurrent: false when you need a test or suite to opt out of inherited or globally configured concurrency.

The redundancy is what made this a removal candidate rather than a permanent pair of options. The GitHub issue that proposed this change lists out the full set of ways Vitest let you express test concurrency, including combinations like { sequential: false }, and points out that having two independent flags that can contradict each other (is { concurrent: false, sequential: false } concurrent or not?) creates internal churn and reader confusion for no real benefit. Collapsing to one flag, concurrent, removes the ambiguity entirely.

Not a warning, an outright removal

This isn’t the usual deprecate-then-remove cycle where a warning gives you a release or two of runway. test.sequential, describe.sequential, and the sequential option object key are gone in Vitest 5.0. If your suite still calls any of them, the upgrade breaks that suite immediately, not on some future major version.

Fix it: switch to concurrent: false

Vitest’s migration guide documents the exact replacement pattern for all three removed forms. Each is a mechanical rename, not a behavior change.

calculator.test.ts - test.sequential (removed)
test.sequential("example", async () => {
  /* ... */
}); // BROKEN: test.sequential no longer exists in Vitest 5
calculator.test.ts - concurrent: false (fixed)
test("example", { concurrent: false }, async () => {
  /* ... */
}); // FIXED: same effect, using the surviving option

describe.sequential follows the identical pattern:

calculator.test.ts - describe.sequential (removed)
describe.sequential("suite", () => {
  /* ... */
}); // BROKEN: describe.sequential no longer exists in Vitest 5
calculator.test.ts - concurrent: false (fixed)
describe("suite", { concurrent: false }, () => {
  /* ... */
}); // FIXED: same effect, using the surviving option

If your code used the sequential option-object key instead of the chained method, the same replacement applies directly to that key:

calculator.test.ts - sequential: true option key (removed)
test("example", { sequential: true }, async () => {
  /* ... */
}); // BROKEN: sequential key no longer recognized
calculator.test.ts - concurrent: false (fixed)
test("example", { concurrent: false }, async () => {
  /* ... */
}); // FIXED: negate the surviving flag instead

Search your suite for .sequential( and sequential: before you upgrade, not after. Every match needs this exact rename, and there’s no runtime compatibility shim carrying the old name forward.

Confirmed version range

Documented in Vitest’s own current migration guide as an intentional Vitest 5.0 removal, in the section covering the removed sequential options. Corroborated by vitest-dev/vitest#10180, the issue that proposed consolidating concurrency into the single concurrent flag. This repository’s own vitest.config.ts is pinned to vitest@^3.0.0, so this removal wasn’t independently reproduced against this project’s build; every claim above traces back to Vitest’s migration guide and the linked issue, not a local repro.

More fixes like this one are in the Guides & Fixes archive, and every Vitest post is tagged under vitest. If your suite is also hitting the hoisted-mocking change in the same upgrade, see Fix Vitest 5 vi.mock Top-Level Scope Error. Running vitest from a subdirectory in the same upgrade? See Fix Vitest 5 Config Not Found in Parent Directory.

Frequently asked

Does test.concurrent still work in Vitest 5?

Yes. Only the sequential-flavored APIs are removed. concurrent stays as the single option controlling test parallelism; sequential was the redundant negation of it, which is exactly why Vitest removed it instead of keeping both.

What error do I get if I still call test.sequential after upgrading?

Not independently verified as an exact string. Since the property is removed rather than deprecated, expect either a TypeScript type error at compile time on a typed project, or a plain "is not a function" JavaScript error at runtime on an untyped one. Vitest's migration guide documents the removal itself, not a specific runtime message for this case, so check the exact error against the Vitest version you're running rather than trusting an assumed string.

Emitted as FAQPage JSON-LD from the same frontmatter — one source, no duplicated prose.

Recent posts

Full-text search via Pagefind · ↑↓ to navigate · ↵ to open