Should I upgrade to Jest 30 now?

Plan a test-stack upgrade after Jest 30 raised its Node and TypeScript baselines, which can force CI runner, local dev, and TypeScript config changes before the test framework can move.

Pin Jest 29.7 until your Node and TypeScript floors are ready; upgrade to Jest 30 only when Node 18+ and TS 5.4+ are already acceptable everywhere.

Blockers

Who this is for

Candidates

Upgrade to Jest 30 and raise the toolchain floor first

As of 2026-03-20, Jest's official v29-to-v30 upgrade guide says Jest 30 requires Node 18.x or newer and TypeScript 5.4 or newer. The official Jest versions page lists the stable docs line as Jest 30.0. Jest 30 also upgrades `jest-environment-jsdom` to JSDOM v26, removes deprecated alias matcher names, adds default `.mts` and `.cts` support, renames `--testPathPattern` to `--testPathPatterns`, and removes `jest --init`. This is the direct path if your repo can align CI, developer machines, and TypeScript tooling on the newer floor.

When to choose

Use this when Node 18+ and TypeScript 5.4+ are already acceptable across CI and local development, or when you are already planning a baseline runtime upgrade. It is the better choice when staying on current Jest matters more than preserving older runners or older TypeScript compatibility.

Tradeoffs

You get the current Jest major with newer ESM and TypeScript file support, but you must absorb multiple breaking changes at once across runtime, typings, CLI scripts, snapshots, and possibly DOM behavior.

Cautions

Expect migration work beyond the version bump: removed matcher aliases, stricter TypeScript inference for `CalledWith` matchers, JSDOM behavior changes from v26, possible glob pattern differences from `glob@10`, and breakage if internal Jest package paths were imported unofficially.

Pin Jest 29.7 until runtime and TypeScript baselines are upgraded

As of 2026-03-20, Jest's versions page lists 29.7 as the previous documentation line, and the official v28-to-v29 guide says Jest 29 supports Node 14.15, 16.10, 18.0 and above. That older guide also notes that if `jest-environment-jsdom` is used, the minimum TypeScript version is 4.5. This option avoids the Jest 30 floor change immediately and buys time to coordinate CI image updates, local Node upgrades, and TypeScript baseline changes. It is the lower-risk choice when the surrounding platform upgrade is not ready.

When to choose

Use this when your current CI or developer environment still depends on Node 14 or 16, or when your TypeScript baseline is below 5.4 and cannot move yet. It is the better choice when reducing upgrade scope matters more than adopting the newest Jest major now.

Tradeoffs

You avoid Jest 30 migration churn for now, but you also defer current-line improvements and keep the eventual major upgrade work on the backlog.

Cautions

This is a temporary hold, not a long-term simplification. When you do move later, you will still need to handle the Jest 30 breaking changes around matcher aliases, CLI flags, JSDOM, and stricter TypeScript typings.

Facts updated: 2026-03-20
Published: 2026-04-03

Try with your AI agent

$ npm install -g pocketlantern
$ pocketlantern init
# Restart Claude Code, Cursor, or your MCP client, then ask:
# "Should I upgrade to Jest 30 now?"
Missing something? Request coverage