โ ๏ธ Breaking Change
Impact Score: 7/10
Vitest v0.32.0 โ Release Notes & Engineering Impact
Source available โ automated, not human-reviewed
Component: vitest ยท Channel: stable. Automated analysis, not a compatibility certification. How this works.
Analysis updated: 2026-11-01.
Breaking-change evidence from the source
๐จ Breaking Changes - Throw an error, if the module cannot be resolved - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/3307 [<samp>(1ad63)</samp>](https://github.com/vitest-dev/vitest/commit/1ad63b0c)
โก Executive Summary (TL;DR)
Vitest v0.32.0. Source highlight: ๐จ Breaking Changes
Who Does This Impact? (Role-Based Analysis)
๐ป Software Engineers & Devs
Check the source notes against the package and APIs you use before upgrading.
๐ Product & Engineering Leads
Use the documented changes to assess relevance to your product; release frequency alone is not a quality measure.
โ๏ธ DevOps & Security
Verify the target version, runtime requirements and rollback procedure in the official documentation.
โ ๏ธ Breaking Changes & Deprecations (1)
- ๐จ Breaking Changes - Throw an error, if the module cannot be resolved - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/3307 [<samp>(1ad63)</samp>](https://github.com/vitest-dev/vitest/commit/1ad63b0c)
โจ New Features & Capabilities (5)
- Add `@vitest/coverage-v8` package - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/3339 <samp>(82112)</samp>
- Support ssr optimizer - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/3490 <samp>(89842)</samp>
- Image type add apng - by @btea in https://github.com/vitest-dev/vitest/issues/3498 <samp>(a53c2)</samp>
- **expect**: Support `expect.soft` - by @Dunqing in https://github.com/vitest-dev/vitest/issues/3507 <samp>(7c687)</samp>
- **runner**: Support using function/class as `describe`/`test` name - by @fenghan34 in https://github.com/vitest-dev/vitest/issues/3497 <samp>(15253)</samp>
โก Performance & Enhancements (2)
- Improve globs - by @nickmccurdy in https://github.com/vitest-dev/vitest/issues/3392 <samp>(19ecc)</samp>
- Vitest now uses v8 code coverage directly for better performance. `@vitest/coverage-c8` is deprecated as Vitest no longer uses c8 package for coverage output. It will not be updated anymore, and Vitest will fail in the next version if the user has `c8` as their coverage provider. Please, install the new `@vitest/coverage-v8` package if you previously used `@vitest/coverage-c8`.
๐ง Bug Fixes & Patches (6)
- The cli option is passed to coverage.exclude - by @btea in https://github.com/vitest-dev/vitest/issues/3506 <samp>(c37cd)</samp>
- **optimizer**: Always respect optimizeDeps even if include/exclude is overridden - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/3488 <samp>(eb285)</samp>
- **runner**: Ensure Vitest is deduped - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/3489 <samp>(2deb7)</samp>
- **ui**: Don't cache coverage assets - by @userquin in https://github.com/vitest-dev/vitest/issues/3508 <samp>(952b5)</samp>
- **vite-node**: Circular import stuck - by @Dunqing in https://github.com/vitest-dev/vitest/issues/3480 <samp>(50f07)</samp>
- **watch**: Junit reporter fails to re-generate report - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/3496 <samp>(5b73c)</samp>
๐ View Raw Release Notes (Original Developer Log)
### ๐จ Breaking Changes
- Throw an error, if the module cannot be resolved - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/3307 [<samp>(1ad63)</samp>](https://github.com/vitest-dev/vitest/commit/1ad63b0c)
- Vitest used to fall back to the original import when it could not resolve it to the file path or the virtual module. This leads to hard-to-find module graph mismatches if you had incorrect alias or relied on relative imports to be resolved to the project root (which is usual behavior in TypeScript) because the code accidentally "worked". With this release, Vitest will now throw an error if it cannot resolve the module - there are possible edge cases that are not covered yet, so if you have any problems with this, please open a separate issue with reproduction.
- Improve globs - by @nickmccurdy in https://github.com/vitest-dev/vitest/issues/3392 [<samp>(19ecc)</samp>](https://github.com/vitest-dev/vitest/commit/19ecc6c7)
- Vitest now has glob patterns similar to Jest for better compatibility. It's possible that some files will be considered test files when previously they were not. For example, Vitest now considers `test.js` to be a test file. Also any file in `__tests__` is now considered to be a test, not just files with `test` or `spec` suffix.
- Add `@vitest/coverage-v8` package - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/3339 [<samp>(82112)</samp>](https://github.com/vitest-dev/vitest/commit/821126f1)
- Vitest now uses v8 code coverage directly for better performance. `@vitest/coverage-c8` is deprecated as Vitest no longer uses c8 package for coverage output. It will not be updated anymore, and Vitest will fail in the next version if the user has `c8` as their coverage provider. Please, install the new `@vitest/coverage-v8` package if you previously used `@vitest/coverage-c8`.
- **mocker**: Don't restore mock to the original if the module is automocked - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/3518 [<samp>(c1004)</samp>](https://github.com/vitest-dev/vitest/commit/c1004e14)
- `spy.mockRestore` on auto-mocked named exports will no longer restore their implementation to the actual function. This behavior better matches what Jest does.
### ๐ Features
- Support ssr optimizer - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/3490 [<samp>(89842)</samp>](https://github.com/vitest-dev/vitest/commit/898422b0)
- Image type add apng - by @btea in https://github.com/vitest-dev/vitest/issues/3498 [<samp>(a53c2)</samp>](https://github.com/vitest-dev/vitest/commit/a53c2151)
- **expect**: Support `expect.soft` - by @Dunqing in https://github.com/vitest-dev/vitest/issues/3507 [<samp>(7c687)</samp>](https://github.com/vitest-dev/vitest/commit/7c687ada)
- **runner**: Support using function/class as `describe`/`test` name - by @fenghan34 in https://github.com/vitest-dev/vitest/issues/3497 [<samp>(15253)</samp>](https://github.com/vitest-dev/vitest/commit/15253890)
### ๐ Bug Fixes
- The cli option is passed to coverage.exclude - by @btea in https://github.com/vitest-dev/vitest/issues/3506 [<samp>(c37cd)</samp>](https://github.com/vitest-dev/vitest/commit/c37cdebe)
- **optimizer**: Always respect optimizeDeps even if include/exclude is overridden - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/3488 [<samp>(eb285)</samp>](https://github.com/vitest-dev/vitest/commit/eb285ea0)
- **runner**: Ensure Vitest is deduped - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/3489 [<samp>(2deb7)</samp>](https://github.com/vitest-dev/vitest/commit/2deb70ab)
- **ui**: Don't cache coverage assets - by @userquin in https://github.com/vitest-dev/vitest/issues/3508 [<samp>(952b5)</samp>](https://github.com/vitest-dev/vitest/commit/952b5be6)
- **vite-node**: Circular import stuck - by @Dunqing in https://github.com/vitest-dev/vitest/issues/3480 [<samp>(50f07)</samp>](https://github.com/vitest-dev/vitest/commit/50f0700d)
- **watch**: Junit reporter fails to re-generate report - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/3496 [<samp>(5b73c)</samp>](https://github.com/vitest-dev/vitest/commit/5b73cbf8)
##### [View changes on GitHub](https://github.com/vitest-dev/vitest/compare/v0.31.4...v0.32.0)