Skip to content

Rules ​

The progress of all rule implementations is tracked here.

  • Total number of rules: 338
  • Rules turned on by default: 90

Correctness (158): ​

Rule nameSourceDefault
bad-array-method-on-argumentsdeepscan✅
bad-char-at-comparisondeepscan✅
bad-comparison-sequencedeepscan✅
bad-object-literal-comparisondeepscan✅
bad-min-max-funcdeepscan✅
bad-replace-all-argdeepscan✅
missing-throwdeepscan✅
number-arg-out-of-rangedeepscan✅
uninvoked-array-callbackdeepscan✅
for-directionESLint✅
no-this-before-superESLint✅
no-async-promise-executorESLint✅
no-callerESLint✅
no-class-assignESLint✅
no-compare-neg-zeroESLint✅
no-cond-assignESLint✅
no-const-assignESLint✅
no-constant-binary-expressionESLint✅
no-constant-conditionESLint✅
no-control-regexESLint✅
no-debuggerESLint✅
no-delete-varESLint✅
no-dupe-class-membersESLint✅
no-dupe-else-ifESLint✅
no-dupe-keysESLint✅
no-duplicate-caseESLint✅
no-empty-character-classESLint✅
no-empty-patternESLint✅
no-empty-static-blockESLint✅
no-ex-assignESLint✅
no-extra-boolean-castESLint✅
no-func-assignESLint✅
no-global-assignESLint✅
no-irregular-whitespaceESLint✅
no-loss-of-precisionESLint✅
no-nonoctal-decimal-escapeESLint✅
no-obj-callsESLint✅
no-self-assignESLint✅
no-setter-returnESLint✅
no-shadow-restricted-namesESLint✅
no-sparse-arraysESLint✅
no-unsafe-finallyESLint✅
no-unsafe-negationESLint✅
no-unused-labelsESLint✅
no-unused-private-class-membersESLint✅
no-useless-catchESLint✅
no-useless-escapeESLint✅
no-useless-renameESLint✅
no-withESLint✅
require-yieldESLint✅
use-isnanESLint✅
valid-typeofESLint✅
no-new-native-nonconstructorESLint✅
no-extra-non-null-assertionTypeScript✅
no-misused-newTypeScript✅
no-namespaceTypeScript✅
no-non-null-asserted-optional-chainTypeScript✅
no-this-aliasTypeScript✅
no-unsafe-declaration-mergingTypeScript✅
prefer-as-constTypeScript✅
triple-slash-referenceTypeScript✅
expect-expectjest
no-conditional-expectjest
no-disabled-testsjest
no-exportjest
no-focused-testsjest
no-standalone-expectjest
require-to-throw-messagejest
valid-describe-callbackjest
valid-expectjest
valid-titlejest
no-await-in-promise-methodsunicorn✅
no-document-cookieunicorn✅
no-empty-fileunicorn✅
no-invalid-remove-event-listenerunicorn✅
no-new-arrayunicorn✅
no-single-promise-in-promise-methodsunicorn✅
no-thenableunicorn✅
no-unnecessary-awaitunicorn✅
no-useless-fallback-in-spreadunicorn✅
no-useless-length-checkunicorn✅
no-useless-spreadunicorn✅
prefer-set-sizeunicorn✅
prefer-string-starts-ends-withunicorn✅
jsx-no-target-blankreact✅
jsx-keyreact✅
jsx-no-duplicate-propsreact✅
jsx-no-undefreact✅
no-children-propreact✅
no-direct-mutation-statereact✅
no-find-dom-nodereact✅
no-render-return-valuereact✅
no-string-refsreact✅
no-is-mountedreact✅
require-render-returnreact✅
void-dom-elements-no-childrenreact✅
defaultimport
namedimport
namespaceimport
alt-textjsx_a11y
anchor-has-contentjsx_a11y
anchor-is-validjsx_a11y
aria-activedescendant-has-tabindexjsx_a11y
aria-propsjsx_a11y
aria-unsupported-elementsjsx_a11y
click-events-have-key-eventsjsx_a11y
heading-has-contentjsx_a11y
HTML-has-langjsx_a11y
langjsx_a11y
iframe-has-titlejsx_a11y
img-redundant-altjsx_a11y
media-has-captionjsx_a11y
mouse-events-have-key-eventsjsx_a11y
no-access-keyjsx_a11y
no-aria-hidden-on-focusablejsx_a11y
no-autofocusjsx_a11y
no-redundant-rolesjsx_a11y
prefer-tag-over-rolejsx_a11y
role-has-required-aria-propsjsx_a11y
scopejsx_a11y
tabindex-no-positivejsx_a11y
aria-rolejsx_a11y
no-distracting-elementsjsx_a11y
role-supports-aria-propsjsx_a11y
autocomplete-validjsx_a11y
const-comparisonsoxc✅
double-comparisonsoxc✅
erasing-opoxc✅
only-used-in-recursionoxc✅
google-font-displaynextjs
google-font-preconnectnextjs
inline-script-idnextjs
next-script-for-ganextjs
no-assign-module-variablenextjs
no-async-client-componentnextjs
no-CSS-tagsnextjs
no-head-elementnextjs
no-head-import-in-documentnextjs
no-duplicate-headnextjs
no-img-elementnextjs
no-script-component-in-headnextjs
no-sync-scriptsnextjs
no-title-in-document-headnextjs
no-typosnextjs
no-document-import-in-pagenextjs
no-unwanted-polyfillionextjs
no-before-interactive-script-outside-documentnextjs
no-page-custom-fontnextjs
no-styled-jsx-in-documentnextjs
check-property-namesJSDoc
check-tag-namesJSDoc
implements-on-classesJSDoc
no-defaultsJSDoc
require-propertyJSDoc
require-property-typeJSDoc
require-property-nameJSDoc
require-property-descriptionJSDoc
require-yieldsJSDoc

