# What changed in eslint-plugin-jest

> 49 changes in eslint-plugin-jest 29 from its official release notes, upgrade guides and advisories: 5 breaking, 10 new APIs and options. Each one cited. Sources checked 2026-10-17. HTML: https://unstale.sh/npm/eslint-plugin-jest/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## eslint-plugin-jest 29

### Breaking changes

- The rule now reports export all declarations. (29.16.11) — [release notes](https://github.com/jest-community/eslint-plugin-jest/releases/tag/v29.16.11)
- The rule now bans optional chaining in tests. (29.14.0) — [release notes](https://github.com/jest-community/eslint-plugin-jest/releases/tag/v29.14.0)
- The rule now ensures printf specifiers in .each titles are valid. (29.10.0) — [release notes](https://github.com/jest-community/eslint-plugin-jest/releases/tag/v29.10.0)
- The rule now reports on export = usage. (29.2.2) — [release notes](https://github.com/jest-community/eslint-plugin-jest/releases/tag/v29.2.2)
- The rule now reports ERR_PACKAGE_PATH_NOT_EXPORTED errors when validating mock module paths. (29.2.1) — [release notes](https://github.com/jest-community/eslint-plugin-jest/releases/tag/v29.2.1)

### New APIs and options

- Adds the checkThenables option for custom promises. (29.16.0) — [release notes](https://github.com/jest-community/eslint-plugin-jest/releases/tag/v29.16.0)
- Adds the prefer-mock-return-shorthand rule. (29.11.0) — [release notes](https://github.com/jest-community/eslint-plugin-jest/releases/tag/v29.11.0)
- Adds the valid-expect-with-promise rule. (29.8.0) — [release notes](https://github.com/jest-community/eslint-plugin-jest/releases/tag/v29.8.0)
- A new rule is available to configure in eslint-plugin-jest. (29.7.0) — [release notes](https://github.com/jest-community/eslint-plugin-jest/releases/tag/v29.7.0)
- Adds the no-unnecessary-assertion rule. (29.6.0) — [release notes](https://github.com/jest-community/eslint-plugin-jest/releases/tag/v29.6.0)
- Adds the no-unneeded-async-expect-function ESLint rule. (29.5.0) — [release notes](https://github.com/jest-community/eslint-plugin-jest/releases/tag/v29.5.0)
- A new rule is available for configuring ESLint checks. (29.4.0) — [release notes](https://github.com/jest-community/eslint-plugin-jest/releases/tag/v29.4.0)
- A new rule is available for configuring ESLint checks. (29.4.0) — [release notes](https://github.com/jest-community/eslint-plugin-jest/releases/tag/v29.4.0)
- Adds the valid-mock-module-path rule. (29.2.0) — [release notes](https://github.com/jest-community/eslint-plugin-jest/releases/tag/v29.2.0)
- The rule can now be configured to ignore todo tests. (29.1.0) — [release notes](https://github.com/jest-community/eslint-plugin-jest/releases/tag/v29.1.0)

### Performance

- Parsing is cached for nodes that turn out not to be Jest function calls. (29.16.9) — [release notes](https://github.com/jest-community/eslint-plugin-jest/releases/tag/v29.16.9)

### Behavior and default changes

- The rule now allows expect assertions in beforeEach hooks. (29.17.0) — [release notes](https://github.com/jest-community/eslint-plugin-jest/releases/tag/v29.17.0)
- Only report optional chaining when allowOptionalChaining is false. (29.15.0) — [release notes](https://github.com/jest-community/eslint-plugin-jest/releases/tag/v29.15.0)
- The rule greatly improves checking whether mutable variables are used. (29.12.0) — [release notes](https://github.com/jest-community/eslint-plugin-jest/releases/tag/v29.12.0)
- The rule now supports the toBeNaN matcher when checking for unnecessary assertions. (29.9.0) — [release notes](https://github.com/jest-community/eslint-plugin-jest/releases/tag/v29.9.0)
- The rule supports basic uses of hasAssertions in beforeEach and afterEach hooks. (29.3.0) — [release notes](https://github.com/jest-community/eslint-plugin-jest/releases/tag/v29.3.0)

### Tooling

- Adds support for ESLint v10. (29.13.0) — [release notes](https://github.com/jest-community/eslint-plugin-jest/releases/tag/v29.13.0)
- Added TypeScript as an optional peer dependency. (29.12.2) — [release notes](https://github.com/jest-community/eslint-plugin-jest/releases/tag/v29.12.2)

### Fixes and other changes

- The rule now checks dynamic imports. (29.16.11) — [release notes](https://github.com/jest-community/eslint-plugin-jest/releases/tag/v29.16.11)
- Most rules now account for optional chaining, improving how they handle code that uses it. (29.16.10) — [release notes](https://github.com/jest-community/eslint-plugin-jest/releases/tag/v29.16.10)
- The rule no longer drops `only` and `skip` from `each` chains. (29.16.9) — [release notes](https://github.com/jest-community/eslint-plugin-jest/releases/tag/v29.16.9)
- No longer crashes when expect is called without an argument. (29.16.8) — [release notes](https://github.com/jest-community/eslint-plugin-jest/releases/tag/v29.16.8)
- The rule now accounts for optional chaining. (29.16.7) — [release notes](https://github.com/jest-community/eslint-plugin-jest/releases/tag/v29.16.7)
- No longer crashes on a matcher without an argument. (29.16.6) — [release notes](https://github.com/jest-community/eslint-plugin-jest/releases/tag/v29.16.6)
- No longer crashes on an expect chain without a value. (29.16.6) — [release notes](https://github.com/jest-community/eslint-plugin-jest/releases/tag/v29.16.6)
- The no-export rule now handles literal property accessors. (29.16.5) — [release notes](https://github.com/jest-community/eslint-plugin-jest/releases/tag/v29.16.5)
- The no-export rule now handles nested assignment chains. (29.16.4) — [release notes](https://github.com/jest-community/eslint-plugin-jest/releases/tag/v29.16.4)
- The rule now checks for the exports global. (29.16.3) — [release notes](https://github.com/jest-community/eslint-plugin-jest/releases/tag/v29.16.3)
- The rule no longer crashes on an expect chain without a value. (29.16.2) — [release notes](https://github.com/jest-community/eslint-plugin-jest/releases/tag/v29.16.2)
- No longer crashes on an expect chain without a value. (29.16.1) — [release notes](https://github.com/jest-community/eslint-plugin-jest/releases/tag/v29.16.1)
- No longer crashes on an expect chain without a value. (29.16.1) — [release notes](https://github.com/jest-community/eslint-plugin-jest/releases/tag/v29.16.1)
- The rule no longer reports assignments to local variables named module. (29.15.4) — [release notes](https://github.com/jest-community/eslint-plugin-jest/releases/tag/v29.15.4)
- Treats describe blocks as test files when applying the no-export rule. (29.15.3) — [release notes](https://github.com/jest-community/eslint-plugin-jest/releases/tag/v29.15.3)
- The rule no longer reports virtual mocks. (29.15.2) — [release notes](https://github.com/jest-community/eslint-plugin-jest/releases/tag/v29.15.2)
- TypeScript v7 is now allowed as a peer dependency. (29.15.1) — [release notes](https://github.com/jest-community/eslint-plugin-jest/releases/tag/v29.15.5), [release notes](https://github.com/jest-community/eslint-plugin-jest/releases/tag/v29.15.1)
- The rule no longer reports unnecessary assertions for any and unknown types. (29.12.1) — [release notes](https://github.com/jest-community/eslint-plugin-jest/releases/tag/v29.12.1)
- The rule now ignores use of update expressions. (29.11.4) — [release notes](https://github.com/jest-community/eslint-plugin-jest/releases/tag/v29.11.4)
- The rule now ignores async implementations. (29.11.3) — [release notes](https://github.com/jest-community/eslint-plugin-jest/releases/tag/v29.11.3)
- The rule no longer reports mutable implementations. (29.11.2) — [release notes](https://github.com/jest-community/eslint-plugin-jest/releases/tag/v29.11.2)
- The rule now ignores inline use of jest.mocked(...). (29.11.1) — [release notes](https://github.com/jest-community/eslint-plugin-jest/releases/tag/v29.11.1)
- The rule no longer crashes on it.todo. (29.10.1) — [release notes](https://github.com/jest-community/eslint-plugin-jest/releases/tag/v29.10.1)
- The rule now ignores resolve and reject chains for now, avoiding unnecessary assertion reports on those chains. (29.6.1) — [release notes](https://github.com/jest-community/eslint-plugin-jest/releases/tag/v29.6.1)
- The rule now checks that the current matcher is toHaveLength. (29.4.1) — [release notes](https://github.com/jest-community/eslint-plugin-jest/releases/tag/v29.4.1)
- The rule's error message now uses the correct word. (29.2.3) — [release notes](https://github.com/jest-community/eslint-plugin-jest/releases/tag/v29.2.3)
