# What changed in @vitest/eslint-plugin

> 57 changes in @vitest/eslint-plugin 1 from its official release notes, upgrade guides and advisories: 2 breaking, 9 new APIs and options. Each one cited. Sources checked 2026-10-20. HTML: https://unstale.sh/npm/@vitest/eslint-plugin/

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

## @vitest/eslint-plugin 1

### Breaking changes

- Reverses the toThrow/toThrowError alias direction enforced by the rule. (1.6.12) — [release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases/tag/v1.6.12)
- The plugin now treats `.extend` as exclusive. (1.4.0) — [release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases/tag/v1.4.0)

### New APIs and options

- Adds the disallowHasAssertions option to prefer-expect-assertions. (1.6.23) — [release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases/tag/v1.6.23)
- Adds the require-test-timeout ESLint rule. (1.6.6) — [release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases/tag/v1.6.6)
- Adds the prefer-mock-return-shorthand rule for linting mock return shorthand. (1.6.4) — [release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases/tag/v1.6.4)
- Adds an option to disable autofix for prefer-import-in-mock. (1.6.3) — [release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases/tag/v1.6.3)
- Adds a new rule named prefer-to-have-been-called-times. (1.6.1) — [release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases/tag/v1.6.1)
- Adds the no-unneeded-async-expect-function rule. (1.5.3) — [release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases/tag/v1.5.3)
- Adds the consistent-each-for rule. (1.4.4) — [release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases/tag/v1.4.4)
- Adds the require-import-vi-mock rule. (1.4.4) — [release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases/tag/v1.4.4)
- Adds the require-awaited-expect-poll rule. (1.4.2) — [release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases/tag/v1.4.2)

### Behavior and default changes

- The rule now supports ancestor traversal when checking test timeouts. (1.6.16) — [release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases/tag/v1.6.16)
- The plugin now allows timeout values to be declared as const variables in the same file. (1.6.15) — [release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases/tag/v1.6.15)
- The rule now supports doMock. (1.6.10) — [release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases/tag/v1.6.10)
- The rule ignores async implementations. (1.6.5) — [release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases/tag/v1.6.5)
- The no-done-callback rule is no longer included in the 'all' list. (1.4.0) — [release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases/tag/v1.4.0)

### Tooling

- A rule is added to the recommended Vitest ESLint config. (1.5.0) — [release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases/tag/v1.5.0)
- The plugin adds support for custom Vitest imports. (1.3.21) — [release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases/tag/v1.3.21)

### Fixes and other changes

- Refined the reportEmptyTitle message for the valid-title rule. (1.6.27) — [release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases/tag/v1.6.27)
- The valid-title rule now handles a missing argument. (1.6.27) — [release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases/tag/v1.6.27)
- The plugin now detects test modes in options objects. (1.6.26) — [release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases/tag/v1.6.26)
- The valid-expect rule now supports expect.assert members. (1.6.25) — [release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases/tag/v1.6.25)
- Fixes the rule to accept poll and element with 1 or 2 arguments. (1.6.24) — [release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases/tag/v1.6.24)
- Handles static expect APIs. (1.6.23) — [release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases/tag/v1.6.23)
- Handles expect.any separately from the Chai any flag. (1.6.22) — [release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases/tag/v1.6.22)
- Support Chai-style expect chains. (1.6.21) — [release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases/tag/v1.6.21)
- Map the calledOnce matcher to exact once with. (1.6.21) — [release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases/tag/v1.6.21)
- Detects vitest.mock and aliased vi/vitest mock calls. (1.6.20) — [release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases/tag/v1.6.20)
- Treats imported bindings as explicit timeouts. (1.6.20) — [release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases/tag/v1.6.20)
- Treats .finally() as part of async assertion promise chains. (1.6.20) — [release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases/tag/v1.6.20)
- Corrects the requiresTypeChecking metadata for four rules. (1.6.18) — [release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases/tag/v1.6.18)
- The rule now allows expect inside vi.defineHelper callbacks. (1.6.17) — [release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases/tag/v1.6.17)
- The rule now recommends toBeTypeOf instead of expectTypeOf. (1.6.17) — [release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases/tag/v1.6.17)
- Re-enables the unbound-method rule, allowing developers to use it in their ESLint configuration. (1.6.13) — [release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases/tag/v1.6.13)
- Class/function type detection is more reliable. (1.6.12) — [release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases/tag/v1.6.12)
- The rule now reports all chainable APIs, helping prevent focused tests from going undetected. (1.6.11) — [release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases/tag/v1.6.11)
- Corrected the package’s distributed entrypoints and type paths. (1.6.9) — [release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases/tag/v1.6.9)
- Fixes default value propagation in the plugin. (1.6.7) — [release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases/tag/v1.6.7)
- The rule takes expect.assertions into account when checking for conditional expectations. (1.6.5) — [release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases/tag/v1.6.5)
- The rule ignores use of update expressions. (1.6.5) — [release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases/tag/v1.6.5)
- The rule no longer reports mutable implementations. (1.6.5) — [release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases/tag/v1.6.5)
- Treats vitest and vi the same. (1.6.5) — [release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases/tag/v1.6.5)
- The rule now ignores functions passed to `vi.mocked`. (1.6.4) — [release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases/tag/v1.6.4)
- Results of test.extend are now treated as test calls. (1.6.0, 1.6.1) — [release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases/tag/v1.6.1), [release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases/tag/v1.6.0)
- Fixes a regression in prefer-hooks-on-top when using test.scoped. (1.5.2) — [release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases/tag/v1.5.2)
- Fixes a regression in valid-title when using test.scoped. (1.5.2) — [release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases/tag/v1.5.2)
- The rule now aliases toThrow to toThrowError, aligning it with Vitest. (1.5.1) — [release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases/tag/v1.5.1)
- The rule handles aliased Vitest imports when enforcing consistent test names. (1.5.0) — [release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases/tag/v1.5.0)
- Fixes potential false positives when using it.scoped. (1.4.4) — [release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases/tag/v1.4.4)
- Fixes false positives when using test.for. (1.4.4) — [release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases/tag/v1.4.4)
- Fixes potential false positives when using it.scoped. (1.4.4) — [release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases/tag/v1.4.4)
- Preserves TypeScript generic parameters for this rule, preventing them from being lost. (1.4.3) — [release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases/tag/v1.4.3)
- The plugin now supports describe.for chains. (1.4.0) — [release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases/tag/v1.4.0)
- The plugin now supports `.scoped`. (1.4.0) — [release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases/tag/v1.4.0)
- Fixes a false positive when using .for. (1.3.26) — [release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases/tag/v1.3.26)
- Corrects the rule’s expected options type. (1.3.25) — [release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases/tag/v1.3.25)
- The rule now supports it.for and test.for chains. (1.3.24) — [release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases/tag/v1.3.24)
