All Rules
This is a full table of all rules that will be implemented in the main Flint project. It includes rules from all three provided categories of plugins: Core, Focused, and Incubator.
Implemented: 521 of 1192 (43.7%)
| Flint Rule | Plugin | Preset |
|---|---|---|
accessKeysDisallow the use of the accessKey / accesskey attribute on JSX elements. | JSX | logical |
accessKeys | Astro | logical |
accessorPairGroupsReports getter and setter accessors for the same property that are not adjacent. | TypeScript | stylistic |
accessorPairTypesReports mismatched types between getter and setter accessor pairs. | TypeScript | logical |
accessorThisRecursionReports recursive access to this within getters and setters. | TypeScript | logical (strict) |
afterAllPaddingLinesEnforces padding around afterAll blocks. | Vitest | stylistic (strict) |
afterEachPaddingLinesEnforces padding around afterEach blocks. | Vitest | stylistic (strict) |
alertsReports uses of the global alert/confirm/prompt dialog APIs. | Browser | logical |
aliasMethods | Vitest | stylistic |
allPaddingLinesEnforces padding around Vitest blocks. | Vitest | stylistic (strict) |
altTextsReports elements that require alt text but are missing it. | JSX | logical |
altTexts | Astro | logical |
amdImports | TypeScript | (none) |
anchorAmbiguousTextReports anchor elements with ambiguous text that doesn't describe the link destination. | JSX | logical (strict) |
anchorAmbiguousText | Astro | logical |
anchorContentReports anchor elements without accessible content. | JSX | logical |
anchorContent | Astro | logical |
anchorNatives | Next.js | logical |
anchorValidityReports invalid usage of anchor elements. | JSX | logical |
anchorValidity | Astro | logical |
anonymousDefaultExports | TypeScript | (none) |
anyArgumentsReports calling a function with a value typed as any as an argument. | TypeScript | logical |
anyAssignmentsReports assigning a value with type any to variables and properties. | TypeScript | logical |
anyCallsReports calling a value with type any. | TypeScript | logical |
anyMemberAccessReports member access on a value with type any. | TypeScript | logical |
anyReturnsReports returning a value with type any from a function. | TypeScript | logical |
argumentsReports using the arguments object instead of rest parameters. | TypeScript | logical |
ariaActiveDescendantTabIndexReports elements with aria-activedescendant without tabIndex. | JSX | logical |
ariaActiveDescendantTabIndex | Astro | logical |
ariaHiddenFocusablesReports elements with aria-hidden='true' that are focusable. | JSX | logical (strict) |
ariaHiddenFocusables | Astro | logical |
ariaPropsReports invalid ARIA properties. | JSX | logical |
ariaProps | Astro | logical |
ariaPropTypesReports ARIA properties with invalid value types. | JSX | logical |
ariaPropTypes | Astro | logical |
ariaRoleValidityReports invalid or abstract ARIA roles. | JSX | logical |
ariaRoleValidity | Astro | logical |
ariaUnsupportedElementsReports ARIA attributes on elements that don't support them. | JSX | logical |
ariaUnsupportedElements | Astro | logical |
arrayCallbackReturnsReports missing return statements in callbacks of array methods. | TypeScript | javascript |
arrayConstructorsReports using the Array constructor to create arrays instead of array literal syntax. | TypeScript | logical |
arrayDeleteUnnecessaryCountsReports using .length or Infinity as the deleteCount or skipCount argument of Array#splice() or Array#toSpliced(). | TypeScript | stylistic |
arrayElementDeletionsReports using the delete operator on array values. | TypeScript | logical |
arrayEmptyCallbackSlotsReports array methods with callbacks that will never be invoked on arrays with empty slots. | TypeScript | logical |
arrayExistenceChecksConsistencyReports inconsistent styles for checking element existence using index methods. | TypeScript | stylistic |
arrayFilteredFindsReports using .filter() when only the first or last matching element is needed. | TypeScript | stylistic (strict) |
arrayFindsReports using .filter()[0] instead of .find() when looking for a single element. | TypeScript | stylistic |
arrayFlatMapMethodsReports using .map().flat() when .flatMap() can be used. | TypeScript | stylistic (strict) |
arrayFlatMethodsReports legacy techniques to flatten arrays instead of using .flat(). | TypeScript | stylistic (strict) |
arrayFlatUnnecessaryDepthsReports using 1 as the depth argument of .flat() since it is the default. | TypeScript | stylistic |
arrayHandlers | SolidJS | (none) |
arrayIncludesReports using .indexOf() comparisons that can be replaced with .includes(). | TypeScript | stylistic |
arrayIncludesMethodsReports using Array#some() with simple equality checks that can be replaced with .includes(). | TypeScript | stylistic (strict) |
arrayIncludesOrder | TypeScript | (none) |
arrayIndexKeyes | React | logical |
arrayIndexOfMethodsReports using .findIndex() or .findLastIndex() with simple equality checks that can be replaced with .indexOf() or .lastIndexOf(). | TypeScript | stylistic (strict) |
arrayInstanceOfChecks | TypeScript | logical |
arrayLoopsReports using .forEach() when a for-of loop can be used. | TypeScript | stylistic |
arrayMapIdentitiesReports using .flatMap() with an identity function that returns its argument unchanged. | TypeScript | logical |
arrayMutableReversesReports .reverse() calls on arrays that mutate the original array. | TypeScript | stylistic |
arrayMutableSortsReports .sort() calls on arrays that mutate the original array. | TypeScript | stylistic |
arrayPushCalls | TypeScript | stylistic |
arrayReduceTypeArgumentsReports Array#reduce calls using type assertions on initial values instead of type arguments. | TypeScript | logical (strict) |
arraySliceUnnecessaryEndReports unnecessary end argument in .slice() calls when it equals the length or is Infinity. | TypeScript | stylistic |
arraySomeMethodsReports patterns that can be replaced with .some() for checking array element existence. | TypeScript | stylistic (strict) |
arraysOrder | TypeScript | (none) |
arrayTernarySpreadingConsistencyReports inconsistent types when spreading a ternary in an array literal. | TypeScript | stylistic |
arrayTypesReports array type syntax that doesn't match the configured style. | TypeScript | stylistic |
arrayUnnecessaryLengthChecksReports unnecessary array length checks before .some() or .every() calls. | TypeScript | logical |
asConstAssertionsReports using explicit literal types when as const can be used. | TypeScript | stylistic |
assertStrictPrefer strict assertion mode from Node.js for better error messages and behavior. | Node.js | logical |
assertStylesPrefer assert.ok() over assert() for explicit intent and better readability. | Node.js | stylistic |
assignmentOperatorShorthandsPrefer logical assignment operator shorthand expressions. | TypeScript | stylistic |
asyncFunctionAwaitsReports async functions that do not use await. | TypeScript | logical |
asyncPromiseExecutorsReports using async functions as Promise executor functions. | TypeScript | logical |
asyncUnnecessaryPromiseWrappersReports unnecessary Promise.resolve() or Promise.reject() in async contexts. | TypeScript | logical |
atAccessesPrefer using .at() for accessing elements at negative indices. | TypeScript | stylistic (strict) |
atDebugTags | Svelte | logical |
atHtmlTags | Svelte | security |
attributeInheritanceDuplicates | Vue | logical |
attributeNameCasing | Vue | stylistic |
attributeOrders | Vue | stylistic (strict) |
attributesOrder | Astro | sorting |
attributeValidity | JSX | logical |
attributionEnforces that package.json declares author or contributor attribution. | PackageJSON | logical |
authorPresenceEnforces that the author property is present. | PackageJSON | (none) |
authorValidityEnforces that the author property is valid. | PackageJSON | logical |
autocompleteEnsure the autocomplete attribute is correct and suitable for the form field. | JSX | logical |
autocomplete | Astro | logical |
autoFocusPropsReports autoFocus props that are not set to false. | JSX | logical |
autoFocusProps | Astro | logical |
automaticJsoncRules | JSON | config |
awaitThenable | TypeScript | logical |
bareUrlsReports bare URLs that should be formatted as autolinks or links. | Markdown | stylistic (strict) |
beforeAllPaddingLinesEnforces padding around beforeAll blocks. | Vitest | stylistic (strict) |
beforeEachPaddingLinesEnforces padding around beforeEach blocks. | Vitest | stylistic (strict) |
beforeRouteEnterThisAccesses | Vue | logical |
bindDirectiveValidity | Vue | logical |
bindStyles | Vue | stylistic |
bindSyncValidity | Vue | logical |
binNameCasingEnforce that names for bin properties are in kebab case. | PackageJSON | stylistic |
binPresenceEnforces that the bin property is present. | PackageJSON | (none) |
binValidityEnforces that the bin property is valid. | PackageJSON | logical |
blobReadingMethodsPrefer direct Blob reading methods over wrapping in Response for simpler code. | Node.js | stylistic |
blockLang | Svelte | logical (strict) |
blockLanguages | Vue | logical |
blockLineLimits | Vue | stylistic |
blockMappingsPrefer block-style mappings over flow-style mappings. | YAML | stylistic |
blockOrders | Vue | sorting |
blockquoteBlankLineMultiples | Markdown | stylistic (strict) |
blockSequencesPrefer block style sequences over flow style sequences. | YAML | stylistic |
booleanDefaults | Vue | logical |
booleanPropNames | JSX | stylistic (strict) |
booleanPropTypePositions | Vue | logical |
booleanValuesPrefer shorthand boolean attributes over explicit {true} values in JSX. | JSX | stylistic |
bracedStatementsDisallow unnecessary JSX curly braces around literals and JSX elements. | JSX | stylistic |
browserPresenceEnforces that the browser property is present. | PackageJSON | (none) |
browserValidityEnforces that the browser property is valid. | PackageJSON | logical |
bufferAllocatorsPrefer modern Buffer allocation methods over the deprecated Buffer constructor. | Node.js | logical |
bugsPresenceEnforces that the bugs property is present. | PackageJSON | (none) |
bugsValidityEnforces that the bugs property is valid. | PackageJSON | (none) |
builtinCoercionsReports functions that wrap native coercion functions like String, Number, BigInt, Boolean, or Symbol. | TypeScript | stylistic (strict) |
builtinConstructorNewsEnforces using new for constructors that require it, and disallows new for primitive coercion functions. | TypeScript | stylistic |
bundleDependenciesPresenceEnforces that the bundleDependencies property is present. | PackageJSON | (none) |
bundleDependenciesValidityEnforces that the bundleDependencies (also: bundledDependencies) property is valid. | PackageJSON | logical |
buttonTypesReports button elements without an explicit type attribute. | JSX | logical |
buttonTypes | Svelte | logical (strict) |
buttonTypes | Vue | logical |
calledOnceAssertions | Vitest | (none) |
calledOnceWithAssertions | Vitest | stylistic (strict) |
calledTimesAssertions | Vitest | stylistic (strict) |
calledWithAssertions | Vitest | stylistic (strict) |
camelCaseNames | Vue | stylistic |
caseDeclarationsReports lexical declarations in case clauses without wrapping them in blocks. | TypeScript | javascript |
caseDuplicatesReports switch statements with duplicate case clause test expressions. | TypeScript | logical |
caseFallthroughsReports switch case clauses that fall through unexpectedly. | TypeScript | logical |
catchCallbackTypesReports Promise catch callback parameters that are not typed as unknown. | TypeScript | logical |
caughtErrorCauses | TypeScript | logical (strict) |
caughtVariableNamesEnforces a consistent naming convention for catch clause error variables. | TypeScript | stylistic (strict) |
chainedAssignmentsReports using chained assignment expressions (e.g., a = b = c). | TypeScript | stylistic |
characterClassElementsOrder | TypeScript | (none) |
charAtComparisonsReports comparing charAt() results with strings longer than one character. | TypeScript | logical |
childContentOverrides | Vue | logical |
childrenPropsReports usage of the children prop. | JSX | stylistic |
childrenWhitespace | JSX | logical (strict) |
classAssignmentsReports reassigning class declarations. | TypeScript | javascript |
classComponentStateDefinitions | React | stylistic (strict) |
classComponentStateInitialization | React | stylistic (strict) |
classDirectives | Svelte | stylistic (strict) |
classesOrder | TypeScript | sorting |
classFieldDeclarationsReports assigning literal values to this in constructors instead of using class field declarations. | TypeScript | javascript |
classListDirectiveObjects | Astro | stylistic |
classListDirectives | Astro | stylistic |
classListDirectiveSplits | Astro | stylistic |
classListProps | SolidJS | (none) |
classListTogglesPrefer using classList.toggle() over conditional classList.add() and classList.remove(). | Browser | stylistic |
classLiteralPropertiesReports getters that return literal values instead of using readonly class fields. | TypeScript | stylistic |
classMemberDuplicatesReports duplicate class member names that will be overwritten. | TypeScript | javascript |
classMethodsThisReports class methods that do not use this. | TypeScript | stylistic (strict) |
classMultipleObjects | Vue | stylistic |
classNameDuplicates | Vue | stylistic |
clickEventKeyEventsReports onClick without keyboard event handlers. | JSX | logical |
clickEventKeyEvents | Astro | logical |
clientComponentAsyncDefinitions | Next.js | logical |
clientOnlyDirectiveValuesReports client:only directives without a value, or with a value whose type cannot be a renderer hint string. | Astro | logical |
cloakDirectiveValidity | Vue | logical |
codeSpaces | Markdown | stylistic |
combinedPushesReports consecutive array.push() calls that could be combined into a single call. | TypeScript | stylistic (strict) |
commentDirectives | Vue | logical |
commentedOutTests | Vitest | logical (strict) |
commentTextNodesReports JSX text nodes that contain comment syntax but are rendered as text. | JSX | logical |
commonjsModules | TypeScript | (none) |
comparisonMatcherAssertions | Vitest | stylistic |
compilerMacroImports | Vue | logical |
compilerOptions | React | config |
componentApiStyles | Vue | stylistic |
componentConditionalReturns | SolidJS | logical |
componentDataSharing | Vue | logical |
componentDefinitions | React | stylistic |
componentDidMountSetStates | React | logical (strict) |
componentDidUpdateSetStates | React | logical (strict) |
componentDisplayNames | React | logical (strict) |
componentFileExports | Astro | logical |
componentFileNameMatches | Vue | stylistic |
componentHookFactories | React | logical |
componentHtmlTextProps | Vue | logical |
componentImportNameMatches | Vue | stylistic |
componentNameCasing | Vue | stylistic |
componentNames | Vue | stylistic |
componentNameValidity | Vue | logical |
componentNesting | React | logical |
componentOptionNameCasing | Vue | stylistic |
componentOptionTypos | Vue | logical |
componentPropertyOrder | Vue | sorting |
componentPropMutations | Vue | logical |
componentTemplateNameCasing | Vue | stylistic |
componentVIsBinds | Vue | logical |
componentWillUpdateSetStates | React | logical (strict) |
computedAsyncProperties | Vue | logical |
computedPropertyLikeMethods | Vue | logical |
computedPropertyReturns | Vue | logical |
computedPropertySideEffects | Vue | logical |
conditionalExpects | Vitest | stylistic (strict) |
configPresenceEnforces that the config property is present. | PackageJSON | (none) |
configValidityEnforces that the config property is valid. | PackageJSON | logical |
consecutiveNonNullAssertionsReports unnecessary extra non-null assertions. | TypeScript | stylistic |
consoleCallsReports calls to console methods. | TypeScript | (none) |
consoleCalls | Vue | logical |
consoleSpacesDisallow leading or trailing spaces in console method string arguments. | Node.js | stylistic (strict) |
constantAssignmentsReports attempting to reassign variables declared with const. | TypeScript | javascript |
constantConditions | Vue | logical |
constructorGenericCallsReports inconsistent placement of type arguments in constructor calls. | TypeScript | stylistic |
constructorReturnsReports returning values from constructor functions. | TypeScript | javascript |
constructorSupersReports constructors of derived classes that do not call super(), and constructors of non-derived classes that call super(). | TypeScript | javascript |
constVariables | TypeScript | logical |
contextValueReferences | React | logical (strict) |
contributorsPresenceEnforces that the contributors property is present. | PackageJSON | (none) |
contributorsValidityEnforces that the contributors property is valid. | PackageJSON | logical |
controlAssociatedLabels | Astro | logical |
controlAssociatedLabels | JSX | logical |
coreModuleHiding | Node.js | (none) |
cpuPresenceEnforces that the cpu property is present. | PackageJSON | (none) |
cpuValidityEnforces that the cpu property is valid. | PackageJSON | logical |
cspellRuns the CSpell spell checker on any source code file. | Spelling | logical |
cssManualStylesheets | Next.js | logical |
customEventNameCasing | Vue | stylistic |
customFontsInPages | Next.js | logical |
customModelModifiers | Vue | logical |
dangerouslySetInnerHTMLWithChildren | React | logical |
dangerousProps | React | logical (strict) |
dataComputedProperties | Vue | logical |
dateConstructorClonesPrefer passing a Date directly to the Date constructor when cloning, rather than calling getTime(). | TypeScript | logical |
dateNowTimestampsPrefer the shorter Date.now() to get the number of milliseconds since the Unix Epoch. | TypeScript | logical (strict) |
debuggerStatementsReports using debugger statements. | TypeScript | logical |
decoratorsOrder | TypeScript | sorting |
defaultCaseLastReports switch statements where the default clause is not last. | TypeScript | logical |
defaultExports | TypeScript | (none) |
defaultExports | Vue | logical |
defaultParameterLastEnforce default parameters to be last. | TypeScript | javascript |
defaultPropsMatchingPropTypes | React | logical |
defaultPropsOrder | JSX | sorting |
defaultPropTypes | Vue | logical |
defineEmitsDeclarations | Vue | stylistic |
defineEmitsValidity | Vue | logical |
defineMacrosOrder | Vue | sorting |
defineOptionsMacros | Vue | stylistic |
defineOptionsValidity | Vue | logical |
definePropsDeclarations | Vue | stylistic |
definePropsDestructuring | Vue | stylistic |
definePropsValidity | Vue | logical |
definitionContentsReports definitions with empty URLs or only empty fragments. | Markdown | logical |
definitionDuplicatesReports duplicate definition identifiers (case-insensitive). | Markdown | logical |
definitionUsesReports unused reference definitions. | Markdown | logical |
deletesReports using the delete operator. | Performance | logical |
dependenciesPresenceEnforces that the dependencies property is present. | PackageJSON | (none) |
dependenciesValidityEnforces that the dependencies property is valid. | PackageJSON | logical |
dependencyRanges | PackageJSON | (none) |
dependencyUniquenessReports dependency names that are declared more than once in package.json. | PackageJSON | logical |
deprecatedDisallow using code marked as @deprecated. | TypeScript | logical |
deprecatedDataObjectDeclarations | Vue | logical |
deprecatedDestroyedLifecycleHooks | Vue | logical |
deprecatedFilters | Vue | logical |
deprecatedFunctionalTemplates | Vue | logical |
deprecatedImports | TypeScript | (none) |
deprecatedThisDefaultProps | Vue | logical |
describeCallbackValidity | Vitest | logical |
describePaddingLinesEnforces padding around describe blocks. | Vitest | stylistic (strict) |
describeTitleReferences | Vitest | stylistic |
descriptionPresenceEnforces that the description property is present. | PackageJSON | logical |
descriptionValidityEnforces that the description property is valid. | PackageJSON | logical |
destructuring | React | stylistic |
destructuringConsistencyUse destructured variables over properties for consistency. | TypeScript | stylistic (strict) |
devDependenciesPresenceEnforces that the devDependencies property is present. | PackageJSON | (none) |
devDependenciesValidityEnforces that the devDependencies property is valid. | PackageJSON | logical |
devEnginesPresenceEnforces that the devEngines property is present. | PackageJSON | (none) |
devEnginesValidityEnforces that the devEngines property is valid. | PackageJSON | logical |
directExports | Vue | logical |
directivePairs | TypeScript | logical (strict) |
directiveRequireDescriptions | TypeScript | stylistic (strict) |
directoriesPresenceEnforces that the directories property is present. | PackageJSON | (none) |
directoriesValidityEnforces that the directories property is valid. | PackageJSON | logical |
distractingElementsReports distracting elements like <marquee> and <blink>. | JSX | logical |
distractingElements | Astro | logical |
documentCookiesReports uses of document.cookie which can be error-prone and has security implications. | Browser | logical (strict) |
documentDomainsReports uses of document.domain which relaxes same-origin protections. | Browser | logical |
documentWritesReports uses of document.write() and document.writeln() which block HTML parsing. | Browser | logical |
doneCallbacks | Vitest | (none) |
dotNotation | Vue | stylistic |
duplicateArgumentsReports functions with duplicate parameter names in their signatures. | TypeScript | javascript |
duplicateAttributes | Vue | logical |
duplicateElseIfBlocks | Svelte | logical |
duplicateKeys | JSON | logical |
duplicateStyleProperties | Svelte | logical |
duplicateUseDirectives | Svelte | logical |
duplicateVElseIfConditions | Vue | logical |
dynamicDeletesDisallow using the delete operator on computed key expressions. | TypeScript | logical |
dynamicImportChunkNames | TypeScript | (none) |
dynamicRequires | TypeScript | (none) |
eachBlockKeys | Svelte | logical |
eachForConsistency | Vitest | (none) |
eachLoops | Vitest | stylistic |
effectSetStates | React | logical |
elementChildrenValidityReports void DOM elements that have children, which is invalid HTML. | JSX | logical (strict) |
elseDirectivesWithForDirectives | Vue | logical |
elseDirectiveValidity | Vue | logical |
elseIfDirectiveValidity | Vue | logical |
elseIfDuplicatesReports duplicate conditions in if-else-if chains that make code unreachable. | TypeScript | logical |
elseReturnsReports unnecessary else blocks following if statements that always return or throw. | TypeScript | stylistic (strict) |
emitsValidatorReturns | Vue | logical |
emitValidators | Vue | logical |
emptyBlocksReports empty block statements that should contain code. | TypeScript | stylistic |
emptyComponentBlocks | Vue | stylistic |
emptyDestructuresReports using empty destructuring patterns that destructure no values. | TypeScript | logical |
emptyDocumentsReports empty YAML documents that contain only document markers. | YAML | logical |
emptyEnumsReports empty enum declarations with no members. | TypeScript | logical |
emptyExportsReports empty export statements that don't make a file a module. | TypeScript | logical |
emptyFieldsReports empty package.json fields that do not add package metadata. | PackageJSON | logical |
emptyFilesReports files that contain no meaningful code. | TypeScript | stylistic (strict) |
emptyFunctionsReports empty functions that should contain code or a comment. | TypeScript | stylistic (strict) |
emptyMappingKeysReports empty mapping keys. | YAML | logical |
emptyMappingValuesReports empty mapping values. | YAML | logical |
emptyModuleAttributesReports empty import/export attributes that serve no purpose. | TypeScript | stylistic |
emptyObjectTypesReports empty object type literals and empty interfaces that are often used incorrectly. | TypeScript | logical |
emptyPatterns | Vue | logical |
emptySequenceEntriesReports empty sequence entries. | YAML | logical |
emptyStaticBlocksReports empty static initialization blocks within class declarations. | TypeScript | stylistic |
emptyTypeParameterListsReports empty type parameter lists in type aliases and interfaces. | TypeScript | stylistic |
endTagPresence | Vue | logical |
enginesPresenceEnforces that the engines property is present. | PackageJSON | (none) |
enginesValidityEnforces that the engines property is valid. | PackageJSON | logical |
enumInitializersReports enum members without explicit initial values. | TypeScript | (none) |
enumMemberLiteralsRequires all enum members to be literal values. | TypeScript | logical (strict) |
enumMixedValues | TypeScript | logical |
enumsOrder | TypeScript | (none) |
enumValueConsistencyReports enums that contain both string and number members. | TypeScript | logical |
enumValueDuplicatesReports enum members with duplicate values. | TypeScript | logical |
equalityMatchers | Vitest | stylistic |
equalityOperatorNegationsReports negated expressions on the left side of equality checks. | TypeScript | (none) |
equalityOperatorsEnforces consistent use of strict equality operators (=== and !==) over loose equality operators (== and !=) for non-nullish comparisons. | TypeScript | logical |
errorBoundaries | React | logical |
errorMessagesRequires a message value when creating a built-in error. | TypeScript | logical (strict) |
errorSubclassPropertiesReports incorrect Error subclass definitions that don't follow best practices. | TypeScript | logical (strict) |
errorUnnecessaryCaptureStackTracesReports unnecessary Error.captureStackTrace() calls in Error subclass constructors. | TypeScript | logical |
escapeSequenceCasingReports escape sequences with lowercase hexadecimal characters. | TypeScript | stylistic (strict) |
evalsReports uses of the eval function. | TypeScript | logical |
eventClassesPrefer EventTarget over EventEmitter for cross-platform compatibility. | Node.js | logical (strict) |
eventHandlerCasing | SolidJS | logical |
eventListenerSubscriptionsPrefer addEventListener over assigning to on* event handler properties. | Browser | logical (strict) |
eventPrefixes | Svelte | stylistic (strict) |
eventTriggerExplicitEmits | Vue | logical |
evolvingVariableTypesReports variables declared without type annotation or initializer. | TypeScript | (none) |
exceptionAssignmentsReports reassigning exception parameters in catch clauses. | TypeScript | logical |
exhaustiveDeps | React | logical |
expectGroupPaddingLinesEnforces padding around expect groups. | Vitest | stylistic (strict) |
expectResolves | Vitest | stylistic |
expectsOutsideTests | Vitest | logical (strict) |
expectValidity | Vitest | logical |
explicitAnysReports explicit uses of the any type. | TypeScript | logical |
explicitSlots | Vue | logical |
exponentiationOperatorsPrefers the ** operator over Math.pow(). | TypeScript | stylistic |
exportAttributesOrder | TypeScript | (none) |
exportDeclarationsOrder | TypeScript | (none) |
exportFromImportsReports imports that are re-exported and could use export...from syntax instead. | TypeScript | stylistic |
exportMutablesReports exporting mutable bindings (let or var). | TypeScript | logical |
exportsAssignmentsPrevent assignment to the exports variable in CommonJS modules. | Node.js | logical |
exportsOrder | TypeScript | sorting |
exportsPresenceEnforces that the exports property is present. | PackageJSON | logical |
exportsSubpathsStyleEnforce consistent root exports subpath style in package.json. | PackageJSON | stylistic |
exportsValidityEnforces that the exports property is valid. | PackageJSON | logical |
exportUniqueNamesReports duplicate export names in a module. | TypeScript | javascript |
exposeAfterAwaits | Vue | logical |
exposeMacros | Vue | logical |
extraneousClassesReports classes used as static namespaces. | TypeScript | logicalStrict |
falsyMatchers | Vitest | (none) |
fencedCodeLanguagesReports fenced code blocks without a language specified. | Markdown | stylistic (strict) |
fencedCodeMeta | Markdown | stylistic |
fetchMethodBodiesDisallow providing a body with GET or HEAD fetch requests. | TypeScript | logical |
fileExtensionsEnforces consistent YAML file extensions. | YAML | stylistic (strict) |
filenames | Vitest | (none) |
filePathsFromImportMetaPrefer import.meta.dirname and import.meta.filename over legacy file path techniques. | Node.js | stylistic (strict) |
fileReadJSONBuffersPrefer reading JSON files as buffers when using JSON.parse for better performance. | Node.js | stylistic (strict) |
filesPresenceEnforces that the files property is present. | PackageJSON | (none) |
filesRedundancy | PackageJSON | logical |
filesValidityEnforces that the files property is valid. | PackageJSON | logical |
finallyStatementSafetyReports control flow statements in finally blocks that can override control flow in try/catch blocks. | TypeScript | logical |
floatingPromises | TypeScript | logical |
forBindKeys | Vue | logical |
forDelimiterStyles | Vue | stylistic |
forDirectionsReports for loops with counter variables that move in the wrong direction. | TypeScript | stylistic |
forDirectiveValidity | Vue | logical |
forInArraysReports iterating over an array with a for-in loop. | TypeScript | logical |
forInGuardsReports for-in loops without an if statement to filter inherited properties. | TypeScript | (none) |
forMaps | SolidJS | logical |
fragmentElements | JSX | stylistic |
functionApplySpreadsPrefer the spread operator over .apply() calls. | TypeScript | stylistic |
functionAssignmentsReports reassigning variables declared with function declarations. | TypeScript | javascript |
functionComponentDefinitions | React | stylistic |
functionComponentThisReferences | React | javascript |
functionCurryingRedundancyReports using .apply() or .call() or when the context (this value) provides no benefit. | TypeScript | logical |
functionDeclarationStylesReports functions that don't match the configured style (declaration vs expression). | TypeScript | (none) |
functionDefinitionScopeConsistency | TypeScript | stylistic (strict) |
functionNameMatchesReports function names that don't match the variable or property they're assigned to. | TypeScript | (none) |
functionNewCallsReports using the Function constructor to create functions from strings. | TypeScript | logical |
functionTypeDeclarations | TypeScript | stylistic |
fundingPresenceEnforces that the funding property is present. | PackageJSON | (none) |
fundingValidityEnforces that the funding property is valid. | PackageJSON | logical |
gating | React | config |
generatorFunctionYieldsReports generator functions that do not yield values. | TypeScript | logical |
getterReturnsReports getter functions that do not return values. | TypeScript | javascript |
globalAssignmentsReports attempting to assign to read-only global variables such as undefined, NaN, Infinity, Object, etc. | TypeScript | javascript |
globalCrypto | Node.js | (none) |
globalMutations | React | logical |
globalObjectCallsReports calling global objects like Math, JSON, or Reflect as functions. | TypeScript | javascript |
globalThisAliasesReports using window, self, or global instead of globalThis. | TypeScript | stylistic (strict) |
globalTimers | Node.js | (none) |
googleAnalyticsInlineScript | Next.js | logical |
googleFontDisplay | Next.js | logical |
googleFontPreconnect | Next.js | logical |
gypfilePresenceEnforces that the gypfile property is present. | PackageJSON | (none) |
gypfileValidityEnforces that the gypfile property is valid. | PackageJSON | logical |
hashbangs | Node.js | logical |
headDuplicates | Next.js | logical |
headImportsInDocuments | Next.js | logical |
headingContentsReports heading elements without accessible content. | JSX | logical |
headingContents | Astro | logical |
headingDuplicates | Markdown | stylistic (strict) |
headingEmphasisEquivalents | Markdown | stylistic (strict) |
headingIncrementsReports heading levels incrementing by more than one. | Markdown | logical |
headingRootDuplicatesReports multiple H1 headings in the same document. | Markdown | logical (strict) |
headingRootPresence | Markdown | logical (strict) |
headingTrailingPunctuation | Markdown | stylistic (strict) |
headNatives | Next.js | logical |
heritageClausesOrder | TypeScript | sorting |
hexColorValidityReports hex colors with invalid values. | CSS | logical |
hoistedApiPositions | Vitest | logical (strict) |
homepagePresenceEnforces that the homepage property is present. | PackageJSON | logical |
homepageValidityEnforces that the homepage property is valid. | PackageJSON | logical |
hookDuplicates | Vitest | logical (strict) |
hookOrders | Vitest | stylistic (strict) |
hooksBeforeTestCases | Vitest | stylistic (strict) |
htmlCommentSpacing | Svelte | stylistic (strict) |
htmlDirectiveValidity | Vue | logical |
htmlLangsReports <html> elements without a lang prop. | JSX | logical |
htmlLangs | Astro | logical |
ifDirectiveValidity | Vue | logical |
ifElseKeys | Vue | logical |
iframeSandboxes | JSX | logical (strict) |
iframeTitlesReports <iframe> elements without a title prop. | JSX | logical |
iframeTitles | Astro | logical |
imageAltRedundancy | Astro | logical |
imageAltTextsReports images without alternative text. | Markdown | logical |
imageContentsReports images with empty URLs or only empty fragments. | Markdown | logical |
imgNatives | Next.js | logical |
immediateMutations | TypeScript | stylistic |
immutability | React | logical |
implicitCoercions | Vue | stylistic |
implicitGlobalsPrevents implicit global variable declarations in browser scripts. | Browser | logical |
impliedEvalsReports using string arguments in setTimeout, setInterval, setImmediate, execScript, or the Function constructor. | TypeScript | logical |
importAssignments | TypeScript | javascript |
importAttributesOrder | TypeScript | (none) |
importCycles | TypeScript | stylistic |
importDeclarationsFirst | TypeScript | (none) |
importDeclarationsOrder | TypeScript | (none) |
importDuplicates | TypeScript | logical |
importedNamespaceDynamicAccessesDisallow computed member access on imported namespace identifiers. | Performance | logical |
importEmptyBlocksReports empty named import blocks. | TypeScript | logical |
importExtensions | TypeScript | (none) |
importExtraneousDependencies | TypeScript | none |
importFileExtensions | Node.js | (none) |
importMetaProperties | Nuxt | stylistic |
importSelf | TypeScript | logical |
importsInMocks | Vitest | (none) |
importsOrder | TypeScript | (none) |
importSpecifiersOrder | TypeScript | (none) |
importTypeSideEffectsReports imports that use inline type qualifiers on all specifiers when a top-level type qualifier should be used instead. | TypeScript | logical |
importUnnecessaryPathSegments | TypeScript | stylistic |
incompatibleLibraries | React | logical |
indexedObjectTypesReports indexed object types that don't match the configured style. | TypeScript | stylistic |
infiniteReactivityLoops | Svelte | logical |
inlineScriptId | Next.js | logical |
inlineStyles | Svelte | logical (strict) |
innerHTMLProps | SolidJS | logical (strict) |
inputCheckedMutability | JSX | logical |
inspectRunes | Svelte | logical |
instanceOfArraysReports using instanceof Array instead of Array.isArray(). | TypeScript | logical |
interactiveElementRolesReports interactive elements with non-interactive ARIA roles. | JSX | logical |
interactiveElementRoles | Astro | logical |
interactiveElementsFocusableReports interactive elements that are not focusable via keyboard. | JSX | logical |
interactiveElementsFocusable | Astro | logical |
interfacesOrder | TypeScript | sorting |
internalModules | TypeScript | (none) |
intersectionTypesOrder | TypeScript | sorting |
invalidCodeLinesReports cases for invalid code that isn't formatted across lines. | Flint | logical |
invalidThis | TypeScript | javascript |
invalidVoidTypes | TypeScript | logical (strict) |
irregularWhitespace | YAML | stylistic |
irregularWhitespacesReports irregular whitespace characters that can cause issues with code parsing and display. | TypeScript | logical |
isDirectiveValidity | Vue | logical |
isNaNComparisonsReports comparisons with NaN, which should use Number.isNaN() instead. | TypeScript | logical |
isolatedFunctions | TypeScript | logical |
iterableKeys | React | logical (strict) |
jsdocAccessTags | TypeScript | stylistic |
jsdocAnyTypes | TypeScript | logical |
jsdocAsterisks | TypeScript | stylistic (strict) |
jsdocEmptyBlocks | TypeScript | stylistic |
jsdocEmptyTags | TypeScript | stylistic |
jsdocExampleCodeValidity | TypeScript | logical |
jsdocFunctionTypes | TypeScript | logical |
jsdocImplementsTags | TypeScript | stylistic |
jsdocImportTags | TypeScript | stylistic |
jsdocInformativeDocs | TypeScript | stylistic (strict) |
jsdocInlineTagEscapes | TypeScript | stylistic |
jsdocMisleadingBlocks | TypeScript | stylistic (strict) |
jsdocMultilineBlocks | TypeScript | stylistic (strict) |
jsdocNextDescriptions | TypeScript | stylistic |
jsdocNextTypes | TypeScript | logical |
jsdocParameterDescriptionHyphens | TypeScript | stylistic (strict) |
jsdocParameterNamePresence | TypeScript | stylistic |
jsdocParameterNames | TypeScript | stylistic |
jsdocPropertyNamePresence | TypeScript | stylistic |
jsdocPropertyNames | TypeScript | stylistic |
jsdocRedundantTypes | TypeScript | stylistic |
jsdocRejects | TypeScript | stylistic |
jsdocRequiredTags | TypeScript | stylistic |
jsdocTagNames | TypeScript | stylistic (strict) |
jsdocTagsOrder | TypeScript | sorting |
jsdocTemplateDescriptions | TypeScript | stylistic |
jsdocTemplateNames | TypeScript | stylistic |
jsdocThrowDescriptions | TypeScript | stylistic |
jsdocThrowTypes | TypeScript | logical |
jsdocTypeChecks | TypeScript | logical |
jsdocTypeScriptEmptyObjectTypes | TypeScript | logical |
jsdocTypeScriptFunctionTypes | TypeScript | stylistic |
jsdocTypeScriptMethodSignatureStyles | TypeScript | stylistic |
jsdocTypeScriptUnnecessaryTemplateExpressions | TypeScript | stylistic |
jsdocTypesSyntax | TypeScript | stylistic |
jsdocUnnecessaryReturns | TypeScript | stylistic |
jsdocUnnecessaryYields | TypeScript | stylistic |
jsdocValidTypes | TypeScript | stylistic |
jsdocValues | TypeScript | stylistic |
jsdocYieldDescriptions | TypeScript | stylistic |
jsdocYields | TypeScript | stylistic |
jsdocYieldTypes | TypeScript | logical |
jsonKeysOrder | JSON | sorting |
jsxVariableUses | Vue | logical |
keyboardEventKeysPrefer KeyboardEvent.key over deprecated properties like keyCode, charCode, and which. | Browser | logical |
keyDuplicatesReports unnecessary duplicate keys that override previous values. | JSON | logical |
keyDuplicates | Vue | logical |
keyNormalizationReports object keys that are not normalized using Unicode normalization forms. | JSON | logical |
keysOrder | Vue | sorting |
keyValidity | Vue | logical |
keywordsPresenceEnforces that the keywords property is present. | PackageJSON | (none) |
keywordsValidityEnforces that the keywords property is valid. | PackageJSON | logical |
kitPagePropNames | Svelte | logical |
labelAssociatedControlsReports <label> elements without an associated control element. | JSX | logical |
labelAssociatedControls | Astro | logical |
labelReferencesReports missing label references. | Markdown | logical |
labelReferenceValidityReports invalid label references with whitespace. | Markdown | logical |
langValidityReports invalid lang attribute values. | JSX | logical (strict) |
langValidity | Astro | logical |
legacyOctalLiterals | JSON | logical |
libcPresenceEnforces that the libc property is present. | PackageJSON | (none) |
libcValidityEnforces that the libc property is valid. | PackageJSON | logical |
licensePresenceEnforces that the license property is present. | PackageJSON | logical |
licenseValidityEnforces that the license property is valid. | PackageJSON | logical |
lifecyclesAfterAwaits | Vue | logical |
linkContentsReports links with empty URLs or only empty fragments. | Markdown | logical |
linkDescriptions | Markdown | logical (strict) |
linkFragmentsReports link fragments that don't exist in the document. | Markdown | logical |
literalConstructorWrappersPrefers literal syntax over constructor function calls for primitive values. | TypeScript | stylistic |
loneTemplates | Vue | logical (strict) |
loopAwaitsReports using await expressions inside loops. | Performance | logical |
loopFunctionsReports function declarations and expressions inside loops that reference variables modified by the loop. | Performance | logical |
macroVariableNames | Vue | stylistic |
mainPresenceEnforces that the main property is present. | PackageJSON | (none) |
mainValidityEnforces that the main property is valid. | PackageJSON | logical |
manPresenceEnforces that the man property is present. | PackageJSON | (none) |
manualDomManipulations | Svelte | logical |
manualEventListeners | Svelte | logical (strict) |
manualMemoizationPreservations | React | logical |
manValidityEnforces that the man property is valid. | PackageJSON | logical |
mapsOrder | TypeScript | sorting |
mathMethodsPrefer modern Math methods over legacy patterns. | TypeScript | stylistic (strict) |
meaninglessVoidOperatorsReports using the void operator on expressions that are already void or undefined. | TypeScript | logical |
mediaCaptionsReports media elements without captions. | JSX | logical |
mediaCaptions | Astro | logical |
mediaSyntaxReversalsReports reversed link and image syntax in Markdown. | Markdown | stylistic |
memoDirectiveValidity | Vue | logical |
messagePhrases | Flint | logical (strict) |
methodSignatureStyles | TypeScript | stylistic |
misleadingVoidExpressionsRequire expressions of type void to appear in statement position. | TypeScript | logical |
missingPlaceholdersReports context.report() calls missing data for message placeholders. | Flint | logical |
misusedPromises | TypeScript | logical |
mockedFunctionInstances | Vitest | stylistic (strict) |
mockTypeParameters | Vitest | stylistic (strict) |
modelDefinitionValidity | Vue | logical |
modelDirectiveArguments | Vue | logical |
modelDirectives | Vue | stylistic |
modelDirectiveValidity | Vue | logical |
moduleAssignments | Next.js | javascript |
moduleExportImports | TypeScript | (none) |
modulePresenceEnforces that the module property is present. | PackageJSON | (none) |
modulesOrder | TypeScript | sorting |
moduleSpecifierListsRequire non-empty specifier lists in import and export statements. | TypeScript | logical |
moduleSyntaxDeclarations | TypeScript | (none) |
moduleValidityEnforces that the module property is valid. | PackageJSON | logical |
mouseEventKeyEventsReports mouse events without corresponding keyboard events. | JSX | logical |
mouseEventKeyEvents | Astro | logical |
multilineAmbiguitiesReports ambiguous multiline expressions that could be misinterpreted. | TypeScript | stylistic |
multilineStrings | JSON | logical |
multipleEmptyLines | YAML | (none) |
mustacheObjects | Svelte | logical |
namedDefaultExportsReports anonymous functions and classes as the default export. | TypeScript | stylistic (strict) |
namedDefaultImports | TypeScript | (none) |
namedDefaultMembers | TypeScript | (none) |
namedDefaultSpecifiers | TypeScript | (none) |
namedExports | TypeScript | (none) |
namePresenceEnforces that the name property is present. | PackageJSON | logical |
nameProperties | Vue | stylistic |
namespaceDeclarationsReports using legacy namespace declarations. | TypeScript | logical |
namespaceImplicitAmbientImportsReports declared namespaces that implicitly export all members. | TypeScript | stylistic (strict) |
namespaceKeywordsReports using module keyword instead of namespace for TypeScript namespaces. | TypeScript | stylistic |
namespaceValidity | SolidJS | javascript |
nameValidityEnforces that the name property is valid. | PackageJSON | logical |
nativeObjectExtensionsReports extending the prototype of native JavaScript objects. | TypeScript | javascript |
nativePromises | TypeScript | (none) |
negatedConditions | Vue | stylistic |
negatedIfConditions | Vue | stylistic |
negativeIndexLengthMethodsPrefer negative index over .length - index for at, slice, splice, and similar methods. | TypeScript | stylistic (strict) |
negativeZeroComparisonsReports comparisons with -0 that may not behave as expected. | TypeScript | logical |
nestedStandaloneIfsReports if statements that are the only statement inside an else block or inside another if without an else. | TypeScript | stylistic |
newDefinitionsReports misleading constructor and new definitions in interfaces and classes. | TypeScript | logical |
newExpressionsReports standalone new expressions that don't use the constructed object. | TypeScript | logical |
newNativeNonConstructorsDisallows using new with global non-constructor functions like Symbol and BigInt. | TypeScript | javascript |
nextDocumentOutsidePage | Next.js | logical |
nextScriptInHeads | Next.js | logical |
nextScriptInteractiveOutsideDocument | Next.js | logical |
nextTickStyles | Vue | stylistic |
nextTickValidity | Vue | logical |
nodeAppendMethodsPrefer modern DOM append/prepend methods over appendChild/insertBefore. | Browser | logical (strict) |
nodeBuiltinImports | TypeScript | (none) |
nodeDatasetAttributesPrefer using element.dataset over getAttribute/setAttribute for data-* attributes. | Browser | logical (strict) |
nodeModificationMethodsPrefer modern DOM APIs like .replaceWith() and .before() over legacy methods like .replaceChild() and .insertBefore(). | Browser | logical (strict) |
nodePropertyInChecksDisallows using the in operator to check properties on TypeScript nodes. | Flint | logical |
nodeProtocolsPrefer the node: protocol prefix for Node.js built-in modules for clarity and consistency. | Node.js | logical |
nodeQueryMethodsPrefer modern querySelector and querySelectorAll over legacy DOM query methods. | Browser | stylistic (strict) |
nodeRemoveMethodsPrefer the modern node.remove() method over the legacy parentNode.removeChild(node) API. | Browser | logical (strict) |
nodeTestImportsReports importing from node:test. | Vitest | logical |
nodeTextContentsPrefer textContent over innerText for DOM nodes. | Browser | logical (strict) |
nonInteractiveElementInteractionsReports non-interactive elements with interactive event handlers. | JSX | logical |
nonInteractiveElementInteractions | Astro | logical |
nonInteractiveElementRolesReports non-interactive elements with interactive ARIA roles. | JSX | logical |
nonInteractiveElementRoles | Astro | logical |
nonInteractiveElementTabIndexesReports non-interactive elements with positive or zero tabIndex values. | JSX | logical |
nonInteractiveElementTabIndexes | Astro | logical |
nonNullableTypeAssertionsReports type assertions that can be replaced with non-null assertions. | TypeScript | stylistic |
nonNullAssertedNullishCoalescesReports non-null assertions on the left side of nullish coalescing operators. | TypeScript | logical (strict) |
nonNullAssertedOptionalChainsReports non-null assertions on optional chain expressions. | TypeScript | logical |
nonNullAssertionPlacementReports confusing placement of non-null assertions next to comparison or assignment operators. | TypeScript | stylistic (strict) |
nonNullAssertions | TypeScript | logical (strict) |
nonOctalDecimalEscapesReports non-octal decimal escape sequences (\8 and \9) in string literals. | TypeScript | logical |
nullishCheckStyleEnforces consistent equality operator usage when comparing with null or undefined. | TypeScript | (none) |
nullishCoalescingOperatorsPrefer nullish coalescing operator (??) over logical OR (||) for nullish values. | TypeScript | stylistic |
numberMethodRangesReports when number method arguments are outside their valid range. | TypeScript | logical |
numberStaticMethodsReports using legacy global functions instead of Number static methods. | TypeScript | logical (strict) |
numericErasingOperationsReports operations that always result in zero, such as multiplication by zero. | TypeScript | logical |
numericLiteralParsingReports parseInt calls with binary, hexadecimal, or octal strings that can be replaced with numeric literals. | TypeScript | stylistic |
numericPrecisionReports numeric literals that lose precision when converted to JavaScript numbers. | TypeScript | logical |
numericSeparatorGroupsReports numeric literals with inconsistent separator grouping. | TypeScript | stylistic (strict) |
numericTrailingZerosReports trailing zeros in numeric values. | YAML | stylistic (strict) |
nuxtConfigKeysOrder | Nuxt | sorting |
nuxtConfigTestKeys | Nuxt | logical |
objectAssignSpreadsPrefer object spread syntax over Object.assign() when the first argument is an object literal. | TypeScript | stylistic |
objectCallsPrefer {} object literal notation or Object.create instead of calling or constructing Object. | TypeScript | logical |
objectEntriesMethodsPrefer Object.fromEntries() over reduce patterns that build objects from key-value pairs. | TypeScript | stylistic (strict) |
objectHasOwnsPrefer Object.hasOwn() over Object.prototype.hasOwnProperty.call() for checking own properties. | TypeScript | stylistic |
objectKeyDuplicatesReports unnecessary duplicate keys that override previous values. | TypeScript | javascript |
objectProtoReports using the deprecated proto property to access or modify an object's prototype. | TypeScript | javascript |
objectPrototypeBuiltInsReports direct calls to Object.prototype methods on object instances. | TypeScript | logical |
objectShorthandObject property and method definitions can use shorthand syntax when the key matches the value identifier or when a function expression is assigned. | TypeScript | stylistic |
objectShorthands | Vue | stylistic |
objectsOrder | TypeScript | sorting |
objectSpreadUnnecessaryFallbacksReports empty object fallbacks in object spread expressions that have no effect. | TypeScript | logical |
objectTypeDefinitionsPrefer interface declarations over type aliases for object types. | TypeScript | stylistic |
objectTypesOrder | TypeScript | sorting |
octalEscapesReports using octal escape sequences in string literals. | TypeScript | javascript |
octalNumbersReports using legacy octal numeric literals. | TypeScript | javascript |
olPrefixes | Markdown | stylistic (strict) |
onceDirectiveValidity | Vue | logical |
onDirectiveValidity | Vue | logical |
onEventHyphens | Vue | stylistic |
onEventStyles | Vue | stylistic |
onExactModifiers | Vue | logical |
onHandlerStyles | Vue | stylistic |
operatorAssignmentShorthandPrefer assignment operator shorthand where possible. | TypeScript | stylistic |
optimizedStyleAttributes | Svelte | logical (strict) |
optionalChainOperators | TypeScript | stylistic |
optionalDependenciesPresenceEnforces that the optionalDependencies property is present. | PackageJSON | (none) |
optionalDependenciesValidityEnforces that the optionalDependencies property is valid. | PackageJSON | logical |
optionalPropDefaults | Vue | logical |
osPresenceEnforces that the os property is present. | PackageJSON | (none) |
osValidityEnforces that the os property is valid. | PackageJSON | logical |
overloadSignaturesAdjacentRequire that function overload signatures be consecutive. | TypeScript | stylistic |
packageCollectionsOrder | PackageJSON | sorting |
packageManagerPresenceEnforces that the packageManager property is present. | PackageJSON | (none) |
packageManagerValidityEnforces that the packageManager property is valid. | PackageJSON | logical |
pageLoaders | Svelte | logical |
pageMetaRuntimeValues | Nuxt | logical |
parameterPropertyAssignment | TypeScript | logical |
parameterReassignmentsDisallow reassignment of function parameters. | TypeScript | logical |
parentRelativeImports | TypeScript | (none) |
parseIntRadixesReports parseInt calls that are missing or have an invalid radix parameter. | TypeScript | logical |
peerDependenciesInstallationEnforces that peer dependencies are installed through devDependencies. | PackageJSON | logical |
peerDependenciesMetaPresenceEnforces that the peerDependenciesMeta property is present. | PackageJSON | (none) |
peerDependenciesMetaRelationshipEnforces that any dependencies declared in peerDependenciesMeta are also defined in the package's peerDependencies. | PackageJSON | logical |
peerDependenciesMetaValidityEnforces that the peerDependenciesMeta property is valid. | PackageJSON | logical |
peerDependenciesPresenceEnforces that the peerDependencies property is present. | PackageJSON | (none) |
peerDependenciesValidityEnforces that the peerDependencies property is valid. | PackageJSON | logical |
plainScalarsPrefer plain style scalars over quoted scalars. | YAML | stylistic (strict) |
pluginRuleOrderingReports Flint plugin rules arrays that are not sorted alphabetically. | Flint | stylistic (strict) |
plusOperands | TypeScript | logical |
polyfillDuplicates | Next.js | logical |
precisionLoss | Vue | logical |
preDirectiveValidity | Vue | logical |
prerenderExportsOutsidePages | Astro | logical |
privatePackagePropertiesReports package.json properties that do not apply to private packages. | PackageJSON | (none) |
privatePresenceEnforces that the private property is present. | PackageJSON | (none) |
privateValidityEnforces that the private property is valid. | PackageJSON | logical |
processExitsPrevent direct use of process.exit() for better error handling and testing. | Node.js | logical |
promiseCallbackCreations | TypeScript | (none) |
promiseCatchReturns | TypeScript | (none) |
promiseFunctionAsync | TypeScript | stylistic |
promiseMethodSingleArrayArguments | TypeScript | logical |
promiseMultipleResolutions | TypeScript | (none) |
promiseParameterValidity | TypeScript | (none) |
promiseRejectErrors | TypeScript | logical |
promiseReturns | TypeScript | (none) |
promiseReturnWrappers | TypeScript | (none) |
promiseSettleAssertions | Vitest | stylistic |
promiseSpecMethods | TypeScript | (none) |
promiseStaticConstructors | TypeScript | (none) |
propComments | Vue | stylistic |
propDestructures | SolidJS | logical |
propDuplicatesDisallow duplicate props in JSX elements. | JSX | logical |
propertyAccessNotationReports bracket notation property access when dot notation can be used. | TypeScript | stylistic |
propertyOrder | PackageJSON | sorting |
propertyValidity | React | javascript |
propLimits | Vue | stylistic |
propNameCasing | Vue | stylistic |
propNameValidity | Vue | logical |
propRequiredAndDefaults | Vue | logical (strict) |
propsOrder | JSX | sorting |
propTypeConstructors | Vue | logical |
propTypes | React | javascript |
propTypes | Vue | logical |
publishConfigPresenceEnforces that the publishConfig property is present. | PackageJSON | (none) |
publishConfigRedundancyReports publishConfig.access fields that do not affect unscoped packages. | PackageJSON | logical |
publishConfigValidityEnforces that the publishConfig property is valid. | PackageJSON | logical |
pureComponentShouldUpdateDefinitions | JSX | logical (strict) |
purity | React | logical |
quotes | YAML | (none) |
reactiveReassignments | Svelte | logical |
reactivity | SolidJS | logical |
reactLikeDeps | SolidJS | javascript |
reactLikeProps | SolidJS | javascript |
recursionOnlyArgumentsReports function parameters that are only used in recursive calls. | TypeScript | logical |
redundantTypeConstituentsReports union and intersection type constituents that are redundant or override other types. | TypeScript | logical |
referenceLikeUrlsReports resource links/images with URLs that match definition identifiers. | Markdown | logical |
refObjectReactivityLoss | Vue | logical |
refOperands | Vue | logical |
refs | React | logical |
refStrings | React | logical |
regexAllGlobalFlagsReports matchAll() and replaceAll() calls with regex arguments missing the global flag. | TypeScript | logical |
regexAmbiguousInvalidityReports regex patterns that use ambiguous or invalid syntax from Annex B. | TypeScript | logical |
regexCharacterClassesReports regex alternations that can be simplified to character classes. | TypeScript | stylistic (strict) |
regexCharacterClassRangesReports character class elements that can be simplified to ranges. | TypeScript | stylistic |
regexCharacterClassSetOperationsReports lookarounds that can be replaced with character class set operations. | TypeScript | stylistic |
regexConciseCharacterClassNegationsReports negated character classes that can use shorthand escapes. | TypeScript | stylistic |
regexContradictoryAssertionsReports elements in regular expressions that contradict assertions. | TypeScript | logical |
regexControlCharacterEscapesReports control characters that are not escaped using standard escape sequences. | TypeScript | logical |
regexControlCharactersReports control characters in regular expressions. | TypeScript | logical |
regexDigitMatchersReports character classes with multiple adjacent characters that could use a range instead. | TypeScript | stylistic (strict) |
regexDollarEscapesReports replacement strings with unescaped $ that should use $$. | TypeScript | stylistic |
regexDuplicateCharacterClassCharactersReports duplicate characters in regular expression character classes. | TypeScript | logical |
regexDuplicateDisjunctions | TypeScript | logical |
regexEmptyAlternativesReports empty alternatives in regular expressions that may indicate a mistake. | TypeScript | logical |
regexEmptyCapturingGroupsReports capturing groups that only capture empty strings. | TypeScript | logical |
regexEmptyCharacterClassesReports character classes that match no characters. | TypeScript | logical |
regexEmptyGroupsReports empty groups in regular expressions. | TypeScript | logical |
regexEmptyLazyQuantifiersReports lazy quantifiers at the end of regular expressions. | TypeScript | logical |
regexEmptyLookaroundsAssertionsReports empty lookahead and lookbehind assertions in regular expressions. | TypeScript | logical |
regexEmptyStringLiteralsReports empty string literals in character classes. | TypeScript | logical |
regexEscapeBackspacesReports escape backspace ([\b]) in character classes. | TypeScript | stylistic |
regexExecutorsReports String.prototype.match calls that can be replaced with RegExp.prototype.exec. | TypeScript | stylistic (strict) |
regexFlagsOrder | TypeScript | sorting |
regexGraphemeStringLiteralsReports string literals inside character classes with the v flag that contain multiple graphemes. | TypeScript | stylistic (strict) |
regexHexadecimalEscapesReports regex character escapes that can be expressed more consistently using hexadecimal escapes. | TypeScript | stylistic (strict) |
regexIgnoreCaseFlagsReports regex patterns that can be simplified by using the i (ignore case) flag. | TypeScript | logical |
regexInvisibleCharactersReports invisible characters in regex patterns that should use escape sequences instead. | TypeScript | logical |
regexLetterCasingReports inconsistent letter casing in regex sequences. | TypeScript | stylistic (strict) |
regexListsOrder | TypeScript | sorting |
regexLiteralsUse a regular expression literal when the pattern is static. | TypeScript | logical |
regexLiterals | JSON | logical |
regexLookaroundAssertionsReports capturing groups at pattern boundaries that can be replaced with lookaround assertions. | TypeScript | stylistic (strict) |
regexLookaroundQuantifierOptimizationsReports non-constant quantifiers in lookaround assertions that could be simplified. | TypeScript | logical |
regexMatchNotationReports inconsistent notations for matching any character in regular expressions. | TypeScript | stylistic (strict) |
regexMisleadingCapturingGroupsReports capturing groups that capture less text than their pattern suggests. | TypeScript | logical |
regexMisleadingQuantifiersReports quantifiers whose minimum implies they must match but whose element can match empty. | TypeScript | logical |
regexMisleadingUnicodeCharactersReports characters in regex character classes that appear as single visual characters but are made of multiple code points. | TypeScript | logical |
regexNamedBackreferencesReports backreferences that do not use the name of their referenced capturing group. | TypeScript | stylistic (strict) |
regexNamedCaptureGroupsReports capturing groups in regular expressions that do not have a name. | TypeScript | (none) |
regexNamedReplacementsReports indexed references in replacement strings that should use named references. | TypeScript | stylistic (strict) |
regexNonStandardFlagsReports non-standard regular expression flags. | TypeScript | logical |
regexObscureRangesReports obscure character ranges in regular expressions. | TypeScript | logical |
regexOctalEscapesReports octal escape sequences in regular expressions. | TypeScript | logical |
regexPlusQuantifiersReports quantifiers {1,} in regular expressions that should use + instead. | TypeScript | stylistic (strict) |
regexPredefinedAssertionsReports regex lookarounds that can be replaced with predefined assertions. | TypeScript | stylistic |
regexQuantifierOptimizations | TypeScript | logical |
regexQuestionQuantifiersReports quantifiers {0,1} in regular expressions that should use ? instead. | TypeScript | stylistic (strict) |
regexRepeatQuantifiersReports consecutive identical elements in regular expressions that should use quantifiers. | TypeScript | stylistic |
regexResultArrayGroupsReports indexed access on regex result arrays when named capturing groups should be used. | TypeScript | stylistic (strict) |
regexSetOperationOptimizationsReports set operations in regular expressions that can be simplified. | TypeScript | logical |
regexStandaloneBackslashesReports standalone backslashes in regex patterns that look like incomplete escape sequences. | TypeScript | logical |
regexStarQuantifiersReports quantifiers {0,} in regular expressions that should use * instead. | TypeScript | stylistic (strict) |
regexSuperLinearBacktrackingReports regular expressions with exponential or polynomial backtracking. | TypeScript | logical |
regexSuperLinearMovesReports quantifiers that can cause quadratic regex matching time. | TypeScript | logical |
regexTestMethodsReports match() and exec() calls that should use RegExp.prototype.test() for boolean checks. | TypeScript | stylistic |
regexUnicodeCodepointEscapesReports surrogate pair escapes in regular expressions that can be replaced with Unicode codepoint escapes. | TypeScript | stylistic (strict) |
regexUnicodeEscapesEnforces consistent Unicode escape style in regex patterns by preferring codepoint escapes. | TypeScript | (none) |
regexUnicodeFlagRequire regex patterns to have the unicode ('u') or unicodeSets ('v') flag for proper Unicode character handling. | TypeScript | (none) |
regexUnicodePropertiesReports inconsistent Unicode property names in regular expressions. | TypeScript | stylistic |
regexUnnecessaryAssertionsReports assertions in regular expressions that always reject. | TypeScript | logical |
regexUnnecessaryBackreferencesReports backreferences in regular expressions that will always match empty or fail. | TypeScript | logical |
regexUnnecessaryCharacterClassesReports character classes that wrap a single element that does not require brackets. | TypeScript | logical |
regexUnnecessaryCharacterRangesReports character class ranges that span only one or two characters. | TypeScript | logical |
regexUnnecessaryDisjunctionsReports single-character alternatives in string disjunctions. | TypeScript | logical |
regexUnnecessaryDollarReplacementsReports replacement string references to capturing groups that do not exist in the pattern. | TypeScript | logical |
regexUnnecessaryEscapesReports unnecessary escape sequences in regular expressions. | TypeScript | stylistic |
regexUnnecessaryLookaroundAssertionsReports unnecessary nested lookaround assertions in regular expressions. | TypeScript | logical |
regexUnnecessaryNestedAssertionsReports trivially nested assertions in regular expressions that can be simplified. | TypeScript | logical |
regexUnnecessaryNestedQuantifiersReports trivially nested quantifiers in regular expressions that can be simplified. | TypeScript | logical |
regexUnnecessaryNonCapturingGroupsReports non-capturing groups that can be removed without changing the meaning of the regex. | TypeScript | stylistic (strict) |
regexUnnecessaryNumericQuantifiersReports numeric quantifiers like '{n,n}' that can be simplified to '{n}'. | TypeScript | logical |
regexUnnecessaryOptionalAssertionsReports assertions inside optional quantifiers that have no effect. | TypeScript | logical |
regexUnnecessaryReferentialBackreferencesReports backreferences that may reference a capturing group that was not matched. | TypeScript | logical |
regexUnnecessarySetOperandsReports unnecessary operands in regular expression character class set operations. | TypeScript | logical |
regexUnusedCapturingGroupsReports capturing groups in regular expressions that are never referenced. | TypeScript | logical |
regexUnusedFlagsReports regular expression flags that have no effect on the pattern. | TypeScript | logical |
regexUnusedLazyQuantifiersReports lazy quantifiers that have no effect because the quantifier is constant. | TypeScript | logical |
regexUnusedQuantifiersReports quantifiers that match exactly once, making them unnecessary. | TypeScript | logical |
regexValidityReports invalid regular expressions. | TypeScript | logical |
regexWordMatchersReports character classes that match word characters and could use \w or \W instead. | TypeScript | stylistic (strict) |
regexZeroQuantifiersReports quantifiers with a maximum of zero, which are useless. | TypeScript | logical |
relativePackageImports | TypeScript | (none) |
removeEventListenerExpressionsDisallow inline function expressions in removeEventListener calls. | Browser | logical |
renderedLiteralLeaks | JSX | logical (strict) |
renderReturns | Vue | logical |
renderReturns | JSX | logical |
renderSetStates | React | logical |
repositoryDirectoryValidity | PackageJSON | logical |
repositoryPresenceEnforces that the repository property is present. | PackageJSON | logical |
repositoryShorthandEnforces using an object locator for repository. | PackageJSON | logical |
repositoryValidityEnforces that the repository property is valid. | PackageJSON | logical |
requireImportsReports CommonJS require() imports in favor of ES module imports. | TypeScript | logical |
responseJsonMethodsPrefer Response.json() over new Response(JSON.stringify(...)) for JSON responses. | TypeScript | stylistic |
responseStaticJsonMethods | TypeScript | stylistic |
restrictedBindDirectives | Vue | logical |
restrictedBlocks | Vue | logical |
restrictedCallsAfterAwaits | Vue | logical |
restrictedClasses | Vue | logical |
restrictedComponentNames | Vue | logical |
restrictedComponentNamesLegacy | Vue | logical |
restrictedComponentOptions | Vue | logical |
restrictedComponentProps | React | (none) |
restrictedCustomEvents | Vue | logical |
restrictedDomProps | React | (none) |
restrictedElements | React | (none) |
restrictedGlobals | TypeScript | (none) |
restrictedHtmlElements | Vue | logical |
restrictedIdentifiersDisallows specific identifier names in binding positions. | TypeScript | (none) |
restrictedImportPaths | TypeScript | (none) |
restrictedImports | TypeScript | (none) |
restrictedImports | Node.js | (none) |
restrictedMatchers | Vitest | (none) |
restrictedOnDirectives | Vue | logical |
restrictedProperties | TypeScript | (none) |
restrictedProps | Vue | logical |
restrictedPropTypes | React | (none) |
restrictedStaticAttributes | Vue | logical |
restrictedSyntax | TypeScript | (none) |
restrictedSyntaxes | Vue | logical |
restrictedTypes | TypeScript | (none) |
restrictedViMethods | Vitest | (none) |
returnAssignmentsReports using assignment expressions in return statements. | TypeScript | stylistic |
returnAwaitPromises | TypeScript | logical |
returnThisTypesEnforce that this is used when only this type is returned. | TypeScript | logical (strict) |
returnVoidSafety | TypeScript | logicalStrict |
roleRedundanciesReports redundant ARIA roles on elements with implicit roles. | JSX | logical |
roleRedundancies | Astro | logical |
roleRequiredAriaPropsReports ARIA roles missing their required ARIA properties. | JSX | logical |
roleRequiredAriaProps | Astro | logical |
roleSupportedAriaPropsReports ARIA properties that are not supported by an element's role. | JSX | logical |
roleSupportedAriaProps | Astro | logical |
roleTagsReports ARIA roles that have semantic HTML element equivalents. | JSX | logical (strict) |
roleTags | Astro | logical |
rootIfDirectives | Vue | logical |
ruleCreationMethodsReports plugin rules created directly with language instead of through RuleCreator. | Flint | logical |
ruleDescriptions | Flint | logical |
rulePresets | Flint | logical |
rulesOfHooks | React | logical |
ruleURLs | Flint | logical |
scopePropsReports scope props on non-th elements. | JSX | logical |
scopeProps | Astro | logical |
scriptSetupExports | Vue | logical |
scriptsNameCasingEnforce that names for scripts properties are in kebab case. | PackageJSON | stylistic |
scriptsPresenceEnforces that the scripts property is present. | PackageJSON | (none) |
scriptsValidityEnforces that the scripts property is valid. | PackageJSON | logical |
scriptSyncs | Next.js | logical |
scriptUrlsReports javascript: URLs that can act as a form of eval. | Browser | logical |
scriptUrls | JSX | logical |
selectorConsistency | Svelte | stylistic (strict) |
selfAssignmentsReports self-assignments which have no effect and are likely errors. | TypeScript | logical |
selfClosingHtmlElements | Svelte | stylistic (strict) |
selfClosingTags | JSX | stylistic |
separateStaticClasses | Vue | stylistic |
sequencesReports using the comma operator in expressions. | TypeScript | javascript |
setDirectiveChildContentConflicts | Astro | logical |
setHasExistenceChecks | TypeScript | stylistic (strict) |
setHtmlDirectivesReports using Astro's set:html directive, which injects content without escaping. | Astro | security |
setSizeLengthChecksPrefer Set.size over spreading into an array and accessing .length. | TypeScript | stylistic (strict) |
setsOrder | TypeScript | sorting |
setterReturnsReports return statements with values inside setters. | TypeScript | javascript |
setTextDirectives | Astro | logical |
setupPropsReactivityLoss | Vue | logical |
shadowedRestrictedNamesReports variable declarations that shadow JavaScript's restricted names. | TypeScript | javascript |
shadows | TypeScript | stylistic |
shebangs | Node.js | (none) |
shorthandAttributes | Svelte | stylistic (strict) |
shorthandDirectives | Svelte | stylistic (strict) |
shorthandStylePropertyOverrides | Svelte | logical |
showDirectiveValidity | Vue | logical |
showWhens | SolidJS | stylistic |
sideEffectsPresenceEnforces that the sideEffects property is present. | PackageJSON | logical |
sideEffectsValidityEnforces that the sideEffects property is valid. | PackageJSON | logical |
simpleConditionOrder | TypeScript | stylistic |
singleEventPayloads | Vue | stylistic |
singleVariableDeclarationsEnforces one variable per declaration statement. | TypeScript | logical |
sizeComparisonOperatorsEnforce consistent style for .length and .size checks. | TypeScript | stylistic (strict) |
sliceEndLengths | TypeScript | stylistic |
slotArguments | Vue | logical (strict) |
slotDirectiveValidity | Vue | logical |
slotNameCasing | Vue | stylistic |
slotsAsFunctions | Vue | logical |
slotStyles | Vue | stylistic |
snapshotLocalTextContexts | Vitest | logical |
solidImports | SolidJS | logical |
sparseArraysReports array literals with holes (sparse arrays). | TypeScript | logical |
sparseArrays | JSON | logical |
sparseArrays | Vue | logical |
specialElementPrefixes | Svelte | logical |
spreadAccumulatorsReports spread operations that accumulate values in loops, causing quadratic time complexity. | Performance | logical |
spreadSyntaxes | TypeScript | stylistic |
statelessComponents | JSX | stylistic |
stateMutations | React | logical |
staticClassNamesOrder | Vue | sorting |
staticComponents | React | logical |
staticElementInteractionsReports static elements with event handlers that lack ARIA roles. | JSX | logical |
staticElementInteractions | Astro | logical |
staticInlineStyles | Vue | stylistic |
staticMemberOnlyClassesReports classes that only contain static members. | TypeScript | stylistic (strict) |
strictBooleanExpressions | TypeScript | logical |
strictEqualityOperators | Vue | logical |
stringCaseMismatchesReports string case method calls compared against literals with mismatched casing. | TypeScript | logical |
stringCodePointsReports usage of charCodeAt and fromCharCode instead of their codePoint equivalents. | TypeScript | logical (strict) |
stringMappingKeysEnforces mapping keys to be strings. | YAML | logical (strict) |
stringSliceMethodsReports usage of substring instead of slice for string operations. | TypeScript | stylistic (strict) |
stringStartsEndsWithReports regex patterns that can be replaced with endsWith or startsWith. | TypeScript | stylistic |
structuredCloneMethodsReports JSON.parse(JSON.stringify()) patterns that can use structuredClone. | TypeScript | stylistic (strict) |
styleAttributes | Vue | logical |
styleDirectives | Svelte | stylistic (strict) |
styledJsxInDocuments | Next.js | logical |
stylePropObjects | React | logical (strict) |
stylePropValidity | SolidJS | javascript |
suggestionMessageIdMatches | Flint | logical |
svelteInternalImports | Svelte | logical |
svelteReactivityClasses | Svelte | logical |
svgTitlesReports <svg> elements without a <title> child element. | JSX | logical |
switchCaseBreakPositions | TypeScript | stylistic |
switchCasesOrder | TypeScript | sorting |
symbolDescriptionsReports Symbol() calls without description arguments. | TypeScript | stylistic |
tabIndexPositiveValuesReports positive tabIndex values. | JSX | logical |
tabIndexPositiveValues | Astro | logical |
tableColumnCountsReports table rows with column counts that don't match the header. | Markdown | logical |
targetBlankLinks | Svelte | security (strict) |
templateBareStrings | Vue | logical |
templateDepthLimits | Vue | stylistic |
templateExpressionValues | TypeScript | logical |
templateForKeys | Vue | logical |
templateKeys | Vue | logical |
templateLiteralEscapesConsistency | TypeScript | stylistic |
templateLiterals | Vue | logical |
templateRefs | Vue | logical |
templateRootMultiplicity | Vue | logical |
templateRootValidity | Vue | logical |
templateShadows | Vue | logical (strict) |
templateStrings | Vue | stylistic |
templateTargetBlanks | Vue | security |
templateVForOnChildren | Vue | logical |
testBodyExpectations | Vitest | logical |
testCaseAssertions | Vitest | stylistic |
testCaseDuplicatesReports test cases that are identical to previous test cases. | Flint | logical |
testCaseNameDuplicatesReports test cases that have the same name as a previous test case. | Flint | logical |
testCaseNonStaticCodeTest case code should be a static string literal. | Flint | logical |
testCaseOnlyFlagsReports test cases that are marked only: true. | Flint | logical |
testCasePaddingLinesEnforces padding around test blocks. | Vitest | stylistic (strict) |
testCasesWithinDescribesReports importing from node:test. | Vitest | stylistic (strict) |
testConditionals | Vitest | logical (strict) |
testDefinitionFunctions | Vitest | (none) |
testPrefixes | Vitest | stylistic |
testShorthandsTest cases with only a code property can use string shorthand syntax instead of object literal syntax. | Flint | stylistic |
textareaMustacheChildren | Vue | logical |
textDirectives | Vue | logical |
textDirectiveValidity | Vue | logical |
thisAliasesReports assigning this to a variable. | TypeScript | logical |
thisAssignments | TypeScript | stylistic |
thisBeforeSuperReports using this or super before calling super() in derived class constructors. | TypeScript | javascript |
thisInTemplates | Vue | logical (strict) |
throwErrorsReports throwing values that are not Error objects. | TypeScript | logical |
titleInDocumentHeads | Next.js | logical |
titleRepeats | Vitest | logical |
titleValidity | Vitest | logical |
toBeTypeOfs | Vitest | stylistic |
toContainMatchers | Vitest | stylistic |
toHaveBeenCalledTimesAssertions | Vitest | (none) |
toHaveLengthMatchers | Vitest | stylistic |
topLevelAwaitsReports top-level await expressions in files that export values. | TypeScript | stylistic (strict) |
topLevelAwaits | Node.js | (none) |
topLevelBrowserGlobals | Svelte | logical (strict) |
topLevelPackageProperties | PackageJSON | (none) |
transitionToggles | Vue | logical |
tripleSlashReferencesReports triple-slash reference directives. | TypeScript | logical |
tripleSlashReferenceValidityReports invalid triple-slash reference directives. | TypeScript | logical |
trueAttributeShorthands | Vue | stylistic |
truthyMatchers | Vitest | (none) |
tsCommentsReports problematic TypeScript comment directives or requires descriptions after directives. | TypeScript | logical |
tslintCommentsReports TSLint disable/enable comments. | TypeScript | stylistic |
typeAssertionStylesReports angle-bracket type assertions. | TypeScript | stylistic |
typeConstituentDuplicates | TypeScript | logical |
typeConstituentsOrder | TypeScript | sorting |
typedObjectProps | Vue | logical |
typedRefs | Vue | logical |
typeExports | TypeScript | stylistic |
typeImportsReports imports that do not match the configured type import style. | TypeScript | stylistic |
typeofComparisonsReports typeof expressions that compare impossible string literals. | TypeScript | javascript |
typePresenceEnforces that the type property is present. | PackageJSON | logical |
typesPresenceEnforces that the types property is present. | PackageJSON | (none) |
typeValidityEnforces that the type property is valid. | PackageJSON | logical |
typos | Next.js | logical |
typos | React | logical |
unassignedVariablesReports variables that are declared but never assigned a value. | TypeScript | javascript |
unboundMethods | TypeScript | logical |
undefinedComponents | Vue | logical |
undefinedDirectives | Vue | logical |
undefinedElements | JSX | logical |
undefinedInitialValues | TypeScript | stylistic |
undefinedProperties | Vue | logical |
undefinedTypeofChecksReports typeof undefined checks. | TypeScript | stylistic (strict) |
undefinedVariablesReports using variables that are not defined. | TypeScript | javascript |
unescapedEntitiesDisallow unescaped HTML entities in JSX text that may cause rendering issues. | JSX | stylistic |
unicodeBOMsReports files with Unicode Byte Order Marks (BOMs). | TypeScript | stylistic |
unifiedSignatures | TypeScript | logical (strict) |
unionTypesOrder | TypeScript | sorting |
unknownStyleDirectiveProperties | Svelte | logical |
unnecessaryAsyncExpectFunctions | Vitest | (none) |
unnecessaryBindDirectives | Vue | logical |
unnecessaryBindsReports unnecessary .bind() calls. | TypeScript | logical |
unnecessaryBlocksReports standalone block statements that don't create a meaningful scope. | TypeScript | stylistic |
unnecessaryBooleanCastsReports unnecessary boolean casts. | TypeScript | stylistic |
unnecessaryCatchesReports catch clauses that only rethrow the caught error without modification. | TypeScript | logical |
unnecessaryCollectionArguments | TypeScript | stylistic |
unnecessaryComparisonsReports comparisons that are always true, always false, or can be simplified. | TypeScript | logical |
unnecessaryComputedKeys | TypeScript | stylistic |
unnecessaryConcatenationReports string concatenation using the + operator when both operands are string literals. | TypeScript | stylistic |
unnecessaryConcatenations | Vue | logical |
unnecessaryConditions | TypeScript | logical |
unnecessaryConstructors | TypeScript | stylistic |
unnecessaryContinues | TypeScript | logical |
unnecessaryEscapesReports unnecessary escape sequences in string literals and template strings. | TypeScript | stylistic |
unnecessaryEscapes | JSON | stylistic |
unnecessaryFragmentsDisallow unnecessary JSX fragments that wrap a single child or have no children. | JSX | stylistic |
unnecessaryIteratorArrays | TypeScript | stylistic |
unnecessaryLogicalComparisons | TypeScript | logical |
unnecessaryMathClampsReports unnecessary Math.min and Math.max calls with constant arguments or incorrect clamping patterns. | TypeScript | logical |
unnecessaryMustaches | Vue | logical |
unnecessaryNumericFractionsReports numeric literals with unnecessary zero fractions or dangling dots. | TypeScript | stylistic |
unnecessaryParentheses | Vue | stylistic |
unnecessaryQualifiers | TypeScript | stylistic |
unnecessaryRenamesRenames that don't change the identifier name are unnecessary. | TypeScript | stylistic |
unnecessaryReturns | TypeScript | stylistic |
unnecessarySpreads | TypeScript | logical |
unnecessaryStateWraps | Svelte | logical |
unnecessaryTemplateAttributes | Vue | logical |
unnecessaryTemplateExpressions | TypeScript | logical |
unnecessaryTernariesReports ternary expressions that can be simplified to boolean expressions or logical operators | TypeScript | stylistic (strict) |
unnecessaryTypeAnnotations | TypeScript | stylistic |
unnecessaryTypeArguments | TypeScript | logical |
unnecessaryTypeAssertions | TypeScript | logical |
unnecessaryTypeConstraints | TypeScript | logical |
unnecessaryTypeConversions | TypeScript | logical |
unnecessaryTypeParameters | TypeScript | logical |
unnecessaryUndefinedDefaults | TypeScript | logical |
unnecessaryUseStrictsReports unnecessary "use strict" directives in ES modules and classes. | TypeScript | logical |
unpublishedBins | Node.js | logical |
unpublishedImports | Node.js | logical |
unreachableStatements | TypeScript | javascript |
unresolvedImports | TypeScript | (none) |
unresolvedNavigations | Svelte | logical |
unsafeDeclarationmerging | TypeScript | logical |
unsafeEnumComparisons | TypeScript | logical |
unsafeFunctionTypes | TypeScript | logical |
unsafeInlineScripts | Astro | security |
unsafeLifecycleMethods | JSX | logical |
unsafeNegationsReports negating the left operand of in or instanceof relations. | TypeScript | javascript |
unsafeOptionalChains | TypeScript | javascript |
unsafeToString | TypeScript | logical |
unsafeTypeAssertions | TypeScript | logical |
unsafeUnaryNegations | TypeScript | logical |
unsupportedFeatures | Vue | logical |
unsupportedNodeAPIs | Node.js | logical |
unsupportedSyntax | React | logical |
unusedClassComponentMethods | React | logical |
unusedClassNames | Svelte | logical (strict) |
unusedComponents | Vue | logical |
unusedCssSelectors | Astro | logical |
unusedEmitDeclarations | Vue | logical |
unusedExpressions | TypeScript | logical |
unusedLabels | TypeScript | stylistic |
unusedMessageIdsReports message IDs defined in the messages object that are never used in recognized report calls. | Flint | logical |
unusedModules | TypeScript | (none) |
unusedPlaceholders | Flint | logical |
unusedPrivateClassMembers | TypeScript | logical |
unusedProperties | Vue | logical |
unusedProps | Svelte | logical |
unusedPropTypes | React | logical |
unusedRefs | Vue | logical |
unusedState | React | logical |
unusedStyleDefineVars | Astro | logical |
unusedSvelteIgnores | Svelte | logical |
unusedSwitchStatements | TypeScript | logical |
unusedValues | TypeScript | logical |
unusedVariables | TypeScript | logical |
unusedVariables | Vue | logical |
usageBeforeDefinition | TypeScript | javascript |
uselessChildrenSnippets | Svelte | logical |
uselessDefaultAssignments | TypeScript | logical |
uselessMustaches | Svelte | logical |
useMemoReturns | React | logical |
useStateDestructures | React | stylistic |
useStrictDirectives | TypeScript | javascript |
validEachKeys | Svelte | logical |
validStyleParsing | Svelte | logical (strict) |
valueSafetyReports JSON values that are unsafe for data interchange. | JSON | logical |
varDeclarations | TypeScript | stylistic |
variableBlockScopeUsage | TypeScript | javascript |
variableDeclarationsOrder | TypeScript | sorting |
variableDeletionsReports attempting to delete variables with the delete operator. | TypeScript | javascript |
variableRedeclarations | TypeScript | javascript |
variableUses | JSX | logical |
variableUses | SolidJS | (none) |
versionPresenceEnforces that the version property is present. | PackageJSON | logical |
versionValidityEnforces that the version property is valid. | PackageJSON | logical |
vHtmlDirectives | Vue | logical (strict) |
vIfsWithVFors | Vue | logical |
viNamespaceNames | Vitest | (none) |
vitestGlobalImporting | Vitest | (none) |
vitestGlobalImports | Vitest | stylistic |
voidOperatorReports using the void operator. | TypeScript | stylistic |
vueCustomBlockParsingErrors | YAML | (none) |
vueCustomBlockParsingErrors | JSON | logical |
vuePackageImports | Vue | logical |
watchAfterAwaits | Vue | logical |
watchArrowFunctions | Vue | logical |
webpackLoaderSyntax | TypeScript | (none) |
windowMessagingTargetOriginRequires specifying the targetOrigin argument when calling window.postMessage(). | Browser | logical |
withStatementsReports using with statements | TypeScript | javascript |
workspacesPresenceEnforces that the workspaces property is present. | PackageJSON | (none) |
workspacesValidityEnforces that the workspaces property is valid. | PackageJSON | logical |
wrapperObjectsFlags using new with Boolean, Number, or String, which creates wrapper objects instead of primitives. | TypeScript | logical |
wrapperObjectTypes | TypeScript | logical |
writableDerivedStores | Svelte | logical |
yamlKeysOrder | YAML | (none) |
yamlSequenceValuesOrder | YAML | sorting |
Made with ❤️🔥 around the world by
the Flint team and contributors.