# jest changelog > jest release notes. - Vendor: jest - Category: Developer Tools - Official site: https://jestjs.io/ - Tracked by: What's New (https://whatsnew.fyi/product/jest) - Harvested from: GitHub (jestjs/jest) - Entries below: 10 (newest first) What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. ## Releases ### v30.4.2 - Date: 2026-05-09 - Version: v30.4.2 - Original notes: https://github.com/jestjs/jest/releases/tag/v30.4.2 - Permalink: https://whatsnew.fyi/product/jest/releases/v30.4.2 #### Fixes - `[jest-runtime]` Fix named imports from CJS modules whose `module.exports` is a function with own-property exports ([#16150](https://github.com/jestjs/jest/pull/16150)) **Full Changelog**: https://github.com/jestjs/jest/compare/v30.4.1...v30.4.2 ### v30.4.1 - Date: 2026-05-08 - Version: v30.4.1 - Original notes: https://github.com/jestjs/jest/releases/tag/v30.4.1 - Permalink: https://whatsnew.fyi/product/jest/releases/v30.4.1 ##### Features - `[jest-config, jest-core, jest-runner, jest-schemas, jest-types]` Allow custom runner configuration options via tuple format `['runner-path', {options}]` ([#16141](https://github.com/jestjs/jest/pull/16141)) ##### Fixes - `[jest-runtime]` Align CJS-from-ESM default export with Node: `module.exports` is always the ESM default, `__esModule` unwrapping is no longer applied ([#16143](https://github.com/jestjs/jest/pull/16143)) **Full Changelog**: https://github.com/jestjs/jest/compare/v30.4.0...v30.4.1 ### v30.4.0 - Date: 2026-05-07 - Version: v30.4.0 - Original notes: https://github.com/jestjs/jest/releases/tag/v30.4.0 - Permalink: https://whatsnew.fyi/product/jest/releases/v30.4.0 Big release! 😀 Main feature is a rewrite of our custom runtime in preparation for stabilisation of native support of ESM. As part of that work `require(esm)` module is now supported on Node 24.9+ (still requires `--experimental-vm-modules` like before). In addition we now support fake timers for the recently released `Temporal` API in Node v26. React 19 is also supported properly in `pretty-format`, meaning snapshots of React components now work like they should. Due to all the changes, there might be regressions that snuck in. Please report them! Full list of changes below ##### Features - `[babel-jest]` Support collecting coverage from `.mts`, `.cts` (and other) files ([#15994](https://github.com/jestjs/jest/pull/15994)) - `[jest-circus, jest-cli, jest-config, jest-core, jest-jasmine2, jest-types]` Add `--collect-tests` flag to discover and list tests without executing them ([#16006](https://github.com/jestjs/jest/pull/16006)) - `[jest-config, jest-runner, jest-worker]` Add `workerGracefulExitTimeout` config option to control how long workers are given to exit before being force-killed ([#15984](https://github.com/jestjs/jest/pull/15984)) - `[jest-config]` Add support for `jest.config.mts` as a valid configuration file ([#16005](https://github.com/jestjs/jest/pull/16005)) - `[jest-config, jest-core, jest-reporters, jest-runner]` `verbose` and `silent` can now be set per-project; the project-level value overrides the global value for that project's tests ([#16133](https://github.com/jestjs/jest/pull/16133)) - `[@jest/fake-timers]` Accept `Temporal.Duration` in `jest.advanceTimersByTime()` and `jest.advanceTimersByTimeAsync()` ([#16128](https://github.com/jestjs/jest/pull/16128)) - `[@jest/fake-timers]` Accept `Temporal.Instant` and `Temporal.ZonedDateTime` in `jest.setSystemTime()` and `useFakeTimers({now})` ([#16128](https://github.com/jestjs/jest/pull/16128)) - `[@jest/fake-timers]` Support faking `Temporal.Now.*` ([#16131](https://github.com/jestjs/jest/pull/16131)) - `[jest-mock]` Add `clearMocksOnScope(scope)` on `ModuleMocker` for clearing every mock function exposed on a scope object ([#16088](https://github.com/jestjs/jest/pull/16088)) - `[jest-resolve]` Add `canResolveSync()` on `Resolver` so callers can detect when a user-configured resolver only exports an `async` hook ([#16064](https://github.com/jestjs/jest/pull/16064)) - `[jest-runtime]` Use synchronous `evaluate()` for ES modules without top-level `await` on Node versions that support it (v24.9+), and prefer the synchronous transform path when a sync transformer is configured ([#16062](https://github.com/jestjs/jest/pull/16062)) - `[jest-runtime]` Support `require()` of ES modules on Node v24.9+ ([#16074](https://github.com/jestjs/jest/pull/16074)) - `[jest-runtime]` Validate TC39 import attributes (`with { type: 'json' }`) on ESM imports ([#16127](https://github.com/jestjs/jest/pull/16127)) - `[@jest/transform]` Add `canTransformSync(filename)` on `ScriptTransformer` so callers can pick the sync vs async transform path ([#16062](https://github.com/jestjs/jest/pull/16062)) - `[jest-util]` Add `isError` helper ([#16076](https://github.com/jestjs/jest/pull/16076)) - `[pretty-format]` Support React 19 ([#16123](https://github.com/jestjs/jest/pull/16123)) ##### Fixes - `[expect-utils]` Fix `toStrictEqual` failing on `structuredClone` results due to cross-realm constructor mismatch ([#15959](https://github.com/jestjs/jest/pull/15959)) - `[@jest/expect-utils]` Prevent `toMatchObject`/subset matching from throwing when encountering exotic iterables ([#15952](https://github.com/jestjs/jest/pull/15952)) - `[fake-timers]` Convert `Date` to milliseconds before passing to `@sinonjs/fake-timers` ([#16029](https://github.com/jestjs/jest/pull/16029)) - `[jest]` Export `GlobalConfig` and `ProjectConfig` TypeScript types ([#16132](https://github.com/jestjs/jest/pull/16132)) - `[jest-circus]` Prevent crash when `asyncError` is unde _[Truncated at 4000 characters — full notes: https://github.com/jestjs/jest/releases/tag/v30.4.0]_ ### v30.3.0 - Date: 2026-03-10 - Version: v30.3.0 - Original notes: https://github.com/jestjs/jest/releases/tag/v30.3.0 - Permalink: https://whatsnew.fyi/product/jest/releases/v30.3.0 ###### Features - `[jest-config]` Add `defineConfig` and `mergeConfig` helpers for type-safe Jest config ([#15844](https://github.com/jestjs/jest/pull/15844)) - `[jest-fake-timers]` Add `setTimerTickMode` to configure how timers advance - `[*]` Reduce token usage when run through LLMs ([`3f17932`](https://github.com/jestjs/jest/commit/3f17932061c0203999451e5852664093de876709)) ###### Fixes - `[jest-config]` Keep CLI coverage output when using `--json` with `--outputFile` ([#15918](https://github.com/jestjs/jest/pull/15918)) - `[jest-mock]` Use `Symbol` from test environment ([#15858](https://github.com/jestjs/jest/pull/15858)) - `[jest-reporters]` Fix issue where console output not displayed for GHA reporter even with `silent: false` option ([#15864](https://github.com/jestjs/jest/pull/15864)) - `[jest-runtime]` Fix issue where user cannot utilize dynamic import despite specifying `--experimental-vm-modules` Node option ([#15842](https://github.com/jestjs/jest/pull/15842)) - `[jest-test-sequencer]` Fix issue where failed tests due to compilation errors not getting re-executed even with `--onlyFailures` CLI option ([#15851](https://github.com/jestjs/jest/pull/15851)) - `[jest-util]` Make sure `process.features.require_module` is `false` ([#15867](https://github.com/jestjs/jest/pull/15867)) ###### Chore & Maintenance - `[*]` Replace remaining micromatch uses with picomatch - `[deps]` Update to sinon/fake-timers v15 - `[docs]` Update V30 migration guide to notify users on `jest.mock()` work with case-sensitive path ([#15849](https://github.com/jestjs/jest/pull/15849)) - Updated Twitter icon to match the latest brand guidelines ([#15869](https://github.com/jestjs/jest/pull/15869)) ### v30.2.0 — 30.2.0 - Date: 2025-09-28 - Version: v30.2.0 - Original notes: https://github.com/jestjs/jest/releases/tag/v30.2.0 - Permalink: https://whatsnew.fyi/product/jest/releases/v30.2.0 ###### Chore & Maintenance - `[*]` Update example repo for testing React Native projects ([#15832](https://github.com/jestjs/jest/pull/15832)) - `[*]` Update `jest-watch-typeahead` to v3 ([#15830](https://github.com/jestjs/jest/pull/15830)) ##### Features - `[jest-environment-jsdom-abstract]` Add support for JSDOM v27 ([#15834](https://github.com/jestjs/jest/pull/15834)) ###### Fixes - `[babel-jest]` Export the `TransformerConfig` interface ([#15820](https://github.com/jestjs/jest/pull/15820)) - `[jest-config]` Fix `jest.config.ts` with TS loader specified in docblock pragma ([#15839](https://github.com/jestjs/jest/pull/15839)) ### v30.1.3 — 30.1.3 - Date: 2025-09-03 - Version: v30.1.3 - Original notes: https://github.com/jestjs/jest/releases/tag/v30.1.3 - Permalink: https://whatsnew.fyi/product/jest/releases/v30.1.3 ###### Fixes - Fix `unstable_mockModule` with `node:` prefixed core modules. ### v30.1.2 — 30.1.2 - Date: 2025-09-03 - Version: v30.1.2 - Original notes: https://github.com/jestjs/jest/releases/tag/v30.1.2 - Permalink: https://whatsnew.fyi/product/jest/releases/v30.1.2 ###### Fixes - `[jest-snapshot-utils]` Correct snapshot header regexp to work with newline across OSes ([#15803](https://github.com/jestjs/jest/pull/15803)) ### v30.1.1 — 30.1.1 - Date: 2025-08-27 - Version: v30.1.1 - Original notes: https://github.com/jestjs/jest/releases/tag/v30.1.1 - Permalink: https://whatsnew.fyi/product/jest/releases/v30.1.1 ###### Fixes - `[jest-snapshot-utils]` Fix deprecated goo.gl snapshot warning not handling Windows end-of-line sequences ([#15800](https://github.com/jestjs/jest/pull/15800)) ### v30.1.0 — 30.1.0 - Date: 2025-08-27 - Version: v30.1.0 - Original notes: https://github.com/jestjs/jest/releases/tag/v30.1.0 - Permalink: https://whatsnew.fyi/product/jest/releases/v30.1.0 ##### Features - `[jest-leak-detector]` Configurable GC aggressiveness regarding to V8 heap snapshot generation ([#15793](https://github.com/jestjs/jest/pull/15793/)) - `[jest-runtime]` Reduce redundant ReferenceError messages - `[jest-core]` Include test modules that failed to load when --onlyFailures is active ###### Fixes - `[jest-snapshot-utils] Fix deprecated goo.gl snapshot guide link not getting replaced with fully canonical URL ([#15787](https://github.com/jestjs/jest/pull/15787)) - `[jest-circus]` Fix `it.concurrent` not working with `describe.skip` ([#15765](https://github.com/jestjs/jest/pull/15765)) - `[jest-snapshot]` Fix mangled inline snapshot updates when used with Prettier 3 and CRLF line endings - `[jest-runtime]` Importing from `@jest/globals` in more than one file no longer breaks relative paths ([#15772](https://github.com/jestjs/jest/issues/15772)) #### Chore - `[expect]` Update docblock for `toContain()` to display info on substring check ([#15789](https://github.com/jestjs/jest/pull/15789)) ### v30.0.2 — 30.0.2 - Date: 2025-06-19 - Version: v30.0.2 - Original notes: https://github.com/jestjs/jest/releases/tag/v30.0.2 - Permalink: https://whatsnew.fyi/product/jest/releases/v30.0.2 ##### What's Changed ###### Fixes - `[jest-matcher-utils]` Make 'deepCyclicCopyObject' safer by setting descriptors to a null-prototype object ([#15689](https://github.com/jestjs/jest/pull/15689)) - `[jest-util]` Make garbage collection protection property writable ([#15689](https://github.com/jestjs/jest/pull/15689)) **Full Changelog**: https://github.com/jestjs/jest/blob/main/CHANGELOG.md