Vitest 1 ran test files in worker threads by default. Vitest 2 changed the default pool to forks, meaning each file runs in a child process rather than a worker thread. Forks start more slowly and use more memory, so a suite can get measurably slower purely from the upgrade.
The reason for the change is correctness. Native modules, anything touching process.chdir, and libraries that assume a real process rather than a worker either crash or behave oddly under threads, producing segmentation faults and Channel closed errors that are hard to attribute.
If the suite is pure JavaScript and was fine on threads, set test.pool: 'threads' back explicitly and keep the speed. Do not use pool: 'vmThreads' as a general speed fix: it shares a single process context and leaks state between files in ways that produce flaky failures. Per-file overrides are possible with poolMatchGlobs in Vitest 2 and with project-level configuration in Vitest 3.