Restriction (35): ​

Rule nameSourceDefault
bad-bitwise-operatordeepscan
no-bitwiseESLint
no-consoleESLint
no-emptyESLint
no-empty-functionESLint
no-evalESLint
no-eq-nullESLint
no-iteratorESLint
no-protoESLint
no-regex-spacesESLint
no-unsafe-optional-chainingESLint
no-varESLint
no-voidESLint
unicode-bomESLint
no-explicit-anyTypeScript
no-var-requiresTypeScript
prefer-literal-enum-memberTypeScript
no-abusive-eslint-disableunicorn
no-anonymous-default-exportunicorn
no-array-for-eachunicorn
no-array-reduceunicorn
no-nested-ternaryunicorn
no-process-exitunicorn
prefer-node-protocolunicorn
prefer-modern-math-apisunicorn
prefer-number-propertiesunicorn
button-has-typereact
no-dangerreact
no-unknown-propertyreact
no-amdimport
no-cycleimport
no-default-exportimport
no-barrel-fileoxc
check-accessJSDoc
empty-tagsJSDoc

Pedantic (53): ​

Rule nameSourceDefault
array-callback-returnESLint
eqeqeqESLint
max-classes-per-fileESLint
max-linesESLint
no-array-constructorESLint
no-case-declarationsESLint
no-inner-declarationsESLint
no-new-wrappersESLint
no-prototype-builtinsESLint
no-redeclareESLint
no-self-compareESLint
radixESLint
ban-ts-commentTypeScript
prefer-enum-initializersTypeScript
ban-typesTypeScript
no-duplicate-enum-valuesTypeScript
prefer-ts-expect-errorTypeScript
escape-caseunicorn
explicit-length-checkunicorn
new-for-builtinsunicorn
no-hex-escapeunicorn
no-instanceof-arrayunicorn
no-lonely-ifunicorn
no-negated-conditionunicorn
no-new-bufferunicorn
no-object-as-default-parameterunicorn
no-static-only-classunicorn
no-this-assignmentunicorn
no-typeof-undefinedunicorn
no-unreadable-iifeunicorn
no-useless-promise-resolve-rejectunicorn
no-useless-switch-caseunicorn
prefer-array-flatunicorn
prefer-array-someunicorn
prefer-blob-reading-methodsunicorn
prefer-code-pointunicorn
prefer-date-nowunicorn
prefer-dom-node-appendunicorn
prefer-dom-node-datasetunicorn
prefer-dom-node-removeunicorn
prefer-event-targetunicorn
prefer-math-truncunicorn
prefer-native-coercion-functionsunicorn
prefer-prototype-methodsunicorn
prefer-query-selectorunicorn
prefer-regexp-testunicorn
prefer-string-replace-allunicorn
prefer-string-sliceunicorn
prefer-type-errorunicorn
require-number-to-fixed-digits-argumentunicorn
checked-requires-onchange-or-readonlyreact
jsx-no-useless-fragmentreact
no-unescaped-entitiesreact

