Jest 30: Faster, Leaner, Better
Today we are happy to announce the release of Jest 30. This release features a substantial number of changes, fixes, and improvements. While it is one of the largest major releases of Jest ever, we admit that three years for a major release is too long. In the future, we are aiming to make more frequent major releases to keep Jest great for the next decade.
If you want to skip all the news and just get going, run npm install jest@^30.0.0 and follow the migration guide: Upgrading from Jest 29 to 30.
What’s New?
Jest 30 is noticeably faster, uses less memory, and comes with tons of new features. First, let’s take a look at the breaking changes:
Breaking Changes
- Jest 30 drops support for Node 14, 16, 19, and 21.
jest-environment-jsdomwas upgraded from jsdom 21 to 26.- The minimum compatible TypeScript version is now 5.4.
- Various
expectaliases were removed.eslint-plugin-jesthas an autofixer which you can run to automatically upgrade your codebase. - Non-enumerable object properties are now excluded from object matchers such as
toEqualby default. - Jest now supports
.mtsand.ctsfiles by default. --testPathPatternwas renamed to--testPathPatterns.- Jest now properly handles promises that are first rejected and then later caught to avoid false positive test failures.
- We made various improvements to Jest’s printing of snapshots which might require you to update snapshots. Google deprecated
goo.gllinks which we were using in snapshots. We don’t like it either, but you’ll have to update all your snapshots. - Jest itself is now bundled into a single file per package. This improves performance, but might break if you built tools that reach into Jest's internals.
These are just some of the highlights. The full list of breaking changes can be found in the CHANGELOG and the Jest 30 migration guide.

