Skip to main content

Migrating to v2

Version 2 removes rule adapters that executed implementations from other ESLint plugins. Configure the upstream rule directly when you still want that behavior.

Removed adapter rules​

Removed etc-misc/* ruleConfigure instead
array-type@typescript-eslint/array-type
compatcompat/compat
typescript/compatcompat/compat
no-explicit-type-exports@typescript-eslint/consistent-type-exports
no-mixed-enums@typescript-eslint/no-mixed-enums
no-secretno-secrets/no-secrets
no-unused-disable@eslint-community/eslint-comments/no-unused-disable
no-unused-importsunused-imports/no-unused-imports
no-unused-varsunused-imports/no-unused-vars
no-useless-generics@typescript-eslint/no-unnecessary-type-parameters
no-value-tostring@typescript-eslint/no-base-to-string
prefer-includesunicorn/prefer-includes
sort-exportssimple-import-sort/exports
sort-importssimple-import-sort/imports
throw-new-errorunicorn/throw-new-error
unused-internal-propertiesunicorn/no-unused-properties
uppercase-iifeunicorn/no-unreadable-iife
wordswrite-good-comments/write-good-comments

The corresponding upstream plugins are no longer runtime dependencies of eslint-plugin-etc-misc.

React stability rule names​

Use no-unstable-react-values instead of require-usememo, and use no-unstable-react-children instead of require-usememo-children. The old IDs remain deprecated compatibility aliases in v3, are scheduled for removal in v4.0.0, and are excluded from presets to prevent duplicate reports.

require-memo remains deprecated in v3 with no replacement and is scheduled for removal in v4.0.0. React Compiler already performs memo-like optimization, and manual memoization should be driven by profiling rather than a blanket lint requirement.

Changed defaults​

  • no-invalid-jsx-nesting now defaults checkVoidParents to false. Use @eslint-react/dom-no-void-elements-with-children for complete void element coverage, or set this option to true to restore the prior check.
  • The four jsx-no-*-as-prop rules now ignore every intrinsic element by default. Set nativeAllowList: [] to opt back into checking all intrinsic attributes.
  • no-only-tests now detects focus segments anywhere in supported framework chains, follows imports and aliases, respects shadowed bindings, and treats fit and fdescribe as focused by default.

Validation​

After upgrading, search for removed IDs and run ESLint against the effective flat config:

npx eslint .

If you use an exhaustive preset, inspect the changed rule inventory before promoting the upgrade. Current all and allStrict presets exclude deprecated rules; use the explicitly named deprecated-inclusive variants only as temporary migration bridges.