Style (67): ​

Rule nameSourceDefault
default-case-lastESLint
default-param-lastESLint
guard-for-inESLint
max-paramsESLint
no-ternaryESLint
no-template-curly-in-stringESLint
no-continueESLint
no-script-urlESLint
adjacent-overload-signaturesTypeScript
array-typeTypeScript
ban-tslint-commentTypeScript
consistent-type-definitionsTypeScript
no-empty-interfaceTypeScript
prefer-for-ofTypeScript
prefer-function-typeTypeScript
max-expectsjest
no-alias-methodsjest
no-confusing-set-timeoutjest
no-deprecated-functionsjest
no-done-callbackjest
no-hooksjest
no-identical-titlejest
no-interpolation-in-snapshotsjest
no-jasmine-globalsjest
no-mocks-importjest
no-restricted-jest-methodsjest
no-restricted-matchersjest
no-test-prefixesjest
no-test-return-statementjest
no-untyped-mock-factoryjest
prefer-called-withjest
prefer-comparison-matcherjest
prefer-equality-matcherjest
prefer-expect-resolvesjest
prefer-lowercase-titlejest
prefer-mock-promise-shorthandjest
prefer-spy-onjest
prefer-strict-equaljest
prefer-to-bejest
prefer-to-containjest
prefer-to-have-lengthjest
prefer-todojest
require-hookjest
catch-error-nameunicorn
empty-brace-spacesunicorn
error-messageunicorn
filename-caseunicorn
no-await-expression-memberunicorn
no-console-spacesunicorn
no-nullunicorn
no-unreadable-array-destructuringunicorn
no-zero-fractionsunicorn
number-literal-caseunicorn
numeric-separators-styleunicorn
prefer-array-flat-mapunicorn
prefer-dom-node-text-contentunicorn
prefer-includesunicorn
prefer-logical-operator-over-ternaryunicorn
prefer-modern-dom-apisunicorn
prefer-optional-catch-bindingunicorn
prefer-reflect-applyunicorn
prefer-spreadunicorn
prefer-string-trim-start-endunicorn
require-array-join-separatorunicorn
switch-case-bracesunicorn
text-encoding-identifier-caseunicorn
throw-new-errorunicorn

Suspicious (11): ​

Rule nameSourceDefault
no-unnecessary-type-constraintTypeScript
no-commented-out-testsjest
prefer-add-event-listenerunicorn
jsx-no-comment-textnodesreact
react-in-jsx-scopereact
no-named-as-defaultimport
no-named-as-default-memberimport
no-self-importimport
no-duplicatesimport
approx-constantoxc
misrefactored-assign-opoxc

Nursery (8): ​

Rule nameSourceDefault
constructor-superESLint
getter-returnESLint
no-fallthroughESLint
no-import-assignESLint
no-undefESLint
rules-of-hooksreact
exportimport
no-side-effects-in-initializationtree_shaking

Perf (6): ​

Rule nameSourceDefault
no-await-in-loopESLint
jsx-no-jsx-as-propreact_perf
jsx-no-new-array-as-propreact_perf
jsx-no-new-function-as-propreact_perf
jsx-no-new-object-as-propreact_perf
no-accumulating-spreadoxc

Released under the MIT License.