More than 100 powerful ESLint rules
MIT License
Bot releases are visible (Hide)
Thanks to everyone that has contributed so far.
And special thanks to our team member @fisker for doing most of the work on this project. We could not have gotten this far without him.
no-useless-switch-case
(#1779) a8fb966prefer-modern-math-apis
(#1780) 6dfdeb0no-unreadable-iife
(#1765) ce8a4b7prefer-native-coercion-functions
(#1767) 51166f4template-indent
: Set the rule error
instead of warn
in recommended
preset (#1781) 09923afprefer-json-parse-buffer
: Remove from recommended
preset (#1750) 93f49f2no-array-for-each
: Add fixer for parenthesized call (#1784) 5f39c37no-array-for-each
: Handle optional chaining (#1753) 1d32db4prefer-object-from-entries
: Stop checking unknown cases (#1771) 309771dprefer-string-trim-start-end
: Check optional chaining (#1768) 1920597no-useless-undefined
: Ignore arguments in Function#bind()
(#1762) c501243prefer-ternary
: Skip fix if there are comments (#1763) 3013565text-encoding-identifier-case
: Auto-fix encoding in fs.{readFile,readFileSync}()
(#1755) 5e1c932dist
and dst
abbreviations (#1756) dffcea8no-array-for-each
: Handle ChainExpression
correctly (#1772) e615a37https://github.com/sindresorhus/eslint-plugin-unicorn/compare/v41.0.1...v42.0.0
relative-url-style
: Improve fix (#1748) f406795https://github.com/sindresorhus/eslint-plugin-unicorn/compare/v41.0.0...v41.0.1
text-encoding-identifier-case
(#1718) 4370602prefer-export-from
: Fix TypeScript compatibility (#1728) f14aa95prefer-at
: Remove auto-fix for arguments
(#1705) bba518ehttps://github.com/sindresorhus/eslint-plugin-unicorn/compare/v40.1.0...v41.0.0
expiring-todo-comments
: Add date
option (#1683) 16bc33aconsistent-function-scoping
: Allow React.useHook
(#1691) e910633no-useless-undefined
: Allow React.createContext(undefined)
(#1688) 40bc603https://github.com/sindresorhus/eslint-plugin-unicorn/compare/v40.0.0...v40.1.0
no-thenable
(#1616) c318644no-useless-promise-resolve-reject
(#1623) 054436erelative-url-style
(#1672) 6ab705bprefer-json-parse-buffer
(#1676) 84c9c70prefer-object-has-own
: Deprecate in favor of the built-in prefer-object-has-own
rule (#1646) e59a856filename-case
: Ignore $
in filenames (#1628) a43a174no-useless-promise-resolve-reject
: Detect unnecessary Promise.resolve
/reject
in promise callback functions (#1666) f6215f3prefer-export-from
: Support import assertions (#1618) 1d7a6b6prefer-top-level-await
: Improve top-level expression detection (#1526) b054d65prefer-dom-node-dataset
: Check .hasAttribute()
and .getAttribute()
(#1673) 152f153prefer-dom-node-dataset
: Check .removeAttribute()
(#1668) 22d8d03prefer-string-slice
: Improve fix (#1675) 267115aprefer-math-trunc
: Improve fix logic (#1670) 784c7a8prefer-string-slice
: Improve argument type detection (#1664) 03b0946prefer-add-event-listener
: Remove fix for onerror
(#1650) 7bf63bbno-array-push-push
: Ignore process.{stdin,stdout,stderr}
(#1654) 10ad699no-new-array
& no-new-buffer
: Improve argument type detection (#1648) 9b04e43no-array-for-each
: Ignore pIteration.forEach
(#1649) 2b92385no-array-callback-reference
: Ignore primitive wrappers in Array#map()
(#1642) 0362c09prefer-export-from
: Support "string literal specifier" (#1636) 0866b41template-indent
: Check Jest inline snapshots by default (#1637) 64460e2prefer-dom-node-dataset
: Fix name conversion (#1674) 7fb6f7bprefer-export-from
: Fix crash in TypeScript files (#1647) 1ff8e42https://github.com/sindresorhus/eslint-plugin-unicorn/compare/v39.0.0...v40.0.0
prefer-code-point
(#1584) 31c83cdno-await-expression-member
(#1586) 0485924prefer-export-from
: Add ignoreUsedVariables
option (#1590) a8d52e4prevent-abbreviations
: Show file basename instead of full path (#1593) 7c2867drequire-post-message-target-origin
rule from recommended config (#1581) 014b4dcno-empty-file
: Fix false positive with triple-slash directives (#1605) 6354bb8require-number-to-fixed-digits-argument
: Ignore .toFixed
from new expression (#1601) 20d61e7prefer-export-from
: Fix bug on fixing export namespace as default (#1583) b564ff1additionalProperties
to schema (#1589) 579d05dhttps://github.com/sindresorhus/eslint-plugin-unicorn/compare/v38.0.1...v39.0.0
prefer-export-from
: Ignore variables with type (#1580) ea49b21https://github.com/sindresorhus/eslint-plugin-unicorn/compare/v38.0.0...v38.0.1
no-empty-file
(#1506) a2ba25eprefer-export-from
(#1453) ff43745no-array-callback-reference
: Only ignore Boolean
in reasonable places (#1570) 46f8638require-array-join-separator
: Check optional member (#1569) 15f9028https://github.com/sindresorhus/eslint-plugin-unicorn/compare/v37.0.1...v38.0.0
https://github.com/sindresorhus/eslint-plugin-unicorn/compare/v37.0.0...v37.0.1
template-indent
(#1478) 5f4c440'latest'
as ecmaVersion
(#1465) 9feb181https://github.com/sindresorhus/eslint-plugin-unicorn/compare/v36.0.0...v37.0.0
no-useless-fallback-in-spread
(#1481) 1675118no-invalid-remove-event-listener
(#1216) f0ff04dall
config (#1512) a512ad1
prefer-spread
: Check String#split('')
(#1489) d51a197prefer-module
: Use suggestions for 'use strict'
directive (#1470) 57c7906error-message
: Handle shadowed Error
constructor (#1496) fdadd88prefer-spread
: Fix false negative on array constants (#1474) 4162145https://github.com/sindresorhus/eslint-plugin-unicorn/compare/v35.0.0...v36.0.0
prefer-object-from-entries
(#1308) 4a14187no-useless-length-check
(#1398) 1107455no-useless-spread
(#1401) 1463f52explicit-length-check
: Remove greater-than-or-equal
option (#1397) db1a2b5
no-array-reduce
: Add allowSimpleOperations
option (#1418) 153eb2cno-array-callback-reference
: Ignore jQuery methods (#1457) 7af9a6fprevent-abbreviations
: Ignore i18n
and l10n
(#1445) efdd90eno-array-callback-reference
: Ignore mobx-state-tree usage (#1455) 73c0dfdnew-for-builtins
: Check WeakRef
and FinalizationRegistry
(#1450) fce9d1dno-zero-fractions
: Handle .0
correctly (#1444) fcca35dnew-for-builtins
: Enforce new
for SharedArrayBuffer
and Proxy
(#1438) 2ba83adno-null
: Allow Object.create(null, …)
(#1432) 768f301number-literal-case
: Support Vue SFC (#1434) ee9f609no-object-as-default-parameter
: Forbid destructuring (#1433) 3fcc4bbprefer-spread
: Better auto-fix (#1426) 7bdf0ddprefer-array-some
: Check cases comparing .find()
with undefined
(#1422) 3dc2f77no-useless-spread
: Check useless "iterable to array" (#1414) 61bc6a3prefer-dom-node-text-content
: Check destructuring, Use suggestion instead of auto-fix (#1417) c4bfc42require-post-message-target-origin
: Disable for TypeScript files (#1415) 741484aprefer-add-event-listener
: Update event types list (#1412) 7f88b2fno-instanceof-array
: Support Vue SFC (#1410) 3b22917prevent-abbreviations
: Add def
(#1402) f783472no-instanceof-array
: Improve report location (#1389) 6512fbdthrow-new-error
: Fix an edge case (#1390) 806831bhttps://github.com/sindresorhus/eslint-plugin-unicorn/compare/v34.0.1...v35.0.0
no-array-method-this-argument
: Fix false positives (#1386) d364d67https://github.com/sindresorhus/eslint-plugin-unicorn/compare/v34.0.0...v34.0.1
no-array-method-this-argument
(#1357) 96587f2require-post-message-target-origin
(#1326) 03c540bprefer-top-level-await
(#1325) 05722a1
prefer-at
(#1331) 8ca5b46
prefer-module
: Ignore .cjs
files (#1355) ebdc3c2error-message
: Support AggregateError
(#1351) e7b4300filename-case
: Enforce lowercased file extension (#1336) 119615bexpiring-todo-comments
: More helpful error when no conditions (#1375) 914a996prefer-array-some
and prefer-regexp-test
: Support Vue SFC (#1364) a46050eexplicit-length-check
: Support v-show
directive (#1363) f163c4aexplicit-length-check
: Support Vue SFC files (#1360) 9199611prefer-type-error
: Improve report location (#1354) bc3d58bno-useless-undefined
: Ignore Set#add()
Map#set()
Array#{push,unshift}()
(#1353) c6359c3prefer-prototype-methods
: Only check methods from []
and {}
(#1347) 29a4e75prefer-array-some
: Report non-zero check on array.filter().length
(#1337) f8aaac2context.getPhysicalFilename()
(#1344) e2540cbprefer-array-find
and prefer-at
: Fix crash on LHS zero index access (#1373) da1f6d8prefer-prototype-methods
: Fix a missing condition on object literal check (#1332) cec7f11https://github.com/sindresorhus/eslint-plugin-unicorn/compare/v33.0.1...v34.0.0
prefer-prototype-methods
: Ignore known object literal methods (#1330) 639e7afhttps://github.com/sindresorhus/eslint-plugin-unicorn/compare/v33.0.0...v33.0.1
require-array-join-separator
(#1284) 36e7103require-number-to-fixed-digits-argument
(#1288) 4a30863prefer-prototype-methods
(#1247) 7bde733prefer-object-has-own
(#1322) ca34b40
recommended
preset.no-array-for-each
: Handle only return statement inside if
or else
(#1319) 298a104new-for-builtins
& no-new-buffer
: Handle line breaks after new
keyword (#1301) d37439fprefer-array-flat-map
: Remove check on [].concat(...array.map(…))
(#1299) 128b5aaprefer-spread
: Ignore {arrayBuffer,blob,buffer,file,this}.slice()
(#1287) e18d5f2prefer-string-starts-ends-with
: Add suggestions for safely handling non-strings (#1277) f14a9d1explicit-length-check
: Ignore this.{size,length}
(#1289) ed85d00prefer-string-starts-ends-with-rule
: Don't autofix known non-string values (#1281) a1c8984explicit-length-check
: Ignore known, non-number length properties (#1264) 42f6487empty-brace-spaces
: Support experimental syntax (#1276) fa68b6fprefer-dom-node-remove
: Improve parentheses handling (#1254) 74e4d39prefer-array-flat
: Fix incorrect fix, check Array.prototype.concat.call
(#1317) f6a939chttps://github.com/sindresorhus/eslint-plugin-unicorn/compare/v32.0.1...v33.0.0
prevent-abbreviations
: Fix shorthand import/export detection (#1252) 4367479https://github.com/sindresorhus/eslint-plugin-unicorn/compare/v32.0.0...v32.0.1
babel-eslint
(#1211) a8e9f26@babel/eslint-parser
no-document-cookie
(#1244) 866c4a3numeric-separators-style
- Was previously disabled.prefer-array-flat
- Was previously disabled.prefer-array-flat-map
- Was previously disabled.no-for-loop
: Ignore known non-array loop variables (#1242) 29f6b45prefer-array-find
: Singularize variable name in autofix (#1243) 6b340a3prefer-switch
: Do not add braces to the default case (#1235) c241782no-zero-fractions
: Handle numeric separators, fix missing parentheses, improve report location (#1238) 2724afano-array-for-each
: Better error message (#1239) 2e82dc8prefer-switch
: Avoid conflict with no-unreachable
rule (#1234) 1c78d0cprefer-optional-catch-binding
: Support checking destructured errors (#1229) a0b2f4fno-array-for-each
: Support autofixing complicated parameters (#1228) d84143fprefer-negative-index
: Support Array#at()
(#1217) 6443ee3explicit-length-check
: Check Set#size
(#1226) 6a745a0filename-case
: Improve report position (#1227) 3d4ac1bprevent-abbreviations
: Fix shorthand import/export detection (#1215) a669e31https://github.com/sindresorhus/eslint-plugin-unicorn/compare/v31.0.0...v32.0.0
prefer-node-protocol
(#1203) b1a5f53prefer-module
(#1141) a7e393chttps://github.com/sindresorhus/eslint-plugin-unicorn/compare/v30.0.0...v31.0.0
prefer-switch
(#1181) 10e7a0cprevent-abbreviations
: Rename options (#1164) cf42cc5no-keyword-prefix
: Rename blacklist
option to disallowedPrefixes
(#1180) 91e60d0no-array-push-push
: Add ignore
option (#1168) f9262d9prefer-spread
: Report array.slice(0)
(#1182) 92bebe1no-useless-undefined
: Handle parenthesized undefined
(#1178) c88882eno-array-for-each
: Improve fixable parameter detection (#1177) 18d1ac2prefer-array-flat-map
: Exclude React.Children.map().flat()
(#1159) 3e6b6fbbetter-regex
: Report parsing errors (#1133) 51ee030filename-case
: Uniquify suggestion filenames (#1160) a87238fPropertyDefinition
(#1127) 75c4d78prefer-number-properties
: Fix some edge cases (#1170) e7e25b8prefer-number-properties
: Fix some edge cases (part 2) (#1176) 3a58802prefer-regexp-test
: Do not fix if regexp has g
flag (#1173) 8d97bebno-array-for-each
: Do not fix if callback parameter has type annotation (#1167) 0d4fc8bno-useless-undefined
: Do not report return undefined
if function has returnType
(#1165) 4ff39e0prefer-set-has
: Use suggestions if node has type annotation (#1158) 1221185no-null
: Exclude second argument of Node.insertBefore()
(#1157) b16c316prefer-add-event-listener
: Fix crash on parenthesized cases (#1153) c95e854MemberExpression
check when using ecmaVersion: 2019
(#1151) 56d5d9aprefer-regexp-test
: Do not fix if argument of String#match()
is known not RegExp
(#1152) 0abc394https://github.com/sindresorhus/eslint-plugin-unicorn/compare/v29.0.0...v30.0.0