NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #866 most downloaded on npm
React specific linting rules for ESLint
Last release 2 years ago
no release in 18 months
Release timing varies
gaps range from 9 days to 3 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
3 versions withdrawn
withdrawn after publishing
12 years old
216 releases · first in 2014
Add jsx-tag-spacing rule (#693 @Kovensky)
jsx-tag-spacing rule (#693 @Kovensky)jsx-indent for parenthesized ternaries (#945 @voxpelli)jsx-indent for multiline ternariesjsx-indent for arrays in jsx (#947)no-danger-with-children crash with spread on global variables (#921)jsx-wrap-multilines ternaries handling (#916)no-unused-prop-types skipShapeProps option by default to limit false positive (#953 @everdimension)jsx-tag-spacing][] rule (#693 @Kovensky)jsx-indent][] for parenthesized ternaries (#945 @voxpelli)jsx-indent][] for multiline ternariesjsx-indent][] for arrays in jsx (#947)no-danger-with-children][] crash with spread on global variables (#921)jsx-wrap-multilines][] ternaries handling (#916)no-unused-prop-types][] skipShapeProps option by default to limit false positive (#953 @everdimension)One column per quarter.
Add jsx-first-prop-new-line auto fix (#886 @snowypowers)
jsx-first-prop-new-line auto fix (#886 @snowypowers)no-unused-prop-types crash with destructured prop-types (#938)jsx-indent in multi-line conditional expressions (#901, #907)sort-comp bad error message if 2 methods in the same group must be moved (#507)jsx-first-prop-new-line][] auto fix (#886 @snowypowers)no-unused-prop-types][] crash with destructured prop-types (#938)jsx-indent][] in multi-line conditional expressions (#901, #907)sort-comp][] bad error message if 2 methods in the same group must be moved (#507)Add deprecated metadata to deprecated rules (#911 @randycoulman)
jsx-closing-bracket-location auto fixer (#909 @arperry)jsx-indent auto fixer (#608 @jayphelps)multiline-multiprop option to jsx-first-prop-new-line (#883 @kentor)forbid-component-props crash with self reference JSX element (#839 @xeodou)jsx-indent to ignore lines starting by literals (#900)no-set-state to correctly detect setState in arrow functions (#931)jsx-closing-bracket-location][] auto fixer (#909 @arperry)jsx-indent][] auto fixer (#608 @jayphelps)multiline-multiprop option to [jsx-first-prop-new-line][] (#883 @kentor)forbid-component-props][] crash with self reference JSX element (#839 @xeodou)jsx-indent][] to ignore lines starting by literals (#900)no-set-state][] to correctly detect setState in arrow functions (#931)Fix jsx-indent for arrays (#897, #898)
Add skipUndeclared option to prop-types (#846 @pfhayes)
skipUndeclared option to prop-types (#846 @pfhayes)jsx-no-bind crash on arrow functions (#854)display-name false negative on es6-style method in React.createClass (#852)prefer-stateless-function to allow components with childContextTypes (#853)no-children-prop spread support (#862 @randycoulman)no-unused-prop-types to ignore validation when spread is used (#840)jsx-closing-bracket-location for multi-line prop (#889)jsx-indent in multi-line function calls (#895)jsx-indent in multi-line logical expressions (#540)skipUndeclared option to [prop-types][] (#846 @pfhayes)jsx-no-bind][] crash on arrow functions (#854)display-name][] false negative on es6-style method in React.createClass (#852)prefer-stateless-function][] to allow components with childContextTypes (#853)no-children-prop][] spread support (#862 @randycoulman)no-unused-prop-types][] to ignore validation when spread is used (#840)jsx-closing-bracket-location][] for multi-line prop (#889)jsx-indent][] in multi-line function calls (#895)jsx-indent][] in multi-line logical expressions (#540)Add no-children-prop rule (#720 @benstepp)
no-children-prop][] rule (#720 @benstepp)no-unescaped-entities][] rule (#681 @pfhayes)jsx-indent][] rule (#838 @eelyafi)Fix no-unused-prop-types crash (#825 @EvNaverniouk)
Fix false positive in no-unused-prop-types (#792 @EvNaverniouk)
no-unused-prop-types][] (#792 @EvNaverniouk)jsx-no-target-blank][] to target only anchor elements (#793 @aduth)jsx-no-target-blank][] to be case insensitive #796 @dmnd)jsx-uses-vars][] shadowed variables handling (#799)Adds no-unused-prop-types rule (#226 @EvNaverniouk)
no-unused-prop-types rule (#226 @EvNaverniouk)style-prop-object rule (#715 @petersendidit)self-closing-comp (#770 @pl12133)typeAnnotations in sort-comp (#235 @dozoisch)PureComponent in prefer-stateless-function (#781 @tiemevanveen)jsx-uses-vars to work better with prefer-const. You'll need to upgrade to ESLint 3.4.0 to completely fix the compatibility issue (#716)require-render-return crash (#784)prop-types (#735)no-unused-prop-types][] rule (#226 @EvNaverniouk)style-prop-object][] rule (#715 @petersendidit)self-closing-comp][] (#770 @pl12133)typeAnnotations in [sort-comp][] (#235 @dozoisch)PureComponent in [prefer-stateless-function][] (#781 @tiemevanveen)jsx-uses-vars][] to work better with prefer-const. You'll need to upgrade to ESLint 3.4.0 to completely fix the compatibility issue (#716)require-render-return][] crash (#784)prop-types][] (#735)Fix nested spread handling in no-danger-with-children (#771 @petersendidit)
no-danger-with-children (#771 @petersendidit)no-danger-with-children][] (#771 @petersendidit)Fix prop-types on annotated components
prop-types][] on annotated components (#766)no-danger-with-children][] spread support (#767 @petersendidit)Add React.PureComponent support
React.PureComponent support (#737)forbid-component-props rule (#314 @lencioni)no-danger-with-children rule (#710 @petersendidit)createClass factory method (#725 @zurawiki)prop-types on annotated components (#729)require-optimization test for function declaration (#744 @Tom910)jsx-uses-var to handle nested object properties (#761 @yayalice)React.PureComponent support (#737)forbid-component-props][] rule (#314 @lencioni)no-danger-with-children][] rule (#710 @petersendidit)createClass factory method (#725 @zurawiki)prop-types][] on annotated components (#729)require-optimization][] test for function declaration (#744 @Tom910)jsx-uses-vars][] to handle nested object properties (#761 @yayalice)Deprecate require-extension rule, use the eslint-plugin-import `extensions` rule instead. require-extension still works but will trigger a warning
all sharable configuration with all rules enabled (#674 @pfhayes)no-find-dom-node rule (#678)shorthandFirst option to jsx-sort-props (#391 @mathieumg)allowDecorators option to require-optimization (#669 @Tom910)require-extension rule, use the eslint-plugin-import extensions rule instead. require-extension still works but will trigger a warningallow-in-func mode by default in no-did-mount-set-state and no-did-update-set-state rules (#702 @lencioni)self-closing-comppragma option from jsx-uses-react, use the shared settings to specify a custom pragma (#700 @lencioni)react option from no-deprecated rule, use the shared settings to specify the React version (#700 @lencioni)require-render-return rule to recommended rulesno-danger from recommended rules (#636 @mjackson)no-did-mount-set-state and no-did-update-set-state from recommended rules (#596)jsx-sort-prop-types rule, use sort-prop-types instead (#549 @lencioni)no-comment-textnodes to jsx-no-comment-textnodes. no-comment-textnodes still works but will trigger a warning (#668 @lencioni)wrap-multilines to jsx-wrap-multilines. wrap-multilines still works but will trigger a warning (#668 @lencioni)jsx-handler-names incorrectly flagging only (#571 @lencioni)jsx-no-target-blank (#679 @randycoulman)require-optimization warning on stateless components (#687)jsx-uses-vars that incorrectly marked some variables as used (#694 @lencioni)no-unknown-property check on SVG attributes (#718)jsx-no-bind reporting errors on render functions that don't return JSX (#663 @petersendidit)jsx-closing-bracket-location autofix when location is set to props-aligned (#684 @pfhayes)prop-types for destructured arguments being assigned to the parent stateless component in some cases (#698)prop-types for JSX return being assigned to the parent function in some cases (#504)jsx-curly-spacing for reporting on JSX content by mistake (#671)prop-types crash when accessing constructor on props (#654)jsx-filename-extension to not check filenames on text input (#662 @ljharb)jsx-no-comment-textnodes incorrectly catching urls (#664 @petersendidit)jsx-filename-extension warning once per file (#660 @mathieumg)no-unknown-propertyFix jsx-handler-names incorrectly flagging only (#571 @lencioni)
Fix all config to not include deprecated rules (#723 @pfhayes)
jsx-no-target-blank (#679 @randycoulman)require-optimization warning on stateless components (#687)jsx-uses-vars that incorrectly marked some variables as used (#694 @lencioni)no-unknown-property check on SVG attributes (#718)all config to not include deprecated rules (#723 @pfhayes)require-extension rule, use the eslint-plugin-import extensions rule insteadallow-in-func mode by default in no-did-mount-set-state and no-did-update-set-state rules (#702 @lencioni)self-closing-comppragma option from jsx-uses-react, use the shared settings to specify a custom pragma (#700 @lencioni)react option from no-deprecated rule, use the shared settings to specify the React version (#700 @lencioni)no-danger from recommended rules (#636 @mjackson)no-did-mount-set-state and no-did-update-set-state from recommended rules (#596)require-render-return rule to recommended rulesRemove deprecated jsx-sort-prop-types rule, use sort-prop-types instead (#549 @lencioni)
all sharable configuration with all rules enabled (#674 @pfhayes)no-find-dom-node rule (#678)shorthandFirst option to jsx-sort-props (#391 @mathieumg)allowDecorators option to require-optimization (#669 @Tom910)jsx-no-bind reporting errors on render functions that don't return JSX (#663 @petersendidit)jsx-closing-bracket-location autofix when location is set to props-aligned (#684 @pfhayes)prop-types for destructured arguments being assigned to the parent stateless component in some cases (#698)prop-types for JSX return being assigned to the parent function in some cases (#504)jsx-curly-spacing for reporting on JSX content by mistake (#671)jsx-sort-prop-types rule, use sort-prop-types instead (#549 @lencioni)jsx-no-comment-textnodes to no-comment-textnodes. jsx-no-comment-textnodes still works but will trigger a warning (#668 @lencioni)jsx-require-extension to require-extension. jsx-require-extension still works but will trigger a warning (#668 @lencioni)jsx-wrap-multilines to wrap-multilines. jsx-wrap-multilines still works but will trigger a warning (#668 @lencioni)jsx-filename-extension warning once per file (#660 @mathieumg)Fix prop-types crash when accessing constructor on props
prop-types crash when accessing constructor on props (#654)jsx-filename-extension to not check filenames on text input (#662 @ljharb)no-comment-textnodes incorrectly catching urls (#664 @petersendidit)### Fixed - Fix jsx-no-bind crash
jsx-no-bind crash (#641)Fix jsx-pascal-case for namespaced components (#637 @evcohen)
jsx-pascal-case for namespaced components (#637 @evcohen)jsx-pascal-case][] for namespaced components (#637 @evcohen)Add require-optimization rule (#240 @EvNaverniouk)
require-optimization rule (#240 @EvNaverniouk)jsx-filename-extension rule (#495 @lencioni)no-render-return-value rule (#531 @iamdustan)no-comment-textnodes rule (#616 @benvinegar)objectLiterals option to jsx-curly-spacing (#388, #211 @casesandberg @ljharb)self-closing-comp to check html tags (#572 @gitim)ignore option to no-unknown-property rule (#631 @insin)jsx-handler-names (#630)jsx-closing-bracket-location multiline prop support (#493 @tuures)prop-types for props that where not assigned to the right component (#591)display-name when JSON style is used for defining components (#590 @gitim)jsx-no-bind for bind detection in render when assigned to a variable (#474 @petersendidit)jsx-curly-spacing for spread operator (#606 @gitim)sort-comp crash on spread operator (#624)prop-types crash when destructuring props with spread onlyrequire-optimization][] rule (#240 @EvNaverniouk)jsx-filename-extension][] rule (#495 @lencioni)no-render-return-value][] rule (#531 @iamdustan)no-comment-textnodes][] rule (#616 @benvinegar)objectLiterals option to [jsx-curly-spacing][] (#388, #211 @casesandberg @ljharb)self-closing-comp][] to check html tags (#572 @gitim)ignore option to [no-unknown-property][] rule (#631 @insin)jsx-handler-names][] (#630)jsx-closing-bracket-location][] multiline prop support (#493 @tuures)prop-types][] for props that where not assigned to the right component (#591)display-name][] when JSON style is used for defining components (#590 @gitim)jsx-no-bind][] for bind detection in render when assigned to a variable (#474 @petersendidit)jsx-curly-spacing][] for spread operator (#606 @gitim)sort-comp][] crash on spread operator (#624)prop-types][] crash when destructuring props with spread onlyFix require-render-return crash
require-render-return crash (#589)Add jsx-no-target-blank rule (#582 @Gasparila)
jsx-no-target-blank rule (#582 @Gasparila)allowAllCaps and ignore options to jsx-pascal-case (#575)require-render-return (#564)jsx-closing-bracket-location fixer (#533 @dtinth)require-render-return to only check valid render methods (#563)this usage in fonctional components (#576)forbid-prop-types crash (#579)jsx-curly-spacing (#584)jsx-no-target-blank][] rule (#582 @Gasparila)allowAllCaps and ignore options to [jsx-pascal-case][] (#575)require-render-return][] (#564)jsx-closing-bracket-location][] fixer (#533 @dtinth)require-render-return][] to only check valid render methods (#563)this usage in fonctional components (#576)forbid-prop-types][] crash (#579)jsx-curly-spacing][] (#584)Fix require-render-return to not check stateless functions
require-render-return to not check stateless functions (#550)require-render-return][] to not check stateless functions (#550)Add warnings for LinkedStateMixin, ReactPerf.printDOM and ReactPerf.getMeasurementsSummaryMap in no-deprecated
jsx-first-prop-new-line rule (#410 @jseminck)LinkedStateMixin, ReactPerf.printDOM and ReactPerf.getMeasurementsSummaryMap in no-deprecatednull in prefer-stateless-functionIf you're still not using React 15 you can keep the old behavior by setting the React version to 0.14 in the shared settings.
require-render-return rule (#542, #543)prefer-stateless-function crash (#544)Add require-render-return rule (#482 @shmuga)
require-render-return rule (#482 @shmuga)jsx-equals-spacing (#506 @peet)jsx-closing-bracket-location (#511 @KevinGrandon)prefer-stateless-function for conditional JSX (#516)jsx-pascal-case to support single letter component names (#505 @dthielman)require-render-return][] rule (#482 @shmuga)jsx-equals-spacing][] (#506 @peet)jsx-closing-bracket-location][] (#511 @KevinGrandon)prefer-stateless-function][] for conditional JSX (#516)jsx-pascal-case][] to support single letter component names (#505 @dthielman)Fix class properties retrieval in prefer-stateless-function
prefer-stateless-function (#499)prefer-stateless-function][] (#499)Rewrite prefer-stateless-function rule
prefer-stateless-function rule (#491)self-closing-comp to treat non-breaking spaces as content (#496)prop-types (#497)prop-types (#498)this usage in jsx-no-undef (#489)prefer-stateless-function][] rule (#491)self-closing-comp][] to treat non-breaking spaces as content (#496)prop-types][] (#497)prop-types][] (#498)this usage in [jsx-no-undef][] (#489)Fix sort-prop-types crash with spread operator
Add support for Flow annotations on stateless components
prefer-stateless-function][] rule (#214)jsx-indent-props][] (#483 @shioju)jsx-no-undef][] crash on objects (#469)Add component detection for class expressions
display-name (#419)prop-types (#420)jsx-key (#456 @jkimbo)display-name][] (#419)prop-types][] (#420)jsx-key][] (#456 @jkimbo)Remove deprecated jsx-quotes rule (#433 @lencioni)
jsx-space-before-closing rule (#244 @ryym)prop-types (#354 @lencioni)sort-comp. Static methods must now be declared first, see rule documentation (#128 @lencioni)jsx-uses-vars is not enabled by default anymore, see documentation (#192)jsx-sort-prop-types to sort-prop-types. jsx-sort-prop-types still works but will trigger a warning (#87 @lencioni)jsx-quotes rule (#433 @lencioni)display-name now accept the transpiler name by default. You can use the ignoreTranspilerName option to get the old behavior, see rule documentation (#440 @lencioni)jsx-no-undef (#435)jsx-handler-names regex (#425)prop-types (#443)jsx-space-before-closing][] rule (#244 @ryym)prop-types][] (#354 @lencioni)sort-comp. Static methods must now be declared first, see rule documentation (#128 @lencioni)jsx-uses-vars][] is not enabled by default anymore, see documentation (#192)jsx-sort-prop-types to [sort-prop-types][]. jsx-sort-prop-types still works but will trigger a warning (#87 @lencioni)jsx-quotes rule (#433 @lencioni)display-name][] now accept the transpiler name by default. You can use the ignoreTranspilerName option to get the old behavior, see rule documentation (#440 @lencioni)jsx-no-undef][] (#435)jsx-handler-names][] regex (#425)prop-types][] (#443)Fix destructured props detection in prop-types
Remove deprecated jsx-quotes rule (#433 @lencioni)
jsx-space-before-closing rule (#244 @ryym)prop-types (#354 @lencioni)sort-comp. Static methods must now be declared first, see rule documentation (#128 @lencioni)jsx-uses-vars is not enabled by default anymore, see documentation (#192)jsx-sort-prop-types to sort-prop-types. jsx-sort-prop-types still works but will trigger a warning (#87 @lencioni)jsx-quotes rule (#433 @lencioni)display-name now accept the transpiler name by default. You can use the ignoreTranspilerName option to get the old behavior, see rule documentation (#440 @lencioni)jsx-no-undef (#435)Fix jsx-sort-prop-types issue with custom propTypes (#408 @alitaheri)
jsx-sort-prop-types issue with custom propTypes (#408 @alitaheri)jsx-sort-prop-types][] issue with custom propTypes (#408 @alitaheri)Add jsx-equals-spacing rule (#394 @ryym)
jsx-equals-spacing rule (#394 @ryym)wrap-multilinejsx-boolean-valueno-unknown-propertyjsx-curly-spacing (#407 @ewendel)requiredFirst option to jsx-sort-prop-types (#392 @chrislaskey)ignoreRefs option to jsx-no-bind (#330 @silvenon)ref in jsx-handler-names (again) (#396)jsx-equals-spacing][] rule (#394 @ryym)wrap-multilinejsx-boolean-valueno-unknown-propertyjsx-curly-spacing][] (#407 @ewendel)requiredFirst option to [jsx-sort-prop-types][] (#392 @chrislaskey)ignoreRefs option to [jsx-no-bind][] (#330 @silvenon)ref in [jsx-handler-names][] (again) (#396)Add support for flow annotations to prop-types (#382 @phpnode)
prop-types (#382 @phpnode)prop-types crash when initializing class variable with an empty object (#383)prop-types crash when propTypes are using the spread operator (#389)sort-comp error messages (#372 @SystemParadox)prop-types][] (#382 @phpnode)prop-types][] crash when initializing class variable with an empty object (#383)prop-types][] crash when propTypes are using the spread operator (#389)sort-comp][] error messages (#372 @SystemParadox)Add shared setting for pragma configuration (#228 @NickStefan)
jsx-key][] (#380 @nfcampos)forbid-prop-types][] (#377 @nfcampos)ref in [jsx-handler-names][] (#375)sort-comp][] codemod to [sort-comp][] documentation (#381 @turadg)Fix crash in jsx-key (#373 @lukekarrys)
jsx-key (#373 @lukekarrys)Add no-string-refs rule (#341 @Intellicode)
no-string-refs][] rule (#341 @Intellicode)prop-types][] (#355)never option in [prefer-es6-class][]jsx-key][] false-positives (#320 @silvenon)Add no-deprecated rule (#356 @graue)
no-deprecated rule (#356 @graue)no-is-mounted rule (#37 @lencioni)never option to prefer-es6-class rule (#359 @pwmckenna)jsx-pascal-case to stop checking lower cased components (#329)no-deprecated][] rule (#356 @graue)no-is-mounted][] rule (#37 @lencioni)never option to [prefer-es6-class][] rule (#359 @pwmckenna)jsx-pascal-case][] to stop checking lower cased components (#329)Fix crash in prop-types when reassigning props
prop-types][] when reassigning props (#345)jsx-handler-names][] for stateless components (#346)jsx-handler-names][] error messages to be less specific (#348 @jakemmarsh)Allow numbers in jsx-pascal-case
allow-in-func option to [no-did-update-set-state][] documentationFix SVG attributes support for no-unknown-property
no-unknown-property (#338)Add jsx-handler-names rule (#315 @jakemmarsh)
jsx-handler-names rule (#315 @jakemmarsh)no-unknown-property (#318)jsx-sort-props (#336 @lucasmotta)require-extension to ignore extension if it's part of the package name (#319)jsx-pascal-case (#328 @lencioni)jsx-handler-names][] rule (#315 @jakemmarsh)no-unknown-property][] (#318)jsx-sort-props][] (#336 @lucasmotta)require-extension][] to ignore extension if it's part of the package name (#319)jsx-pascal-case][] (#328 @lencioni)Add jsx-pascal-case rule (#306 @jakemmarsh)
Add jsx-key rule (#293 @benmosher)
jsx-key rule (#293 @benmosher)allow-in-func option to no-did-update-set-state (#300)jsx-closing-bracket-location rule to one type of tag (nonEmpty or selfClosing) (#307)no-unknown-property to not check custom elements (#308 @zertosh)jsx-closing-bracket-location error message (#301 @alopatin)jsx-key][] rule (#293 @benmosher)allow-in-func option to [no-did-update-set-state][] (#300)jsx-closing-bracket-location][] rule to one type of tag (nonEmpty or selfClosing) (#307)no-unknown-property][] to not check custom elements (#308 @zertosh)jsx-closing-bracket-location][] error message (#301 @alopatin)Add ignoreStateless option to no-multi-comp
Fix sort-comp crash on stateless components
Add jsx-no-bind rule (#184 @Daniel15)
jsx-no-bind][] rule (#184 @Daniel15)jsx-closing-bracket-location][] (#243 @alopatin)Fix display-name for stateless components
### Fixed - Fix wrong prop-types detection
Fix props validation in constructor
Add support for stateless function components to display-name and prop-types
display-name and prop-types (#237)jsx-sort-props and jsx-sort-prop-types (#242 @Daniel15)prefer-es6-class rule (#247 @hamiltondanielb)forbid-prop-types crash with destructured PropTypes (#230 @epmatsw)forbid-prop-types to do not modify AST directly (#249 @rhysd)prop-types crash with empty destructuring (#251)prop-types to not validate computed keys in destructuring (#236)display-name][] and [prop-types][] (#237)jsx-sort-props][] and [jsx-sort-prop-types][] (#242 @Daniel15)prefer-es6-class][] rule (#247 @hamiltondanielb)forbid-prop-types][] crash with destructured PropTypes (#230 @epmatsw)forbid-prop-types][] to do not modify AST directly (#249 @rhysd)prop-types][] crash with empty destructuring (#251)prop-types][] to not validate computed keys in destructuring (#236)Fix no-direct-mutation-state to report only in React components
no-direct-mutation-state][] to report only in React components (#229)forbid-prop-types][] for arrayOf and instanceOf (#230)Add no-direct-mutation-state rule (#133, #201 @petersendidit)
no-direct-mutation-state][] rule (#133, #201 @petersendidit)forbid-prop-types][] rule (#215 @pwmckenna)Only display the jsx-quotes deprecation warning with the default formatter
jsx-quotes deprecation warning with the default formatter (#221)jsx-quotes deprecation warning with the default formatter (#221)Fix jsx-quotes rule deprecation message
jsx-quotes rule deprecation message (#220)Deprecate jsx-quotes rule, will now trigger a warning if used
jsx-no-undef][] (#219 @zertosh)jsx-closing-bracket-location][] to configure different styles for self-closing and non-empty tags (#208 @evocateur)jsx-quotes rule, will now trigger a warning if used (#217)Add state in lifecycle methods for sort-comp rule (#197 @mathieudutour)
state in lifecycle methods for [sort-comp][] rule (#197 @mathieudutour)createElement as valid (#206 @epmatsw)Update changelog to follow the Keep a CHANGELOG standards
jsx-closing-bracket-location][] for multiline props (#199)Your coding agent can read these notes before it upgrades. Set up the MCP server →