# Vitest v4.0.0 — Release & Upgrade Intelligence
- **Product:** Vitest (https://vitest.dev)
- **Version:** v4.0.0
- **Released:** Oct 22, 2025
- **Impact Score:** 7/10
- **Breaking Changes:** Source flagged
- **Canonical Analysis:** https://changelogs.us/vitest/updates/v4.0.0/

## Executive Summary (TL;DR)
Vitest v4.0.0. Source highlight: To stay updated, read our blog post and check the migration guide.

## Breaking Changes & Deprecations
- &nbsp;&nbsp;&nbsp;🚨 Breaking Changes - Remove `'basic'` reporter &nbsp;-&nbsp; by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/7884 [<samp>(82fcf)</samp>](https://github.com/vitest-dev/vitest/commit/82fcf5d53)

## New Features
- Verbose reporter prints tests in a list, introduce `tree` reporter &nbsp;-&nbsp; by @sheremet-va and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8500 <samp>(25fd3)</samp>
- Provide entity to onConsoleLog &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8159 <samp>(437d4)</samp>
- Add `onUnhandledError` callback &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8162 <samp>(924cb)</samp>
- Add spy option to vi.mockObject &nbsp;-&nbsp; by @rChaoz in https://github.com/vitest-dev/vitest/issues/8285 <samp>(81d76)</samp>
- Don't use vite-node in coverage packages &nbsp;-&nbsp; by @sheremet-va <samp>(ffdb4)</samp>
- Clickable dashboard numbers &nbsp;-&nbsp; by @shairez in https://github.com/vitest-dev/vitest/issues/7406 <samp>(2344c)</samp>

## Improvements
- Avoid spawning extra workers if no tests will run there &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8446 <samp>(3fb3e)</samp>
- Don't set `process.title` &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8453 <samp>(0a766)</samp>
- Remove chai as a direct dependency, keep it in `@vitest/expect` &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8461 <samp>(cc98c)</samp>
- Reduce the amount of dynamic imports &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8465 <samp>(db6cd)</samp>
- Delay populating node-globals &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8506 <samp>(41cbc)</samp>
- Get `workerId` from a global object &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8507 <samp>(46b13)</samp>

## Bug Fixes
- Allow overriding globals in types &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8215 <samp>(2248b)</samp>
- Remove unused dependencies &nbsp;-&nbsp; by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8184 <samp>(feadc)</samp>
- Distribute test files to shards more evenly &nbsp;-&nbsp; by @Shinyaigeek and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8288 <samp>(7b489)</samp>
- Use suite's timeout when `test.extend` &nbsp;-&nbsp; by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8278 <samp>(43977)</samp>
- Support snapshot with no object key sorting &nbsp;-&nbsp; by @hi-ogawa and @sheremet-va in https://github.com/vitest-dev/vitest/issues/8136 <samp>(e85e3)</samp>
- Annotation location always points to the test file &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8315 <samp>(88071)</samp>
