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
One column per quarter.
[jsx-handler-names]: avoid a crash when an inline prop is not a MemberExpression ([#2803][] @willheslam)
jsx-handler-names]: avoid a crash when an inline prop is not a MemberExpression (#2803 @willheslam)[button-has-type]: support trivial ternary expressions ([#2748][] @Hypnosphi)
button-has-type]: support trivial ternary expressions (#2748 @Hypnosphi)jsx-handler-names]: add checkInlineFunction option (#2761 @dididy)jsx-no-literals]: add noAttributeStrings option (#2782 @TaLeaMonet)prop-types]: add support for PropTypes.exact (#2740 @jzabala)jsx-filename-extension]: Add allow option (#2746 @remcohaszing)function-component-definition]: ignore object properties (#2771 @stefan-wullems)forbid-component-props]: Implemented support for "namespaced" components (#2767 @mnn)prefer-read-only-props]: support Flow $ReadOnly (#2772, #2779, #2770 @karolina-benitez)jsx-handler-names]: handle whitespace (#2789 @AriPerkkio)prop-types]: Detect TypeScript types for destructured default prop values (#2780 @sunghyunjo)jsx-pascal-case]: Handle single character namespaced component (#2791 @daviferreira)jsx-closing-bracket-location]: In tag-aligned, made a distinction between tabs and spaces (#2796 @Moong0122)jsx-handler-names]: false positive when handler name begins with number (#1689 @jsphstls)prop-types]: Detect JSX returned by sequential expression (#2801 @mikol)jsx-props-no-multi-spaces]: "Expected no line gap between" false positive (#2792 @karolina-benitez)no-unknown-property]: check attributes with any input case (#2790 @julienw)prop-types]/[no-unused-prop-types]: handle CallExpression in ReturnType (#2802 @hank121314)jsx-uses-react]: mark fragment variables as used (#2775 @remcohaszing)no-unused-prop-types]: improve component declared props detection ([#2755][] @jzabala)jsx-props-no-multi-spaces]: Show error in multi-line props (#2756 @iiison)[jsx-curly-brace-presence]: fix multiline comment case ([#2716][] @ljharb)
jsx-curly-brace-presence]: fix multiline comment case (#2716 @ljharb)jsx-no-useless-fragment]: accept fragments with call expressions (#2744 @hasparus)jsx-no-literals] with allowStrings doesn't work in props (#2736 @karolina-benitez)no-find-dom-node]: Improve error message (#2741 @ecraig12345)no-typos]/[no-unused-prop-types]/propType detection: Support typescript props interface extension and TSTypeAliasDeclaration (#2721 @hank121314)no-this-in-sfc]/component detection: add arrow function to list of allowed position for component (#2708 @jzabala)no-access-state-in-setstate]: add check for class component (#2711 @jzabala)prop-types]/component detection: avoid a crash when a local createElement identifier exists (#2733 @ljharb)no-unused-prop-types]: add test assigning this.props to a variable[jsx-curly-brace-presence]: disable disallowed JSX text chars check in props ([#2710][] @jzabala)
jsx-curly-brace-presence]: disable disallowed JSX text chars check in props (#2710 @jzabala)no-unused-state]: check for class expression (#2712 @jzabala)prop-types]: handle anonymous functions (#2730, #2731 @odinho @wKich @jzabala)no-access-state-in-setstate]: fix example (#2724 @youngjuning)improve algorithm to check if a variable is coming from the pragma ([#2706][] @jzabala)
prop-types]: handle component returning null (#2696 @hank121314)prop-types]/[function-component-definition]: Add check for first letter capitalization in functional component detection (#2699 @jzabala)prop-types]: use variable value in prop type fields defined by variables (#2704 @jzabala)no-typos]: warn on a bindingless react importboolean-prop-naming: Added test for function invocation of bool (#2697 @ajkovar)jsx-curly-brace-presence, jsx-no-comment-textnodes: add passing testsno-unused-state: avoid a loop[no-unused-prop-types]/[prop-types]: typescript interface support literal type and only FunctionComponent should have propTypes validation ([#2690][]
[no-unused-prop-types]: handle optional chaining ([#2679][] @hank121314)
[forbid-dom-props], [function-component-definition]: fix schema typos ([#2667][] @mflorence99)
forbid-dom-props], [function-component-definition]: fix schema typos (#2667 @mflorence99)no-unused-prop-types]: fix with typescript eslint parser (#2661 @eltonio450)forbid-prop-types]: warn on destructured values as well (#2676 @ajkovar)jsx-pascal-case]: Remove xregexp (#2636 @yacinehmito))no-typos] test fails in eslint v7.3 ([#2678][] @toshi-toma)jsx-ast-utils, object.entries, resolve@types/eslint, @types/estree, @types/node, @typescript-eslint/parser, eslint-config-airbnb-base, eslint-plugin-eslint-plugin, eslint-plugin-import, typescript…docs/rules/no-danger-with-children.md [no-deprecated]: docs/rules/no-deprecated.md [no-did-mount-set-state]: docs/rules/no-did-mount-set-state.md [no-…
forbid-component-props/forbid-dom-props: Allow a custom message with forbid props (#2615 @mtamhankar1)jsx-no-literals: add ignoreProps option to ignore props validation (#2146 @iiison)jsx-sort-props: only use localeCompare when case is ignored (#2556 @tanmoyopenroot)jsx-key: add a failing test case for optional chaining (#2610 @JonathanLee-LX)no-unused-state: handle optional chaining (#2588 @golopot)jsx-pascal-case: Do not consider namespaces when checking for DOM (#2638 @yacinehmito)jsx-curly-spacing, jsx-no-bind, usedPropTypes util: avoid node.start and node.end (25b1936 @toshi-toma)jsx-no-target-blank: allow no-referrer without noopener by default (#2043 @seancrater)button-has-type: improve message when non-static value is used (aecff62 @golopot)no-adjacent-inline-elements: prevent crash on nullish children (#2621 @Rogdham)prop-types: avoid crash when spreading any type (#2606 @golopot))require-render-return: add missing "a" (#2604 @leothorp)jsx-no-comment-textnodes: fix for @typescript-eslint/parser (#2601 @Axnyff)displayName][]: avoid a crash when using React.memo (#2587 @golopot)no-this-in-sfc: backtick this (#2616 @mrflip)function-component-definition: Fix unnamedComponents option examples (#2608 @vkrol))operator-linebreak override (#2578 @golopot)button-has-type: ensure no mistakenly allowed identifiers named button/submit/reset (#2625 @golopot)displayName: add a test case (#2593 @golopot)@types/eslint, @types/estree, @types/node, @typescript-eslint/parser, coveralls, eslint-config-airbnb-base, eslint-plugin-import, typescript[style-prop-object][]: Add allow option ([#1819][] @hornta)
style-prop-object][]: Add allow option (#1819 @hornta)jsx-pascal-case][]: Support unicode characters (#2557 @Svish)prefer-stateless-function][]: avoid crash on ts empty constructor (#2582 @golopot)no-adjacent-inline-elements][]: avoid a crash (#2575 @ljharb)no-unused-prop-types][]: Change the reporting to point to a more accurate node (#2292 @jseminck)self-closing-comp][]: consider JSXMemberExpression as component too (#2572 @Belco90)no-unused-prop-types][]: make markPropTypesAsUsed work with TSEmptyBodyFunctionExpression AST node (#2560 @guillaumewuip)displayName][] (but really, propTypes detection): do not crash on empty flow type spreads (#2570 @ljharb)[jsx-indent][]: don't check literals not within JSX ([#2564][] @toshi-toma)
jsx-indent][]: don't check literals not within JSX (#2564 @toshi-toma)[jsx-indent][]: avoid a crash on non-string literals ([#2561][] @ljharb)
jsx-indent][]: avoid a crash on non-string literals (#2561 @ljharb)[jsx-indent][]: Does not check indents for JSXText ([#2542][] @toshi-toma)
jsx-indent][]: Does not check indents for JSXText (#2542 @toshi-toma)jsx-props-no-spreading][]: add support for namespaced jsx components (#2534 @jonathanpalma)jsx-no-target-blank][]: allow rel to be an expression (#2544 @odinho)sort-comp][]: | isn’t a valid regex flag; u and s are (@ljharb)[require-default-props][]: add option to ignore functional components ([#2532][] @RedTn)
require-default-props][]: add option to ignore functional components (#2532 @RedTn)function-component-definition][]: Enforce a specific function type for function components (#2414 @Stefanwullems)no-adjacent-inline-elements][]: Prevent adjacent inline elements not separated by whitespace (#1155 @SeanHayes)jsx-no-script-url][]: prevent usage of javascript: URLs (#2419 @sergei-startsev)jsx-pascal-case][]: false negative with namespacing (#1337 @mfyuce)jsx-curly-brace-presence][]: Fix curly-brace-presence edge cases (#2523 @rafbgarcia)prop-types][]: Does not validate missing propTypes for LogicalExpression (#2533 @toshi-toma)no-unknown-property][]: allowTransparency does not exist in React >= v16.1 (#1538 @dawidvdh)jsx-curly-brace-presence][]: Fix error related to tags line break (#2521 @rafbgarcia)no-typos][]: Compilation error when method name is string instead of identifier (#2514 @shijistar)jsx-curly-brace-presence][]: allow trailing spaces in TemplateLiteral (#2507 @doochik)no-unused-prop-types], [no-unused-state]: fix false positives when using TS type assertions (#2536 @kdmadej)no-render-return-value][]: Fix title (#2540 @micnic)no-typos]: check static lifecycle methods (#2006 @bsonntag)jsx-first-prop-new-line][]: Fix rule name in "Rule Options" section (#2535 @barreira)no-unused-prop-types][]: Added test cases (#977 @dozoisch)array-includes, object.entries, object.fromentries, object.values, resolve…docs/rules/no-danger-with-children.md [no-deprecated]: docs/rules/no-deprecated.md [no-did-mount-set-state]: docs/rules/no-did-mount-set-state.md [no-…
jsx-no-target-blank: add allowReferrer option (#2478 @eps1lon)jsx-handler-names: add checkLocalVariables option (#2470 @aub)prop-types: Support Flow Type spread (#2446 @moroine)jsx-props-no-spreading: add explicitSpread option to allow explicit spread of props (#2449 @pawelnvk)jsx-no-target-blank: warn on target={'_blank'} expressions (#2451 @timkraut)sort-prop-types, jsx-sort-default-props: disable broken autofix (#2505 @webOS101)no-typos: improve report location (#2468 @golopot)jsx-no-literals: trim whitespace for allowedStrings check (#2436 @cainlevy)jsx-curly-brace-presence: Fix filter of undefined error with whitespace inside jsx attr curlies (#2460 @dustinyoste)no-render-return-value: should warn when used in assignment expression ([#2462][] @jichu4n)jsx-curly-brace-presence: allow trailing spaces in literal (#2448 @doochik)jsx-ast-utils, object.fromentries, resolvejsx-first-prop-new-line: Fix documentation formatting (#2489 @pjg)prop-types: Update 'skipUndeclared' in rule options (#2504 @cjnickel)jsx-first-prop-new-line: fix wrong rule name (#2500 @zgayjjf)jsx-props-no-multi-spaces: suggest using core rule instead (#2463 @golopot)jsx-first-prop-new-line: add rule options (#2465 @SerdarMustafa1)jsx-no-target-blank: Add section about overriding for trusted links (#2438 @aschriner)no-unused-prop-types: clean up prose (#2273 @coryhouse)jsx-no-bind: add section about React Hooks (#2443 @kdex)…docs/rules/no-danger-with-children.md [no-deprecated]: docs/rules/no-deprecated.md [no-did-mount-set-state]: docs/rules/no-did-mount-set-state.md [no-…
jsx-sort-default-props: make rule fixable (#2429 @emroussel)jsx-no-useless-fragment: use array-includes over .includes for back compat (@ljharb)jsx-curly-brace-presence: allow necessary white-space literal (#2437 @uniqname)jsx-curly-brace-presence: warns incorrectly on trailing whitespace (#2431 @BC-M)no-unused-prop-types: false positive when nested destructuring (#2428 @golopot)…docs/rules/no-danger-with-children.md [no-deprecated]: docs/rules/no-deprecated.md [no-did-mount-set-state]: docs/rules/no-did-mount-set-state.md [no-…
jsx-curly-brace-presence: bail out checks when JSXElements are passed as props (#2426 @vedadeepta)prefer-es6-class: Fix typos (#2425 @spencerbyw)jsx-curly-brace-presence][]: bail out checks when JSXElements are passed as props (#2426 @vedadeepta)prefer-es6-class][]: Fix typos (#2425 @spencerbyw)[no-deprecated][]: Deprecate cWM/cWRP/cWU lifecycle methods since React 16.9.0 ([#2378][] @meowtec)
jsx-no-useless-fragment rule (#2261 @golopot)jsx-handler-name][]: allow false to disable eventHandlerPrefix/eventHandlerPropPrefix (#2410 @tanmoyopenroot)sort-comp: add static-variables grouping (#2408 @vedadeepta)jsx-no-literals: Add allowedStrings option (#2380 @benhollander)no-multi-comp: Added handling for forwardRef and memo wrapping components declared in the same file (#2184 @jenil94)jsx-pascal-case: allowAllCaps option now allows SCREAMING_SNAKE_CASE (#2364 @TylerR909)jsx-indent: Fix false positive when a jsx element is the last statement within a do expression (with tests) (#2200 @Kenneth-KT)jsx-curly-brace-presence: fix jsx tags in braces (#2422 @tanmoyopenroot)display-name: Fix false positives (#2399 @BPScott)jsx-curly-brace-presence: report unnecessary curly braces with children on next line (#2409 @vedadeepta)no-unused-prop-types: false positive with callback (#2375 @golopot)jsx-sort-props: use localeCompare rather than comparison operator (#2391 @tanmoyopenroot)jsx-pascal-case: allow one-letter-named components (#2395 @Haegin)jsx-wrap-multilines: fix incorrect formatting (#2392 @tanmoyopenroot)require-optimization: fix when using arrow function in class components (#2385 @jenil94)no-deprecated: Deprecate cWM/cWRP/cWU lifecycle methods since React 16.9.0 (#2378 @meowtec)jsx-key: improve docs and confusing error message (#2367 @kaykayehnn)prop-types: false positive with setState updator (#2359 @golopot)no-access-state-in-setstate: update grammar ([#2418][] @neaumusic)jsx-curly-brace-presence, jsx-one-expression-per-line, no-danger-with-children: add isWhiteSpaces to lib/util/jsx (#2409 @vedadeepta)Fix prop-types to ignore validation when Flow indexers are used ([#2330][] @yannickcr)
prop-types to ignore validation when Flow indexers are used (#2330 @yannickcr)memo and forwardRef are used together (#2349 @yannickcr)prop-types][] to ignore validation when Flow indexers are used (#2330 @yannickcr)memo and forwardRef are used together (#2349 @yannickcr)Fix prop-types crash on for...of destructuring ([#2326][] @yannickcr)
prop-types crash on for...of destructuring (#2326 @yannickcr)prop-types][] crash on for...of destructuring (#2326 @yannickcr)Fix prop-types crash on multiple destructuring ([#2319][] @golopot)
prop-types crash on multiple destructuring (#2319 @golopot)prop-types][] crash on multiple destructuring (#2319 @golopot)Add jsx-curly-newline rule ([#1493][] @golopot)
jsx-curly-newline rule (#1493 @golopot)prop-types (#296 #1422 @golopot)prop-types and no-unused-prop-types (#442 #833 #1002 #1116 #1257 #1764 @golopot)checkFragmentShorthand option to jsx-key (#2316 @kaykayehnn)no-did-mount-set-state and no-did-update-set-state to handle cDU and cDM defined as class properties (#1595 @jaaberg)sort-prop-types cash when a shape PropType is defined in a variable (#1749 @alexzherdev)no-unused-state false positive when using state of non-lifecycle method (#2274 @golopot)static-property-placement false positive when accessing static property inside method (#2283 @dmason30)prop-type detection for annotated props with default value (#2298 @yannickcr)no-render-return-value performance (#2259 @golopot)jsx-sort-props to report errors only on the identifier (#2312 @MrHen)Make jsx-sort-props fully fixable ([#2250][], @guliashvili)
jsx-sort-props fully fixable (#2250, @guliashvili)boolean-prop-naming: add validateNested option to validate shape prop names (#2234, @pawelnvk)static-property-placement rule (#2193, @dmason30)jsx-indent: Add indentLogicalExpressions option (#2227, @mdnsk)jsx-props-no-spreading (#2191, @ashbhir)no-string-refs: Added noTemplateLiteral option (#2167, @jenil94)linkComponents setting (#2116, @gbakernet)jsx-no-target-blank: add support for linkComponents setting (#2116, @gbakernet)state-in-constructor rule (#1945, @lukyth)prefer-read-only-props rule (#2110, @golopot)no-unescaped-entities: more friendly error message; add config to adjust (#2016, @stevemao)jsx-props-no-multi-spaces: support generic components (ts) (#2256, @mateuszsokola)prop-types: fix case with destructuring and default param (#2246, @golopot)prefer-stateless-function: Ignoring pure components without props and context usage (#2238, @pawelnvk)propTypes: resolveSuperParameterPropsType: add null check (#2232, @jedwards1211)self-closing-comp: stop reporting single-line spaces (#2210, @golopot)require-render-return: more accurate report location (#2229, @golopot)sort-prop-types: Fix sorting props with numeric keys (#2230, @pawelnvk)display-name: fix false negative around nested functions (#2225, @dwelle)no-unknown-property: fix case like <Foo.bar> (#2207, @golopot)jsx-curly-brace-presence: accept multiline template string (#2203, @golopot)jsx-one-expression-per-line: fix when using tabs (#2198, @Ohar)prop-types: Fix false positive on computed member expression (#2202, @golopot)jsx-sort-default-props: fix case with spread (#2182, @VincentLanglet)no-this-in-sfc: Fix false positive on SFC defined as object property (#2147, @yannickcr)sort-comp: correctly recognize instance variables declared without explicit value (#2183, @yannickcr)no-unused-state: fix set state callback destructing & state use inside callback ([#2151][], @barakyosi)no-multi-comp: correctly ignore wrapped stateless components: (#2145, @yannickcr)display-name: avoid crash on for..of (#2137, @ljharb)no-access-state-in-setstate: Use syntax highlighting for examples ([#2160][], @pReya)jsx-fragments: add "fixable" note (#2143, @joshunger)jsx-curly-spacing: add regression test case (#2206, @ColCh)…docs/rules/no-danger-with-children.md [no-deprecated]: docs/rules/no-deprecated.md [no-did-mount-set-state]: docs/rules/no-did-mount-set-state.md [no-…
no-unused-prop-types: avoid a crash (#2131, @ljharb)prop-types: avoid further crashes from nonexistent nodes in unusedPropTypes (#2127, @ljharb)prop-types: Read name of callee object (#2125, @CrOrc)prop-types: Ignore reassignments when matching props declarations with components (#2051, #1957, @yannickcr)prop-types, no-unused-prop-types, require-default-props: Detect components with return statement in switch/case (#2118, @yannickcr)…docs/rules/no-danger-with-children.md [no-deprecated]: docs/rules/no-deprecated.md [no-did-mount-set-state]: docs/rules/no-did-mount-set-state.md [no-…
jsx-indent: Prevent crash on valueless props (#2120, @jomasti)jsx-fragments: avoid crashing on self-closing fragments (#2113, @alexzherdev)no-unused-prop-types: Fix propType detection inside class bodies (#2115, @drx)no-unused-prop-types: fix issue with propTypes misclassifying props (#2111, @drx)display-name: fix false positive for React.memo (#2109, @jomasti)…docs/rules/no-danger-with-children.md [no-deprecated]: docs/rules/no-deprecated.md [no-did-mount-set-state]: docs/rules/no-did-mount-set-state.md [no-…
prop-types: avoid crash on used prevProps (#2095, @ljharb)forbid-prop-types: fix crash with propWrapper check on MemberExpressions (#2104, @ljharb)…docs/rules/no-danger-with-children.md [no-deprecated]: docs/rules/no-deprecated.md [no-did-mount-set-state]: docs/rules/no-did-mount-set-state.md [no-…
no-unused-state: Fix crash with class fields (#2098, @jomasti)prop-types: Fix false positives inside lifecycle methods (#2099, @jomasti)jsx-max-depth: avoid a crash (#2102, @ljharb)jsx-wrap-multilines: avoid crash when no trailing newline (#2100, @ljharb)no-unused-state][]: Fix crash with class fields (#2098, @jomasti)prop-types][]: Fix false positives inside lifecycle methods (#2099, @jomasti)jsx-max-depth][]: avoid a crash (#2102, @ljharb)jsx-wrap-multilines][]: avoid crash when no trailing newline (#2100, @ljharb)[no-deprecated][]: Disable legacy lifecycle methods linting for now ([#2069][], @sergei-startsev)
no-typos: Support createClass (#1828, @alexzherdev)jsx-indent: add checkAttributes option for JSX attribute indentation (#2086, @jomasti)propWrapperFunctions setting values (#2065, @jomasti)jsx-fragments rule to enforce fragment syntax (#1994, @alexzherdev)jsx-no-literals: print node value in warning message (#2008, @jlgonzalezdev)jsx-max-depth: Fix depth of JSX siblings in a JSXEpressionContainer (#1824, @alexzherdev)no-array-index-key: fix in React.Children methods (#2085, @himynameisdave)no-unused-state: handle functional setState (#2084, @jomasti)no-deprecated: Disable legacy lifecycle methods linting for now (#2069, @sergei-startsev)forbid-foreign-prop-types: ensure allowInPropTypes option applies to class fields (#2040, @Sheile)jsx-wrap-multilines: catch single missing newlines (#1984, @MrHen)jsx-first-prop-new-line: Fix for parsers (like TypeScript) (#2026, @HauptmannEck)sort-comp: Fix fixer in case of more than 10 props (#2012, @tihonove)no-unused-state Don't depend on state parameter name ([#1829][], @alexzherdev)no-this-in-sfc fix for class properties (#1995, @sergei-startsev)no-this-in-sfc fix rule behavior for arrow functions inside a class field (#1989, @sergei-startsev)destructuring-assignment: handle nested props usage (#1983, @alexzherdev)sort-prop-types: fix string property order (#1977, @metreniuk)jsx-no-target-blank: don’t crash when there’s no value (#1949, @ljharb)prop-types, no-unused-prop-types: better handle object spread (#1939, @alexzherdev)jsx-fragments: improve message text (#2032, @alexzherdev)no-unsafe: handle all unsafe life-cycle methods (#2075, @sergei-startsev)require-default-props: Change error message naming from singular defaultProp to plural defaultProps (#2064, @jseminck)propTypes detection (#1946, @alexzherdev)defaultProps detection (#1942, @alexzherdev)propTypes detection (#2001, @alexzherdev)no-did-mount-set-state, no-did-update-set-state, no-will-update-set-state: fix docs URLs (#2090, @JBallin)jsx-sort-props: Fix small mistake (#2044, @dimitarnestorov)no-unescaped-entities: add more escape examples (#2015, @stevemao)display-name: mention default ignoreTranspilerName value (#2002, @OliverJAsh)jsx-no-target-blank: Add full example (#1988, @atomcorp)jsx-no-target-blank.md (#1953, @brunocoelho)require('babel-eslint') from tests (#2004, @sergei-startsev)prop-types: Add tests for prop-types destructuring (#2029, @sstern6)display-name: add false positive component detection for destructured createElement (#1098, @arian)stop crashing when assigning to propTypes ([#1932][], @alexzherdev)
[no-deprecated][]: report identifier AST node instead of the class node ([#1854][], @jsnajdr)
jsx-one-expression-per-line: add "allow" option (#1924, @alexzherdev)sort-prop-types: add autofix (#1891, @finnp)jsx-no-bind: Add ignoreDOMComponents option (#1868, @alexzherdev)destructuring-assignment: Ignore class properties (#1909, @alexzherdev)destructuring-assignment, component detection: ignore components with confidence = 0 (#1907, @alexzherdev)boolean-prop-naming: Handle inline Flow type (#1905, @alexzherdev)jsx-props-no-multi-spaces: Handle member expressions (#1890, @alexzherdev)sort-comp: Allow methods to belong to any matching group (#1858, @nosilleg)jsx-sort-props: Fix reservedFirst (#1883, @fleischie)prop-types: (flow) Stop crashing on undefined or null properties (#1860, @nicholas-l)no-unknown-property: Make attribute "charset" valid (#1863, @silvenon)no-deprecated: report identifier AST node instead of the class node (#1854, @jsnajdr)button-has-type: Account for pragma (#1851, @alexzherdev)button-has-type: improve error message when an identifier is used as the value (#1874, @ljharb)no-unused-state: combine spread visitors (@ljharb)jsx-one-expression-per-line: Fix JSX Syntax in docs (#1867, @peter-mouland)jsx-max-depth, jsx-sort-default-props: add missing docs urls (#1880, @flyerhzm)jsx-indent: add test cases (#1892, @alexzherdev)prop-types: add test cases (#1898, @alexzherdev)jsx-props-no-multi-spaces: update docs (#1918, @ BenRichter)Allow eslint ^5 ([#1843][] @papandreou, @ljharb)
no-unsafe rule (#1831, #1830 @sergei-startsev)no-will-update-set-state: Account for UNSAFE_ methods (#1845, #1844 @alexzherdev)no-typos: Fix static propTypes handling (#1827, #1677 @alexzherdev)destructuring-assignment: Allow LHS (#1825, #1728 @alexzherdev)no-unused-prop-types: Fix crash when encountering mixed union and intersection flow types (#1806 @yannickcr)jsx-no-target-blank (#1805 @ferhatelmas))Nothing was fixed; this is a republish with some updated deps. (#1804 @ljharb)
Nothing was fixed; this is a republish with some updated deps. (#1804 @ljharb)
Add jsx-props-no-multi-spaces rule ([#1755][] @ThiefMaster)
jsx-props-no-multi-spaces rule (#1755 @ThiefMaster)first option to jsx-indent-props (#398 @ThiefMaster)enforceDynamicLinks option to jsx-no-target-blank (#1737 @kenearley)sort-comp (#1793 @lynxtaa)no-typos when encountering anonymous react imports (#1796 @jsg2021)Fix crash in boolean-prop-naming when encountering a required shape prop type ([#1791][] @pcorpet)
boolean-prop-naming when encountering a required shape prop type (#1791 @pcorpet)boolean-prop-naming][] when encountering a required shape prop type (#1791 @pcorpet)Fix crash in no-deprecated when encountering a class constructor ([#1785][] @taddei)
no-deprecated when encountering a class constructor (#1785 @taddei)no-deprecated][] when encountering a class constructor (#1785 @taddei)Add warnings for componentWillMount, componentWillReceiveProps and componentWillUpdate lifecycle methods in no-deprecated ([#1750][] @sergei-startsev)
react-in-jsx-scope (#1758)require-default-props (#1724 @Miziak)forbid-component-props (#1732 @ThiefMaster)no-unused-prop-types (#1681 @bvaughn)sort-comp (#1767 @joe-denea)no-typosprevState and nextState to no-unused-state (#1759)componentWillMount, componentWillReceiveProps and componentWillUpdate lifecycle methods in no-deprecated (#1750 @sergei-startsev)no-typos false positive on custom PropType classes (#1389 @brettdh)boolean-prop-naming to handle required props (#1389 @louisscruz)jsx-curly-brace-presence to allow whitespace JSX container (#1717 @sharmilajesupaul)jsx-no-bind to handle ternary conditions (#1722 @gwenaellarmet)Add warnings for componentWillMount, componentWillReceiveProps and componentWillUpdate lifecycle methods in no-deprecated ([#1750][] @sergei-startsev)
react-in-jsx-scope (#1758)require-default-props (#1724 @Miziak)forbid-component-props (#1732 @ThiefMaster)no-unused-prop-types (#1681 @bvaughn)sort-comp (#1767 @joe-denea)no-typosprevState and nextState to no-unused-state (#1759)componentWillMount, componentWillReceiveProps and componentWillUpdate lifecycle methods in no-deprecated (#1750 @sergei-startsev)no-typos false positive on custom PropType classes (#1389 @brettdh)boolean-prop-naming to handle required props (#1389 @louisscruz)jsx-curly-brace-presence to allow whitespace JSX container (#1717 @sharmilajesupaul)jsx-no-bind to handle ternary conditions (#1722 @gwenaellarmet)[forbid-foreign-prop-types][]: add allowInPropTypes option (#1655 @iansu)
forbid-foreign-prop-types: add allowInPropTypes option (#1655 @iansu)jsx-max-depth rule (#1260 @chriswong)no-access-state-in-setstate: Exclude references to this.state in setState callback (#1610 @pfhayes)no-danger-with-children: prevent infinite loop (#1571 @ljharb)sort-prop-types: Fix sortShapeProp when shape is not an object literal (#1669 @justinanastos)jsx-child-element-spacing: fix error location (#1666 @pfhayes)no-unused-prop-types: fix for createClass (#1675 @yuri-sakharov)prop-types: include nextProps checking in shouldComponentUpdate (#1690 @amerryma)jsx-curly-spacing: refactor to fix start and end-braces in a single pass (#1414 @s-h-a-d-o-w)jsx-child-element-spacing: add missing docs (#1665 @pfhayes); fix docs (#1670 @SammyM)forbid-foreign-prop-types][]: add allowInPropTypes option (#1655 @iansu)jsx-max-depth][] rule (#1260 @chriswong)no-access-state-in-setstate][]: Exclude references to this.state in setState callback (#1610 @pfhayes)no-danger-with-children][]: prevent infinite loop (#1571 @ljharb)sort-prop-types][]: Fix sortShapeProp when shape is not an object literal (#1669 @justinanastos)jsx-child-element-spacing][]: fix error location (#1666 @pfhayes)no-unused-prop-types][]: fix for createClass (#1675 @yuri-sakharov)prop-types][]: include nextProps checking in shouldComponentUpdate (#1690 @amerryma)jsx-curly-spacing][]: refactor to fix start and end-braces in a single pass (#1414 @s-h-a-d-o-w)Flow: fix crash in [prop-types][] with recursive type annotations ([#1653][] @jetpacmonkey)
prop-types with recursive type annotations (#1653 @jetpacmonkey)no-unknown-property to properly recognize crossOrigin instead of crossorigin, and allow it on link tags. (#1659 @jzDev)no-access-state-in-setstate to handle object spread (#1657 @ljharb)Add warning for React.addons.TestUtils in no-deprecated ([#1644][] @nirnaor)
forbid-dom-props rule (#1562 @davazp)jsx-child-element-spacing rule (#1515 @pfhayes)no-this-in-sfc rule (#1435 @jomasti)jsx-sort-default-props rule (#281 @b0gok)message option to boolean-prop-naming (#1588 @louisscruz)beforeClosing option to jsx-tag-spacing (#1396 @cjskillingstad)instance-methods and instance-variables to sort-comp (#599 @RDGthree)propWrapperFunctions support for boolean-prop-naming (#1478 @jomasti)React.addons.TestUtils in no-deprecated (#1644 @nirnaor)no-access-state-in-setstate (#1559 @jomasti, #1611 @pfhayes)require-optimization when encountering arrays with empty items as values in object (#1621 @kamataryo)no-unused-prop-types when passing an empty function as a PropType (#1542 #1581 @kevinzwhuang)no-typos when using PropType.shape without arguments (#1471 @mrichmond)jsx-tag-spacing (#1650 @flyerhzm)no-unused-state to detect usage of this.state as an object (#1572)no-access-state-in-setstate to detect when the state variable is destructured from this.state (#1597 @jaaberg)jsx-no-literals to correctly find string literals part of BinaryExpressions (#1511 @jaaberg)no-typos false positive on custom propTypes with isRequired (#1607 @lfades)prop-types to check for nextProps in componentWillReceiveProps (#1636 @xjmdoo)no-unknown-property to not pascal-casing crossorigin attribute and only allow it on script/img/video (#1642 @ljharb)Fix jsx-no-bind crash ([#1543][] @jomasti)
Add warnings for React.DOM factories in no-deprecated ([#1530][] @backjo)
jsx-one-expression-per-line rule (#1497 @TSMMark)destructuring-assignment rule (#1462 @DianaSuvorova)no-access-state-in-setstate rule (#1374 @jaaberg)button-has-type rule (#1525 @Hypnosphi)React.DOM factories in no-deprecated (#1530 @backjo)sortShapeProp option to sort-prop-types (#1476 @jomasti)parens-new-line option to jsx-wrap-multilines (#1475 @jomasti)checkContextTypes and checkChildContextTypes options to forbid-prop-types (#1533 @jomasti)forbidDefaultForRequired option to require-default-props (#1524 @jomasti)jsx-wrap-multilines (#1384 @evgeny-petukhov)jsx-curly-brace-presence auto fix by bailing out when some chars exist (#1479 #1449 @jackyho112)boolean-prop-naming crash with Object spread (#1485 @track0x1)no-unused-state to correctly handle arrow function class method (#1363 @jackyho112)typescript-eslint-parser (#1496 @timothykang)jsx-no-bind to only warn for props and account for variable declaration (#1444 #1395 #1417 @jackyho112)no-props-unused-props to handle props usage in custom prop validators (#1518 @petersendidit)prefer-stateless-function to account for contextTypes and defaultProps (#1521 @jomasti)jsx-no-comment-textnodes to not warn when using two slashes via html entities at the beginning of a literal (#1517 @jomasti)default-props-match-prop-types crash (#1499 @jomasti)no-unused-prop-types to handle props used in the setState update callback (#1507 @petersendidit)jsx-indent (#1246 @jseminck)Add Flow 0.53 support ([#1376][] @jseminck)
jsx-curly-brace-presence rule (#1310 @jackyho112)prop-types and no-unused-prop-types (#1364 #1323 @jseminck)no-unused-prop-types (#1412 @jseminck)prop-types (#1400 @jseminck)no-unused-prop-types (#1388 @jseminck)prop-types and no-unused-prop-types (#1381 @DianaSuvorova)no-direct-mutation-state (#1386 @zpao)no-unused-state to ignore computed property keys (#1361 @jackyho112)no-typos crash (#1406 @jseminck)boolean-prop-naming crash (#1409 @EvHaus)prop-types and no-unused-prop-types crash with IntersectionTypeAnnotation (#1413 @jseminck)Add support for increment and decrement operations to no-direct-mutation-state ([#1386][] @zpao)
Add Flow 0.53 support ([#1376][] @jseminck)
jsx-curly-brace-presence rule (#1310 @jackyho112)prop-types and no-unused-prop-types (#1364 #1323 @jseminck)no-unsed-prop-types (#1412 @jseminck)prop-types (#1400 @jseminck)no-unused-prop-types (#1388 @jseminck)prop-types and no-unused-prop-types (#1381 @DianaSuvorova)no-unused-state to ignore computed property keys (#1361 @jackyho112)no-typos crash (#1406 @jseminck)boolean-prop-naming crash (#1409 @EvHaus)Add checks for propTypes, contextTypes and childContextTypes to no-typos ([#213][] @DianaSuvorova)
propTypes, contextTypes and childContextTypes to no-typos (#213 @DianaSuvorova)boolean-prop-naming crash (#1369 @EvHaus)no-typos crash (#1353 @jseminck)require-default-props stopping when it finds a component without props (#1380 @brgibson)no-direct-mutation-state detection with nested components (#1382)Fix forbid-prop-types crash on identifiers ([#1352][] @ljharb)
forbid-prop-types crash on identifiers (#1352 @ljharb)boolean-prop-naming crash with propTypes wrapper (#1354 @dustinsoftware)prop-types false positive with local variable props (#1288 @DianaSuvorova)forbid-prop-types][] crash on identifiers (#1352 @ljharb)boolean-prop-naming][] crash with propTypes wrapper (#1354 @dustinsoftware)prop-types][] false positive with local variable props (#1288 @DianaSuvorova)Add no-unused-state rule ([#1103][] @wbinnssmith)
no-unused-state rule (#1103 @wbinnssmith)boolean-prop-naming rule (#1264 @EvHaus)no-typos rule (#1189 @jseminck, #1294 @haridusenadeera)sort-props (#1273 @Overload119)getters and setters groups to sort-comp (#100 @RDGthree)noStrings option to no-literals (#1202 @deecewan)always/never to jsx-boolean-value (#1249 @ljharb)no-direct-mutation-state to disallow this.state mutation in constructor (#832 @burabure)jsx-no-target-blank crash on empty rel attribute (#1269 @dustinsoftware)sort-comp component detection with ClassExpression (#1076 @webOS101)no-unused-prop-types detection with async class properties and methods (#1053 @benstepp)void-dom-elements-no-children crash (#1226 @kokobeware)no-danger-with-children to ignore line breaks (#1262)no-danger-with-children crash with undefined (#1287)jsx-no-target-blank crash (#1296 @jseminck)no-unused-props to no longer ignore components with no used props (#1303 @DianaSuvorova)jsx-no-duplicate-props crash (#969 @marcelmokos)no-literals false positives (#1301 @davidyorr)no-find-dom-node detection with named imports (#785 @Hypnosphi)no-unused-prop-types detection with propTypes wrapped in a function (#1253 @dustinsoftware)no-unused-prop-types detection with destructured use of properties (#816 @DianaSuvorova)no-unused-prop-types detection with inline functions (#1309 @DianaSuvorova)no-unused-prop-types skipShapeProps option with Flow annotations (#1335 @DianaSuvorova)jsx-curly-spacing schema incompatibility with ESLint 4.2.0 (#1290 @jseminck)Add default-props-match-prop-types rule ([#1022][] @webOS101)
default-props-match-prop-types rule (#1022 @webOS101)no-redundant-should-component-update rule (#985 @jomasti)jsx-closing-tag-location rule (#1206 @rsolomon)jsx-max-props-per-line (#949 @snowypowers)nextProps/prevProps in no-unused-prop-types (#1213 @jseminck)prop-types (#1236 @gpeal)children option to jsx-curly-spacing (#857 @fatfisz)prefer-stateless-function ignorePureComponents option when using class expressions (#1122 @dreid)void-dom-elements-no-children crash (#1195 @oliviertassinari)require-default-props quoted defaultProps detection (#1201)jsx-sort-props bug with ignoreCase and callbacksLast options set to true (#1175 @jseminck)no-unused-proptype false positive (#1183 #1135 @jseminck)jsx-no-target-blank to not issue errors for non-external URLs (#1216 @gfx)prop-types quoted Flow types detection (#1132 @ethanjgoldberg)no-array-index-key crash with key without value (#1242 @jseminck)Fix jsx-curly-spacing allowMultiline option being undefined in some cases ([#1179][] @fatfisz)
jsx-curly-spacing allowMultiline option being undefined in some cases (#1179 @fatfisz)jsx-curly-spacing newline with object literals bug (#1180 @fatfisz)prop-types to not mark class static function as valid propTypes definition (#1174)prop-types crash with Flow spread operator (#1178)void-dom-elements-no-children crash on faulty createElement detection (#1101)require-default-props error message for quoted props (#1161)Add import and destructuring support to no-deprecated
no-will-update-set-state rule (#1139 @ManThursday)no-deprecatedreservedFirst option to jsx-sort-props (#1134 @MatthewHerbst)React.PropTypes and React.createClass in no-deprecated (#1148 @Calyhre)createClass component factory to createReactClass. This is used for React component detection, if you still using React.createClass use the shared settings to specify createClass as component factoryno-danger-with-children rule to recommended rules (#748 @ljharb)no-string-refs rule to recommended rules (#749 @ljharb)jsx-key rule to recommended rules (#750 @ljharb)jsx-no-comment-textnodes rule to recommended rules (#751 @ljharb)jsx-no-target-blank rule to recommended rules (#752 @ljharb)no-unescaped-entities rule to recommended rules (#841 @ljharb)no-children-prop rule to recommended rules (#842 @ljharb)wrap-multilines rule, use jsx-wrap-multilines insteadno-comment-textnodes rule, use jsx-no-comment-textnodes insteadrequire-extension rule, use the eslint-plugin-import extensions rule insteadjsx-space-before-closing rule, use the jsx-tag-spacing rule instead. jsx-space-before-closing still works but will trigger a warning (#1070 @afairb)jsx-first-prop-new-line default is now multiline-multiprop (#802 @kokarn)jsx-wrap-multilines now checks arrow functions without block body. It can be deactivated in rule options (#790 @ColCh)jsx-no-undef will not check the global scope by default. You can force it with the allowGlobals option (#1013 @jomasti)no-unused-prop-types false positive with nextProps (#1079 @Kerumen)prefer-stateless-function to not warn on classes with decorators (#1034 @benstepp)Remove deprecated wrap-multilines rule, use jsx-wrap-multilines instead
reservedFirst option to jsx-sort-props (#1134 @MatthewHerbst)no-danger-with-children rule to recommended rules (#748 @ljharb)no-string-refs rule to recommended rules (#749 @ljharb)jsx-key rule to recommended rules (#750 @ljharb)jsx-no-comment-textnodes rule to recommended rules (#751 @ljharb)jsx-no-target-blank rule to recommended rules (#752 @ljharb)no-unescaped-entities rule to recommended rules (#841 @ljharb)no-children-prop rule to recommended rules (#842 @ljharb)wrap-multilines rule, use jsx-wrap-multilines insteadno-comment-textnodes rule, use jsx-no-comment-textnodes insteadrequire-extension rule, use the eslint-plugin-import extensions rule insteadjsx-space-before-closing rule, use the jsx-tag-spacing rule instead. jsx-space-before-closing still works but will trigger a warning (#1070 @afairb)jsx-first-prop-new-line default is now multiline-multiprop (#802 @kokarn)jsx-wrap-multilines now checks arrow functions without block body. It can be deactivated in rule options (#790 @ColCh)jsx-no-undef will not check the global scope by default. You can force it with the allowGlobals option (#1013 @jomasti)Add import and destructuring support to no-deprecated
no-will-update-set-state rule (#1139 @ManThursday)no-deprecatedReact.PropTypes and React.createClass in no-deprecated (#1148 @Calyhre)createClass component factory to createReactClass. This is used for React component detection, if you still using React.createClass use the shared settings to specify createClass as component factoryno-unused-prop-types false positive with nextProps (#1079 @Kerumen)prefer-stateless-function to not warn on classes with decorators (#1034 @benstepp)Revert [#1057][] due to issues with jsx-indent ([#1117][])
Fix jsx-indent indentation calculation with nested JSX ([#1117][])
jsx-indent indentation calculation with nested JSX (#1117)jsx-indent][] indentation calculation with nested JSX (#1117)Fix jsx-indent auto fix with tabs ([#1057][] @kentcdodds @webOS101)
jsx-indent auto fix with tabs (#1057 @kentcdodds @webOS101)jsx-indent crash (#1061 @iancmyers)void-dom-elements-no-children crash and fix it to only checks for a createElement call from
React (#1073 @jomasti)no-multi-comp (#1088 @benstepp)Add forbid-foreign-prop-types rule (#696 @iancmyers)
forbid-foreign-prop-types rule (#696 @iancmyers)void-dom-elements-no-children rule (#709 @lencioni)forbid-elements rule (#887 @kentor)noSortAlphabetically option to jsx-sort-props (#541 #786 @markus101)when option to jsx-max-props-per-line (#878 @kentor)nextProps to prop-types (#814)require-default-props crash (#1029)require-default-props rule when using Flow type from assignment (#1043 @wyze @CarlRosell)style-prop-object to not warn with explicit null or undefined (#812 @ljharb)no-unused-prop-types props detection in stateless components (#885 @BarryThePenguin)display-name false positive with document.createElement (#996 @jomasti)forbid-foreign-prop-types][] rule (#696 @iancmyers)void-dom-elements-no-children][] rule (#709 @lencioni)forbid-elements][] rule (#887 @kentor)noSortAlphabetically option to [jsx-sort-props][] (#541 #786 @markus101)when option to [jsx-max-props-per-line][] (#878 @kentor)nextProps to [prop-types][] (#814)require-default-props][] crash (#1029)require-default-props][] rule when using Flow type from assignment (#1043 @wyze @CarlRosell)style-prop-object][] to not warn with explicit null or undefined (#812 @ljharb)no-unused-prop-types][] props detection in stateless components (#885 @BarryThePenguin)display-name] false positive with document.createElement (#996 @jomasti)Add support for variable reference to sort-prop-types
sort-prop-types][] (#622)prop-types][] to correctly assign props to components (#991)Add no-array-index-key rule (#978 @lencioni)
no-array-index-key rule (#978 @lencioni)require-default-props rule (#528 @vitorbal)prop-types (#961 @ajhyndman)jsx-indent with multiline jsx in ternaries (#966)jsx-curly-spacing autofix to not delete comments (#648)eslint-plugin-react in exported configurations (#984 @jamischarles)no-array-index-key][] rule (#978 @lencioni)require-default-props][] rule (#528 @vitorbal)prop-types][] (#961 @ajhyndman)jsx-indent][] with multiline jsx in ternaries (#966)jsx-curly-spacing][] autofix to not delete comments (#648)eslint-plugin-react in exported configurations (#984 @jamischarles)Fix jsx-tag-spacing crash when options object isn't passed (#955 @daltones)
jsx-tag-spacing crash when options object isn't passed (#955 @daltones)jsx-tag-spacing][] crash when options object isn't passed (#955 @daltones)Your coding agent can read these notes before it upgrades. Set up the MCP server →