ℹ️ Note
This PR body was truncated due to platform limits.
This PR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| @eslint-react/eslint-plugin (source) | ^1.41.0 → ^4.2.3 |
Release Notes
Rel1cx/eslint-react (@​eslint-react/eslint-plugin)
v4.2.3
✨ New
- jsx: add jsx-no-leaked-dollar rule, add suggest fix to jsx-no-leaked-semicolon rule (#1688) (
b86bdd6da) - jsx: add jsx-no-leaked-semicolon rule, closes #1685 (#1686) (
fbb495000)
📝 Documentation
- update recipe section structure (Code→Rule, Usage→Config) (
8cade3008) - update custom rule examples code style (#1684) (
dc9d05c33) - update recipe titles to Title Case (
6a2d941b6) - improve recipes overview (
8278f45c9)
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v4.2.2...v4.2.3
v4.2.1
This release consolidates all changes since v3.0.0.
💥 Breaking Changes
New eslint-plugin-react-jsx package
A new dedicated plugin for React Flavored JSX rules has been introduced. Several rules have been migrated from eslint-plugin-react-x and eslint-plugin-react-dom to this new package:
Old Rule (react-x/) | New Rule (react-jsx/) | Change |
|---|---|---|
jsx-key-before-spread | no-key-after-spread | relocated, renamed |
jsx-no-comment-textnodes | no-comment-textnodes | relocated, renamed |
no-children-prop | no-children-prop | relocated |
no-useless-fragment | no-useless-fragment | relocated |
Old Rule (react-dom/) | New Rule (react-jsx/) | Change |
|---|---|---|
no-namespace | no-namespace | relocated |
Rule prefix changes in @eslint-react/eslint-plugin
Rules from individual plugins now use a flattened naming convention when accessed through the unified @eslint-react/eslint-plugin package:
@eslint-react/<rule>->@eslint-react/<rule>(no changes)@eslint-react-jsx-<rule>->@eslint-react-jsx-<rule>(no changes)@eslint-react/rsc/<rule>->@eslint-react/rsc-<rule>@eslint-react/dom/<rule>->@eslint-react/dom-<rule>@eslint-react/web-api/<rule>->@eslint-react/web-api-<rule>@eslint-react/naming-convention/<rule>->@eslint-react/naming-convention-<rule>@eslint-react/debug/<rule>->@eslint-react/debug-<rule>
Removed Rules from eslint-plugin-react-x
The following rules have been removed from eslint-plugin-react-x:
| Rule | Replaced by |
|---|---|
react-x/jsx-dollar | @eslint-react/kit (custom rule) |
react-x/jsx-shorthand-boolean | @eslint-react/kit (custom rule) |
react-x/jsx-shorthand-fragment | @eslint-react/kit (custom rule) |
react-x/unstable-rules-of-props | Recipes: custom-rules-of-props |
react-x/unstable-rules-of-state | Recipes: custom-rules-of-state |
JSX utilities extracted from @eslint-react/core to @eslint-react/jsx
The JSX module has been extracted from @eslint-react/core into a new standalone @eslint-react/jsx package. The following exports are no longer available from @eslint-react/core:
JsxInspectorclass — removed, replaced with standalone utility functions from@eslint-react/jsx(e.g.findAttribute,hasAttribute,getChildren,isElement,isFragmentElement,isHostElement,isJsxLike, etc.)JsxConfig,JsxDetectionHint,JsxAttributeValue— moved to@eslint-react/jsxgetElementType— renamed togetElementFullTypein@eslint-react/jsxgetElementSelfName— renamed togetElementSelfTypein@eslint-react/jsx
Removed ref APIs from @eslint-react/core
The following ref-related APIs have been removed from @eslint-react/core without replacement:
isRefIdisInitializedFromRefgetRefInitisRefLikeName
Core collector API renames
The collector APIs in @eslint-react/core have been renamed:
| Before | After |
|---|---|
useComponentCollector() | getComponentCollector() |
useComponentCollectorLegacy() | getComponentCollectorLegacy() |
useHookCollector() | getHookCollector() |
Collector return property .ctx | Collector return property .api |
@eslint-react/kit API restructuring
The hint API in @eslint-react/kit has been restructured for better namespacing:
| Before | After |
|---|---|
hint.defaultComponent | hint.component.Default |
@eslint-react/kit API redesign
The defineConfig function has been replaced with a chainable builder API for better composability and type inference:
| Before | After |
|---|---|
defineConfig({ rules: [rule1, rule2] }) | eslintReactKit().use(rule1).use(rule2).getConfig() |
The new API provides better TypeScript intellisense and allows for more flexible rule configuration:
import eslintReactKit from "@​eslint-react/kit";
export default defineConfig(
{
files: ["**/*.{ts,tsx}"],
extends: [
// ... other configs
eslintReactKit()
.use(functionComponentDefinition)
.use(maxComponentPerFile, { max: 1 })
.getConfig(),
],
},
);react-jsx: Renameno-deoptimizationrule tono-key-after-spreadfor clearer intent (#1668).kit: Removefilesoption fromgetConfig()and normalize file extensions handling (#1669). Thefilesoption is no longer supported; file extensions are now automatically normalized to include both standard and TypeScript variants.
✨ New
- New
jsxanddisable-jsxconfig presets in@eslint-react/eslint-plugin. - New
react-dom-with-custom-rulesexample project demonstrating custom rule creation with@eslint-react/kit. eslint-plugin-react-jsx: New plugin dedicated to React Flavored JSX rules. Ships withrecommendedandstrictconfig presets.react-jsx/no-children-prop-with-children: New rule that disallows passingchildrenas a prop when children are also passed as nested content.react-jsx/no-key-after-spread: New rule that prevents patterns causing deoptimization when using the automatic JSX runtime (e.g. placingkeyafter spread props).react-jsx/no-namespace: New rule that disallows JSX namespace syntax, as React does not support them.@eslint-react/jsx: New utility package for static analysis of JSX patterns in TSESTree ASTs, extracted from@eslint-react/core.@eslint-react/kit: New utility module for building custom ESLint rules with React awareness. Provides a chainableeslintReactKit().use().getConfig()builder API and aRuleToolkitinterface with pre-bound context helpers for component/hook analysis.@eslint-react/kit: Re-export types from@eslint-react/sharedfor better TypeScript intellisense.kit: AddgetPlugin()API toBuilderfor fine-grained control over plugin namespace and rule severities.kit: Support more file extensions ingetConfigdefaults (js,mjs,cjs,jsx,ts,mts,cts,tsx), closes #1659.kit.settings: Expose normalized ESLint React settings viasettingsproperty onRuleToolkit.docs(utilities): Add utilities documentation for utility modules, closes #1656.
🐞 Fixes
purity: Remove console methods from impurity detection, closes #1616 (#1676).purity: Treatnew Date(arg)as pure, closes #1582 (#1677).react-jsx: Improve type safety and edge case handling for JSX rules (#1664).react-x:component-hook-factories: Exclude HOC patterns and test mocks from component detection, closes #1652. Thanks @zerone0x!react-x:component-hook-factories: UseisComponentNameLoosefor more accurate component parameter checks.react-x:immutability: Exclude event handler params from props mutation check, closes #1647. Thanks @zerone0x!react-x:no-duplicate-key: Fix false positive for SVGxlinkattributes.react-x:purity: RemoveAbortControllerfrom impure constructors, closes #1648. Thanks @zerone0x!core:isReactAPI: Fix API name matching logic to useendsWithfor precise matching.core:isRenderMethodLike: SupportClassExpressionin addition toClassDeclaration.core:findImportSource: Add cycle detection to prevent infinite recursion when resolving variable aliases.ast: Fix JSX attribute name comparison to useisNodeEqualinstead of string comparison, properly handlingJSXNamespacedName(e.g.,xlink:href).ast: UpdateFunctionInitPathtypes to support method definitions and property arrow functions in class expressions.ast:isNodeEqual: FixJSXNamespacedNamecomparison logic.var: Fix logic bugs incompute-object-type,find-enclosing-assignment-target, andis-value-equalutilities (#1672).docs: Update package structure documentation in contributing guide and FAQ, closes #1658.
🪄 Improvements
react-jsx/no-children-prop: Add suggestion-fix feature to move children from prop to element content.@eslint-react/eslint-plugin: Unified plugin architecture refactored — configs now auto-inject the plugin, so users no longer need to manually register it separately.refactor(kit): ImproveBuilderandRuleFunctionimplementation for better type inference and code organization.refactor(kit): ReplacedefineConfigwith chainable.use().getConfig()builder API, closes #1644.refactor(kit): Remove unused type parameter fromCollectorWithContext<T, E>toCollectorWithContext<T>.refactor(kit): Rename parameterargstooptions.refactor(eff): ReplacegetOrElse/getOrElseUpdatewithgetOrInsert/getOrInsertComputedfor better API consistency, closes #1657.docs(kit): Add comprehensive documentation forgetConfig()andgetPlugin()APIs with usage examples.docs(kit): Replace "max-component-per-file" example with "destructure-component-props" example for better practical guidance.docs(website): Improveconfigure-project-rulesdocumentation with clearer examples and explanations.docs: add recipes section; remove unstable-rules-of-props/state (#1679) (01edc2f74)docs: Update migrating-from-eslint-plugin-react.mdx with improved examples and fixes, closes #1654.docs: Add index sections to migration guides for better navigation.examples/react-dom-with-custom-rules: Expand with additional custom rules examples includingforbid-dom-props,jsx-fragments,jsx-handler-names,jsx-max-depth,jsx-no-duplicate-props,jsx-no-literals,jsx-pascal-case,jsx-props-no-spread-multi, andno-adjacent-inline-elements, closes #1653.examples/react-dom-with-custom-rules: Addmax-component-per-filecustom rule example, closes #1437.examples/react-dom-with-custom-rules: Modularize custom rules configuration for better maintainability.website: Migrate to new Fumadocs structure and add LLM routes (/llms.txt,/llms-full.txt,/llms.mdx), closes #1588.test: Enhance test coverage forreact-xandreact-domrules, closes #1663.test: Add comprehensive test coverage forfind-import-source,is-react-api, legacy component detection, hook detection, function init path, and node equality utilities (#1671).test: Add comprehensive unit tests for@eslint-react/varutilities includingcompute-object-type,find-enclosing-assignment-target,is-assignment-target-equal, andis-value-equal(#1672).deps: Update typescript-eslint to ^8.58.0 (#1670).
📝 Documentation
- scripts: Add comprehensive README and more automation scripts (#1673).
docs: Update bug report template with upstream eslint-plugin-react-hooks guidance.- update @eslint-react/kit installation tag from beta to rc (
2da9b4e9d) - update deprecated rule replacements in removed.md (
dc2fe27fb)
✅ Upgrade Checklist
Use this checklist to upgrade from v3.x to v4.2.1:
Package changes
- Install the new
eslint-plugin-react-jsxpackage — this is a new dedicated plugin for React Flavored JSX rules.
ESLint configuration
- Replace
react-x/jsx-key-before-spreadwithreact-jsx/no-key-after-spreadin your ESLint config. - Replace
react-x/jsx-no-comment-textnodeswithreact-jsx/no-comment-textnodesin your ESLint config. - Replace
react-x/no-children-propwithreact-jsx/no-children-propin your ESLint config. - Replace
react-x/no-useless-fragmentwithreact-jsx/no-useless-fragmentin your ESLint config. - Replace
react-dom/no-namespacewithreact-jsx/no-namespacein your ESLint config.
Rule prefix changes in @eslint-react/eslint-plugin
If you use the unified @eslint-react/eslint-plugin package, update the following rule prefixes (slash \/ -> dash -):
- Replace
@eslint-react/rsc/<rule>with@eslint-react/rsc-<rule>in your ESLint config. - Replace
@eslint-react/dom/<rule>with@eslint-react/dom-<rule>in your ESLint config. - Replace
@eslint-react/web-api/<rule>with@eslint-react/web-api-<rule>in your ESLint config. - Replace
@eslint-react/naming-convention/<rule>with@eslint-react/naming-convention-<rule>in your ESLint config. - Replace
@eslint-react/debug/<rule>with@eslint-react/debug-<rule>in your ESLint config.
Review new rules
react-jsx/no-children-prop-with-children— new rule that disallows passingchildrenas a prop when children are also passed as nested content. Review your codebase for new reports if using presets.
Removed rules
react-x/jsx-dollarreact-x/jsx-shorthand-booleanreact-x/jsx-shorthand-fragmentreact-x/unstable-rules-of-props— replaced by Recipes: custom-rules-of-propsreact-x/unstable-rules-of-state— replaced by Recipes: custom-rules-of-state
If you still need these rules, you can enforce them using the new @eslint-react/kit by creating custom rules that implement the desired checks.
@eslint-react/kit migration
- Replace
defineConfig({ rules: [rule1, rule2] })witheslintReactKit().use(rule1).use(rule2).getConfig(). - Replace
hint.defaultComponentwithhint.component.Default. - Remove any
filesoption passed togetConfig()— file extensions are now automatically normalized.
Core API changes (for custom rule authors)
- Replace
useComponentCollector()withgetComponentCollector(). - Replace
useComponentCollectorLegacy()withgetComponentCollectorLegacy(). - Replace
useHookCollector()withgetHookCollector(). - Replace collector return property
.ctxwith.api. - Replace
JsxInspector.from(context)usage with standalone utility functions from@eslint-react/jsx. - Replace
getElementType()withgetElementFullType()from@eslint-react/jsx. - Replace
getElementSelfName()withgetElementSelfType()from@eslint-react/jsx. - Remove usage of deleted ref APIs (
isRefId,isInitializedFromRef,getRefInit,isRefLikeName). - Update JSX-related imports from
@eslint-react/coreto@eslint-react/jsx.
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v3.0.0...v4.2.1
v3.0.0
🧹 Chores
- Version Packages.
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v3.0.0-rc.5...v3.0.0
v2.13.0
✨ New
- Add
naming-convention/id-namerule forReact.useId()by @amir-rahmanii in #1497 - Deprecate
naming-convention/filenameandnaming-convention/filename-extensionby @Rel1cx in #1498
🐞 Fixes
- Update rules’
meta.typefrom"problem"to"suggestion"for naming-convention rules by @amir-rahmanii in #1496
📝 Changes you should be aware of
- The
naming-convention/filenamerule has been deprecated and will be removed in the next major version. - The
naming-convention/filename-extensionrule has been deprecated and will be removed in the next major version.
Modern React frameworks each come with their own naming conventions that can differ or even conflict. A single predefined, framework-agnostic filename or filename extension rule no longer matches real-world usage. Please follow the official naming conventions of the specific React framework you are using.
For example, here are some references for popular frameworks:
- Next.js — App Router and File-system conventions: https://nextjs.org/docs/app, https://nextjs.org/docs/app/api-reference/file-conventions
- React Router — File Route Conventions: https://reactrouter.com/how-to/file-route-conventions#file-route-conventions
- TanStack Start — TanStack Router File Naming Conventions: https://tanstack.com/router/v1/docs/framework/react/routing/file-naming-conventions
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.12.4...v2.13.0
v2.12.4
🐞 Fixes
🪄 Improvements
- Refactor
dom/no-unknown-propertyrule to fix all ESLint and TypeScript issues by @ulrichstark in #1490
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.12.2...v2.12.4
v2.12.2
🐞 Fixes
- Reduce the sensitivity of component detection to prevent false positives in certain rules, closes #1488 by @Rel1cx in #1489
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.12.1...v2.12.2
v2.12.1
🐞 Fixes
- Check all union constituents and allow all types under
Reactnamespace inno-implicit-keyby @Rel1cx in #1487
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.12.0...v2.12.1
v2.12.0
🪄 Improvements
📝 Changes you should be aware of
ESLint v10 is now supported and used throughout the repository. The minimum required ESLint version remains v8.57.0, but the project now supports and is tested against ESLint v10.
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.11.2...v2.12.0
v2.11.2
🐞 Fixes
- Implement a more robust check to handle cases that
getFullyQualifiedNamecannot handle inno-implicit-key, closes #1476 by @Rel1cx in #1480
🪄 Improvements
- Bump esbuild, node types, jsdoc plugin
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.11.1...v2.11.2
v2.11.1
🐞 Fixes
- Fix React internal key checks in
no-implicit-key, closes #1476 by @Rel1cx in #1479 - Add
no-implicit-keyrule todisable-type-checkedconfig ofeslint-plugin-react-x, closes #1477 by @Rel1cx in #1478
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.11.0...v2.11.1
v2.11.0
✨ New
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.10.1...v2.11.0
v2.10.1
🐞 Fixes
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.10.0...v2.10.1
v2.10.0
- Refactor
no-implicit-keyrule to use type checking by @Rel1cx in #1466 - Move
no-unnecessary-use-refto removed rules, closes #1417 by @Rel1cx in #1471
📝 Changes you should be aware of
- The
no-implicit-keyrule has been updated to use type checking and moved fromrecommendedtotype-checkedpresets. - The
no-unnecessary-use-refrule has been moved to removed rules, because the rule is hard to get right.
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.9.4...v2.10.0
v2.9.4
🐞 Fixes
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.9.3...v2.9.4
v2.9.3
📝 Changes you should be aware of
The following rules have been deprecated and will be removed in the next major version:
no-default-propsno-prop-typesno-string-refs
For legacy codebases, use no-restricted-syntax as an alternative:
{
files: ['**/*.jsx', '**/*.tsx'],
rules: {
"no-restricted-syntax": [
"error",
{
"selector": "AssignmentExpression[operator='='][left.property.name='defaultProps']",
"message": "[Deprecated] Use ES6 default parameters instead."
},
{
"selector": "AssignmentExpression[operator='='][left.property.name='propTypes']",
"message": "[Deprecated] Use TypeScript or another type-checking solution instead."
},
{
"selector": "JSXAttribute[name.name='ref'][value.type='Literal']",
"message": "[Deprecated] Use callback refs instead."
}
]
}
}Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.9.2...v2.9.3
v2.9.2
🐞 Fixes
- Fix directives checks by @Rel1cx in #1461
- Add missing rsc plugin to
allconfig, closes #1462 by @Rel1cx in #1463
🪄 Improvements
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.9.0...v2.9.2
v2.9.0
✨ New
- Migrate
no-non-async-server-functionsrule torsc/function-definitionby @Rel1cx in #1457 - Add a new
eslint-plugin-react-rscsub-plugin for React Server Components (RSC) rules by @Rel1cx in #1457 - Add a new
rscpreset to enable RSC rules by @Rel1cx in #1457 - Add a new
disable-rscpreset to disable RSC rules by @Rel1cx in #1457
🪄 Improvements
📝 Changes you should be aware of
The no-non-async-server-functions rule has been migrated to rsc/function-definition. Please update your configuration accordingly if you are using it.
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.8.4...v2.9.0
v2.8.4
🐞 Fixes
- Change status of
jsx-shorthand-booleanrule in migration table by @connorshea in #1446 - Fix rule name in docs for
debug/is-from-refby @amir-rahmanii in #1445 - Fix rule name in docs for
no-non-async-server-functionsby @Rel1cx in #1447 - Mark
no-non-async-server-functionsas experimental by @Rel1cx in #1448
v2.8.3
✨ New
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.8.1...v2.8.3
v2.8.1
✨ New
- Function component detection now supports identifying components that don't return a
ReactNodebut have a'use memo'or'use no memo'directive by @Rel1cx in #1440 The function in below example will be detected as a function component in relevant rules:function App() { "use memo"; } function App() { "use no memo"; }
🐞 Fixes
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.8.0...v2.8.1
v2.8.0
✨ New
- Function component detection now supports identifying components that don't return a
ReactNodebut call React Hooks by @Rel1cx in #1438 The function in below example will be detected as a function component in relevant rules:function App() { useEffect(() => {}, []); }
🐞 Fixes
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.7.4...v2.8.0
v2.7.4
✨ New
🐞 Fixes
🪄 Improvements
- Enhance component detection hints with array patterns and expressions by @Rel1cx in #1430
- Enhance rules overview page by @Rel1cx in #1432
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.7.2...v2.7.3
v2.7.2
🪄 Improvements
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.7.1...v2.7.2
v2.7.1
🐞 Fixes
- Fix misdetected functions inside array expressions as function components; closes #1416 by @Rel1cx in #1418
- Remove unnecessary
no-unnecessary-use-refrule from strict configurations and update documentation by @Rel1cx in #1419
📝 Changes you should be aware of
The no-unnecessary-use-ref rule has been removed from the strict presets, as it was causing false positives in certain scenarios. You can still enable it manually if needed, but please be aware of its current limitations.
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.7.0...v2.7.1
v2.7.0
✨ New
🐞 Fixes
- Fix
no-unnecessary-memoandno-unnecessary-use-callbackfalse positives when unused, closes #1404 by @Rel1cx in #1407 - Enhance
no-unnecessary-use-refto allow previous refs by convention, closes #1406 by @Rel1cx in #1410 - Fix
no-missing-keymisdetect non-map calls as map since 2.6.4 version, closes #1412 by @Rel1cx in #1413
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.6.4...v2.7.0
v2.6.4
✨ New
- feat: add a
disable-experimentalpreset to quickly opt out of experimental rules by @Rel1cx in #1403
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.6.2...v2.6.4
v2.6.2
🐞 Fixes
- Fix
no-unnecessary-keyfalse positives on JSX elements inside render props by @Rel1cx in #1402 - Enhance
no-unnecessary-use-refrule tests and improve handling of ref references by @Rel1cx in #1399 - Support v3 and v4 zod versions by @DoctorFTB in #1400
v2.6.0
✨ New
📝 Changes you should be aware of
The new no-unnecessary-use-ref rule is included in the strict presets.
This rule reports unnecessary uses of useRef when the ref is only used within a single effect which the value can be co-located inside the effect itself. Thanks to @SukkaW for purposing it!
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.5.7...v2.6.0
v2.5.7
🪄 Improvements
- Enhance
no-unnecessary-keyto catch constant keys outside of map calls, closes #1377 by @Rel1cx in #1393
🐞 Fixes
📝 Changes you should be aware of
The no-implicit-key rule has been re-added to the recommended presets.
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.5.5...v2.5.7
v2.5.5
🐞 Fixes
- Remove
no-unnecessary-keyrule from strict presets by @Rel1cx in #1386 - Remove
no-duplicate-keyrule from recommended presets by @Rel1cx in #1387 Removeno-implicit-keyrule from recommended presets by @Rel1cx in #1388
📝 Changes you should be aware of
The following rules have been removed from the strict and recommended presets:
no-unnecessary-keyno-duplicate-keyno-implicit-key
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.5.3...v2.5.5
v2.5.3
🐞 Fixes
- Enhance context and ref naming rules with additional cases covered by @Rel1cx in #1378
- Update
naming-convention/context-namerule to include React version checks; closes #1382 by @Rel1cx in #1384 - Update
naming-convention/ref-nameto allow "ref" as a ref name by @ocavue in #1380 - Fix
jsx-key-before-spread: should only be enabled in JSX automatic runtime; update related docs and tests; closes #1381 by @Rel1cx in #1383
v2.5.1
🐞 Fixes
- Fix
naming-convention/ref-namefalse positive with immediate deref, closes #1375 by @Rel1cx in #1376
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.5.0...v2.5.1
v2.5.0
✨ New
- feat: add
use-ref-namerule by @amir-rahmanii in #1366 - Rename
use-ref-namerule toref-nameand add it to recommended presets by @Rel1cx in #1367
🪄 Improvements
- Add
verify-rules-metasscript & minor docs fixes by @Rel1cx in #1355 - docs(use-state): add examples for
enforceAssignmentby @amir-rahmanii in #1363
v2.4.0
✨ New
- Add
enforceAssignmentandenforceSetterNameoptions tonaming-convention/use-stateby @Rel1cx in #1346
🐞 Fixes
- Fix False positive in
naming-convention/use-statefor state with no setters, closes #1342, closes #1352 by @Rel1cx in #1346 - Fix fumadocs theme issues by @Rel1cx in #1347
🪄 Improvements
- Update
typescript-eslintto8.50.1across all packages
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.3.13...v2.4.0
v2.3.13
🐞 Fixes
- Clean up the code structure of the AST utils and fix an issue where
isNodeEqualdid not handleasexpressions correctly, closes #1340 by @Rel1cx in #1341
🪄 Improvements
- Update next and react to latest versions across all packages
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.3.12...v2.3.13
v2.3.12
✨ New
🐞 Fixes
- Fix
web-api/no-leaked-event-listenerfalse positive when using React NativeBackHandler, closes #1323 by @Rel1cx in #1336
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.3.11...v2.3.12
v2.3.11
🐞 Fixes
- Fix readonly type detection for class and interface extends, closes #1326 by @Rel1cx in #1329
- Fix and cleanup
react-x/prefer-read-only-propsrule, closes #1326 by @Rel1cx in #1331 - Fix
forwardRef'srefshould be excluded from check, closes #1332 by @Rel1cx in #1333
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.3.9...v2.3.11
v2.3.9
✨ New
- feat: Disallow a function wrapped in
useCallbackor a variable wrapped inuseMemoyet only used inuseEffectand only in oneuseEffect, closes #1278 by @possum-enjoyer in #1321
🐞 Fixes
- docs: fix severity for
no-unsafe-iframe-sandboxin rule docs by @JstnMcBrd in #1327 - chore: correct peer dependencies by @ha1fstack in #1328
v2.3.7
🐞 Fixes
web-api/no-leaked-event-listenerdoes not report event listeners withsignal, closes #1282 by @Rel1cx in #1325
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.3.5...v2.3.7
v2.3.5
🐞 Fixes
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.3.4...v2.3.5
v2.3.4
✨ New
- feat(no-unstable-default-props): add
safeDefaultPropsoption, closes #1312 by @christopher-buss in #1313 - feat(no-forbidden-props): Mark this rule as deprecated by @Rel1cx in #1304
🐞 Fixes
- Remove
type-festfrom shared package, closes #1306 by @Rel1cx in #1307 - Remove 'NodeJS.Require' type from shared package, closes #1308 by @Rel1cx in #1309
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.3.1...v2.3.4
v2.3.1
🐞 Fixes
- Clean up the code structure of the AST utils and fix an issue where
isNodeEqualdid not handleasexpressions correctly, closes #1340 by @Rel1cx in #1341
🪄 Improvements
- Update next and react to latest versions across all packages
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.3.12...v2.3.13
v2.3.0
✨ New
🪄 Improvements
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.2.4...v2.3.0
v2.2.4
🐞 Fixes
Configuration
📅 Schedule: (UTC)
- Branch creation
- At any time (no schedule defined)
- Automerge
- At any time (no schedule defined)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
- If you want to rebase/retry this PR, check this box
This PR was generated by Mend Renovate. View the repository job log.