All Rules
These rules will not be implemented as a part of Flint. They are all too opinionated and/or too niche to be kept in the Flint project. They’re free to be implemented as a community third-party Flint plugin.
Total count: 434
| Flint Rule | Plugin | Notes |
|---|---|---|
abbreviations | TypeScript | |
aboutSchemaDescriptions | Flint | |
aboutSchemas | Flint | |
aboutSuggestions | Flint | |
aboutTypes | Flint | |
accessorPairs | TypeScript | |
adjacentInlineElements | JSX | Overly opinionated. |
argumentsArrayMethods | TypeScript | |
argumentsProperties | TypeScript | |
arrayDestructuringSparsity | TypeScript | |
arrayElementsSorting | JSON | |
arrayFlatDepthMagicNumbers | TypeScript | |
arrayJoinSeparators | TypeScript | |
arrayMethodThisArguments | TypeScript | |
arrayReducers | TypeScript | |
arraySortCompareArgument | TypeScript | |
arrowBodyBraces | TypeScript | |
arrowCallbacks | TypeScript | |
asciiCharacters | Node.js | |
assignmentOperationRefactors | TypeScript | |
asyncAwaitStatements | TypeScript | |
atomicUpdates | TypeScript | |
attributeEqualSignSpaces | Vue | Formatting rule. |
attributeLinebreaks | Vue | Formatting rule. |
attributeNameValidity | Vue | Generally handled by parsers. |
attributesPerLine | Vue | Formatting rule. |
awaitMemberAccesses | TypeScript | |
barrelFiles | TypeScript | |
bigintLiterals | JSON | Generally handled by parsers. |
binaryExpressions | JSON | Generally handled by parsers. |
binaryNumericLiterals | JSON | Generally handled by parsers. |
bitwiseOperatorLogic | TypeScript | |
bitwiseOperators | TypeScript | |
blankLineMultiples | Markdown | Formatting rule. |
blockquoteSpaces | Markdown | Formatting rule. |
blockStatements | TypeScript | Superseded by prettier-plugin-curly |
booleanCoercionMatchers | Vitest | Overly opinionated. |
booleanLiteralParameterComments | TypeScript | |
builtinPrototypeMethodAccesses | TypeScript | |
callbackErrorHandling | Node.js | |
callbackErrorLiterals | Node.js | |
callbackReturns | Node.js | |
capitalizedConstructors | TypeScript | |
childrenCurlyBraces | JSX | Formatting rule. |
classComponentDefinitions | React | create-react-class is long-outdated. |
closingBracketNewlines | Vue | Formatting rule. |
closingBracketSpacing | JSX | Formatting rule. |
closingBracketSpacing | Vue | Formatting rule. |
closingTagSpacing | JSX | Formatting rule. |
codeblockBlankLines | Markdown | Formatting rule. |
codeBlockStyles | Markdown | Formatting rule. |
codeFenceStyles | Markdown | Formatting rule. |
commandOutputs | Markdown | Overly opinionated. |
commentCapitalization | TypeScript | |
comments | JSON | Generally handled by parsers. |
commentWarnings | TypeScript | |
comparisonSequences | TypeScript | Handled by TypeScript / otherwise is stylistic. |
compiles | Astro | Handled by the Astro compiler. |
componentNameCases | JSX | Overly opinionated and brittle. |
componentOptimizations | React | Overly opinionated. |
componentPropertySorting | React | Handled by sorting plugin. |
componentsPerFile | React | Overly opinionated. |
conditionalAssignments | TypeScript | Superseded by unnecessaryConditions. |
conditionNegations | TypeScript | |
conditionOrdering | TypeScript | |
consistentReturns | TypeScript | |
constantBinaryExpressions | TypeScript | Superseded by unnecessaryConditions. |
constantConditions | TypeScript | Superseded by unnecessaryConditions. |
constEnums | TypeScript | |
continues | TypeScript | |
crossComponentPropTypes | React | Overly opinionated and for the no-longer-recommended propTypes pattern |
crossComponentPropTypes | React | Superseded by deprecated. |
curlyNewlines | JSX | Formatting rule. |
curlySpacing | JSX | Formatting rule. |
defaultCases | TypeScript | |
defaultImportRenames | TypeScript | |
defaultParameterReassignments | TypeScript | |
defaultPropObjectValues | JSX | Overly opinionated. |
defaultPropsSoring | React | Handled by sorting plugin. |
deprecatedAPIs | Node.js | Superseded by deprecated. |
deprecatedAstroCanonicalURL | Astro | Superseded by deprecated. |
deprecatedAstroFetchContent | Astro | Superseded by deprecated. |
deprecatedAstroResolve | Astro | Superseded by deprecated. |
deprecatedBindSyncs | Vue | Superseded by deprecated. |
deprecatedContextMethods | Flint | |
deprecatedDollarListeners | Vue | Superseded by deprecated. |
deprecatedDollarScopedSlots | Vue | Superseded by deprecated. |
deprecatedEvents | Vue | Superseded by deprecated. |
deprecatedGetEntryBySlug | Astro | Superseded by deprecated. |
deprecatedHtmlElementIs | Vue | Superseded by deprecated. |
deprecatedInlineTemplates | Vue | Superseded by deprecated. |
deprecatedMessagePlaceholders | Flint | |
deprecatedMessageStrings | Flint | |
deprecatedModelDefinitions | Vue | Superseded by deprecated. |
deprecatedReplacedBy | Flint | |
deprecatedReportAPIs | Flint | |
deprecatedRouterLinkTagProps | Vue | Superseded by deprecated. |
deprecatedRuleFunctions | Flint | |
deprecatedSchemaDefaults | Flint | |
deprecatedScopeAttributes | Vue | Superseded by deprecated. |
deprecatedSetDeletes | Vue | Superseded by deprecated. |
deprecatedSlotAttributes | Vue | Superseded by deprecated. |
deprecatedSlotScopeAttributes | Vue | Superseded by deprecated. |
deprecatedTextReplacements | Flint | |
deprecatedVIs | Vue | Superseded by deprecated. |
deprecatedVOnNativeModifiers | Vue | Superseded by deprecated. |
deprecatedVOnNumberModifiers | Vue | Superseded by deprecated. |
deprecatedVueConfigKeyCodes | Vue | Superseded by deprecated. |
destructuring | TypeScript | |
directiveDisableSelectors | TypeScript | Core requires explicit disables |
directiveDuplicateDisables | TypeScript | Core detects duplicate disables |
directiveMisleadingEnables | TypeScript | Core requires explicit enables |
directiveRestrictedDisables | TypeScript | |
directiveSelectors | TypeScript | Handled by Flint core |
directiveUnknownRules | TypeScript | Handled by Flint core |
directiveUnlimitedDisables | TypeScript | Core requires explicit disables |
directiveUnused | TypeScript | Handled by Flint core |
directiveUnusedDisables | TypeScript | Core detects unused disables |
directiveUnusedEnables | TypeScript | Core detects unused enables |
duplicateProps | SolidJS | Superseded by jsx plugin's duplicateProps rule. |
duplicateSpreads | JSX | |
emphasisMarkerSpacing | Markdown | |
emphasisSpaces | Markdown | Formatting rule. |
emphasisStyles | Markdown | Formatting rule. |
emptyTestTodos | Vitest | Overly opinionated. |
endingTernaryIfElses | TypeScript | |
enumInitializers | TypeScript | |
equalityMatchers | Vitest | Overly opinionated. |
equalityOperatorNegations | TypeScript | |
equalsSpacing | JSX | Formatting rule. |
evolvingVariableTypes | TypeScript | |
exportDefault | TypeScript | |
exportGroups | TypeScript | |
exportLast | TypeScript | |
exportsStyle | Node.js | CJS-specific. |
exportUniqueNames | TypeScript | |
expressionsPerLine | JSX | Formatting rule. |
externalHttpImports | TypeScript | |
extraneousImports | Node.js | Superseded by Knip |
extraneousRequires | Node.js | Superseded by Knip |
filenameCasing | TypeScript | |
filenameExtensions | JSX | Generally handled by parsers. |
fileTrailingNewlines | Markdown | Formatting rule. |
findDOMNodeCalls | React | Superseded by deprecated. |
fixerReturns | Flint | |
floatingDecimals | JSON | Generally handled by parsers. |
forInGuards | TypeScript | |
forwardRefArguments | React | `React.forwardRef` is no longer necessary as of React 19. |
functionBinds | JSX | Overly opinionated. |
functionDeclarationStyles | TypeScript | |
functionNameMatches | TypeScript | |
functionNames | TypeScript | |
functionReturnTypes | TypeScript | |
globalBuffer | Node.js | |
globalConsole | Node.js | |
globalProcess | Node.js | |
globalTextDecoder | Node.js | |
globalTextEncoder | Node.js | |
globalURL | Node.js | |
globalURLSearchParams | Node.js | |
handlerNames | JSX | Overly opinionated. |
hardTabs | Markdown | Formatting rule. |
headingBlankLines | Markdown | Formatting rule. |
headingClosingSpaceMultiples | Markdown | Formatting rule. |
headingClosingSpaceMultiples | Markdown | Formatting rule. |
headingClosingSpaces | Markdown | Formatting rule. |
headingIndents | Markdown | Formatting rule. |
headingMissingSpaces | Markdown | Formatting rule. |
headingPresence | Markdown | Overly opinionated. |
headingSpaces | Markdown | I intend to write a Prettier plugin. |
headingStyles | Markdown | Formatting rule. |
hexadecimalNumericLiterals | JSON | Generally handled by parsers. |
hexEscapes | TypeScript | |
hookContents | Vitest | Overly opinionated. |
hooks | Vitest | Overly opinionated. |
hrStyles | Markdown | Formatting rule. |
html | Markdown | |
htmlQuotes | Vue | Formatting rule. |
htmlTagsSelfClosing | Vue | Formatting rule. |
identifierEscapeSequences | JSON | Generally handled by parsers. |
identifierMatches | TypeScript | |
identifierNumbers | JSON | Generally handled by parsers. |
iifeReadability | TypeScript | |
imageAltRedundancy | JSX | |
implicitCoercions | TypeScript | |
importAbsolutePaths | TypeScript | |
importAssertions | TypeScript | Generally handled by parsers. |
importDefaults | TypeScript | Handled by TypeScript |
importDuplicates | TypeScript | |
importFirst | TypeScript | |
importMaximumDependencies | TypeScript | |
importNameMatches | TypeScript | |
importNamespaceProperties | TypeScript | Handled by TypeScript |
importNamespaces | TypeScript | |
importsSorting | TypeScript | |
indents | JSX | Formatting rule. |
indents | Vue | Formatting rule. |
infinity | JSON | Generally handled by parsers. |
inlineComments | TypeScript | |
innerDeclarations | TypeScript | |
isMounted | React | `isMounted` is no longer present in modern React. |
iterableKeys | JSX | |
iteratorMethodFunctionReferences | TypeScript | |
jsdocAlignment | TypeScript | I intend to write a Prettier plugin. |
jsdocBlankBlockDescriptions | TypeScript | |
jsdocConvertToJSDocComments | TypeScript | |
jsdocDefaults | TypeScript | |
jsdocDefinedTypes | TypeScript | |
jsdocDescriptionCompleteSentences | TypeScript | |
jsdocDescriptions | TypeScript | |
jsdocExamples | TypeScript | |
jsdocFileOverviews | TypeScript | |
jsdocImportsAsDependencies | TypeScript | |
jsdocIndentation | TypeScript | I intend to write a Prettier plugin. |
jsdocLineAlignment | TypeScript | I intend to write a Prettier plugin. |
jsdocMatchDescriptions | TypeScript | |
jsdocMatchNames | TypeScript | |
jsdocMissingSyntax | TypeScript | |
jsdocParameterDescriptions | TypeScript | |
jsdocParameters | TypeScript | |
jsdocParameterTypes | TypeScript | |
jsdocProperties | TypeScript | |
jsdocPropertyDescriptions | TypeScript | |
jsdocPropertyTypes | TypeScript | |
jsdocRequired | TypeScript | |
jsdocReturnDescriptions | TypeScript | |
jsdocReturns | TypeScript | |
jsdocReturnTypes | TypeScript | |
jsdocTagLines | TypeScript | |
jsdocTemplates | TypeScript | |
jsdocTextEscaping | TypeScript | |
jsdocThrows | TypeScript | |
jsonImportAttributes | TypeScript | |
keyCasing | JSON | |
keyContents | JSON | |
labels | TypeScript | |
labelVariableNames | TypeScript | |
lifecycleMethodArrowFunctions | JSX | Overly opinionated. |
liIndents | Markdown | Formatting rule. |
lineLengths | Markdown | Formatting rule. |
linkBlankLines | Markdown | Formatting rule. |
linkImageStyles | Markdown | Formatting rule. |
linkSpaces | Markdown | |
listMarkerSpaces | Markdown | Formatting rule. |
listStyles | Markdown | Formatting rule. |
literals | JSX | Overly opinionated. |
loopConditionConstants | TypeScript | |
magicNumbers | TypeScript | |
mappedObjectSpreads | Performance | |
mappingKeyCasing | YAML | |
mathRangeTernaries | TypeScript | |
mathTruncationOperators | TypeScript | |
maximumChildrenDepth | JSX | Overly opinionated. |
maximumClassesPerFile | TypeScript | |
maximumComplexity | TypeScript | |
maximumComponentsPerFile | Vue | Overly opinionated. |
maximumDepth | TypeScript | |
maximumExpects | Vitest | Overly opinionated. |
maximumIdentifierLengths | TypeScript | |
maximumLinesPerFile | TypeScript | |
maximumLinesPerFunction | TypeScript | |
maximumNestedCallbacks | TypeScript | |
maximumNestedDescribes | Vitest | Overly opinionated. |
maximumParameters | TypeScript | |
maximumPropsPerLine | JSX | Formatting rule. |
maximumStatements | TypeScript | |
memberAccessibility | TypeScript | |
messageIdMismatches | Flint | |
misleadingSemicolons | JSX | |
misleadingShorthandAssignments | TypeScript | |
misleadingThenProperties | TypeScript | |
missingImports | Node.js | |
missingRequires | Node.js | |
mixedRequires | Node.js | Superseded by ESM and ordering rules. |
mocksDirectoryImports | Vitest | Overly opinionated. |
moduleBoundaryTypes | TypeScript | |
moduleFormats | TypeScript | |
moduleImportStyles | TypeScript | |
multilineElementContentNewlines | Vue | Formatting rule. |
multilineStrings | TypeScript | |
multipleElseIfSwitches | TypeScript | |
mustacheInterpolationSpaces | Vue | Formatting rule. |
namespaces | JSX | Generally handled by parsers. |
namingConventions | TypeScript | |
nan | JSON | Generally handled by parsers. |
newlines | JSX | Formatting rule. |
newRequires | Node.js | |
nodeGlobals | Node.js | |
noScriptUrl | SolidJS | Superseded by jsx plugin's duplicateProps rule. |
nullComparisons | TypeScript | |
nulls | TypeScript | |
numberKeyLiterals | TypeScript | |
numbers | JSON | Generally handled by parsers. |
numberToFixedDigits | TypeScript | |
numericConstantApproximations | TypeScript | |
numericSeparators | JSON | Generally handled by parsers. |
objectDefaultParameters | TypeScript | |
objectLiteralComparisons | TypeScript | |
octalEscapeSequences | JSON | Generally handled by parsers. |
octalLiterals | JSON | Generally handled by parsers. |
octalNumericLiterals | JSON | Generally handled by parsers. |
optionalChainExpressions | TypeScript | |
optionDefaults | Flint | |
parameterProperties | TypeScript | |
parentheses | JSON | Generally handled by parsers. |
parsingErrors | Vue | Generally handled by parsers. |
pathConcatenations | Node.js | |
plusOperators | JSON | Generally handled by parsers. |
plusPlusOperators | TypeScript | |
pollingAwaits | Vitest | Superseded by noFloatingPromises. |
prefixedClassLikes | TypeScript | |
processEnvs | Node.js | |
processExitThrows | Node.js | |
promiseAlwaysReturn | TypeScript | Superseded by noFloatingPromises. |
promiseArgumentCounts | TypeScript | |
promiseAwaitableCallbacks | TypeScript | |
promiseAwaitableThens | TypeScript | |
promiseCallbackFunctions | Node.js | |
promiseCatchableThens | TypeScript | |
promiseCatchOrReturn | TypeScript | Superseded by noFloatingPromises. |
promiseErrorFirstCallbacks | TypeScript | Superseded by noFloatingPromises. |
promiseExpectChains | Vitest | Superseded by noFloatingPromises. |
promiseNesting | TypeScript | |
promiseNews | TypeScript | |
promiseNewStatics | TypeScript | |
promiseNonSpecMethods | TypeScript | Superseded by noFloatingPromises. |
promiseParameterNames | TypeScript | |
promisesDNS | Node.js | |
promisesFS | Node.js | |
propDefaults | React | Overly opinionated. |
properNames | Markdown | Superseded by cspell. |
propertyOrdering | Flint | |
propIndents | JSX | Formatting rule. |
propNewlines | JSX | Formatting rule. |
propsSorting | JSX | Superseded by sorting plugin |
propsSpaces | JSX | Formatting rule. |
propsSpreads | JSX | Overly opinionated. |
propTypesExactness | React | Handles an edge case in the no-longer-recommended propTypes package. |
propTypesMutability | React | Overly opinionated. |
propTypesSorting | React | Handled by sorting plugin. |
prototypeIterators | TypeScript | |
proxyApis | SolidJS | Modern environments generally support Proxy. |
reactJsxScopes | React | Generally handled by parsers. |
readonlyClassProperties | TypeScript | |
reflectApplies | TypeScript | |
regexConciseness | TypeScript | Superseded by other regex cleanliness rules |
regexConsecutiveSpaces | TypeScript | |
regexDivisionStarts | TypeScript | |
regexTopLevelDeclarations | TypeScript | |
regexUnicodeSetsFlag | TypeScript | |
renderReturns | React | `render` is no longer recommended in modern React. |
restrictedDirectives | TypeScript | |
restrictedExports | TypeScript | |
restrictedJSDocs | TypeScript | |
restrictedRequires | Node.js | |
restSpreadProperties | TypeScript | |
ruleAboutChangers | Flint | |
scriptUrls | JSX | No longer necessary in modern browsers. |
selfClosingTags | SolidJS | Superseded by js plugin's selfClosingTags rule. |
setStates | React | Overly opinionated. |
shoutyConstants | TypeScript | |
singleLineElementContentNewlines | Vue | Formatting rule. |
slowTypes | TypeScript | |
snapshotHints | Vitest | Overly opinionated. |
snapshotInterpolations | Vitest | Overly opinionated. |
snapshotSizes | Vitest | Overly opinionated. |
spaces | Vue | Formatting rule. |
spyOnMocks | Vitest | Overly opinionated. |
stateAccessesInSets | JSX | Overly opinionated. |
strictEqualityMatchers | Vitest | Overly opinionated. |
strictMode | TypeScript | |
stringConcatenationTemplates | TypeScript | |
stringContents | TypeScript | |
stringRawEscapes | TypeScript | |
stringReplaceAllRegexSearches | TypeScript | |
stringStartsEndsWithMethods | TypeScript | |
stringTemplateCurlies | TypeScript | |
strongStyles | Markdown | Formatting rule. |
switchCaseBraces | TypeScript | |
switchExhaustiveness | TypeScript | |
syncFunctionAwaits | TypeScript | Generally handled by parsers. |
syncFunctionInAsyncFunctions | Node.js | |
synchronousMethods | Node.js | |
tableBlankLines | Markdown | Formatting rule. |
tableColumnStyles | Markdown | Formatting rule. |
tablePipeStyles | Markdown | Formatting rule. |
tagSpaces | JSX | Formatting rule. |
templateIndents | TypeScript | |
templateLiterals | JSON | Generally handled by parsers. |
ternaryNesting | TypeScript | |
ternaryOperators | TypeScript | |
testCaseOnlies | Vitest | Handled by Vitest in CI mode. |
testCaseTitles | Vitest | Overly opinionated. |
testConditionalDefinitions | Vitest | Overly opinionated. |
testDisables | Vitest | Handled by Vitest in CI mode. |
testNames | Flint | |
testOutputNulls | Flint | |
testOutputs | Flint | |
testPropertyOrders | Flint | |
testReturnStatements | Vitest | Overly opinionated, and largely handled by TypeScript. |
textEncodingCases | TypeScript | |
thisAliases | TypeScript | |
thisInStatic | TypeScript | |
toBeObjectMatchers | Vitest | Overly opinionated. |
todoExpirations | TypeScript | |
todoTestSkips | Vitest | Handled by Vitest in CI mode. |
topLevelInteroperability | JSON | |
topLevelRequires | Node.js | CJS-specific. |
toThrowMessages | Vitest | Overly opinionated. |
trailingSpaces | Markdown | Formatting rule. |
typeChecksTypeErrors | TypeScript | |
ulIndents | Markdown | Formatting rule. |
unassignedImports | TypeScript | |
undefined | JSON | Generally handled by parsers. |
undefinedComponents | SolidJS | Handled by ts plugin's undefinedVariables rule. |
undefinedNames | TypeScript | |
underscoreNames | TypeScript | |
unicodeCodepointEscapes | JSON | Generally handled by parsers. |
unnecessaryLabels | TypeScript | |
unnecessaryPolyfills | TypeScript | Superseded by the e18e initiative |
unnecessaryStringRaws | TypeScript | |
unnecessaryTokenRanges | Flint | |
unpublishedRequires | Node.js | |
unreachableLoops | TypeScript | |
unusedCatchBindings | TypeScript | Superseded by unusedVariables |
unusedObjectProperties | TypeScript | |
urlRelativity | TypeScript | |
usesReactPragmas | React | Generally handled by parsers. |
variableDeclarationInitializations | TypeScript | |
variableDeclarationSorting | TypeScript | |
variablesOnTop | TypeScript | |
verbatimModuleSyntax | TypeScript | |
vitestGlobalImports | Vitest | For a no-longer-recommended globals style. |
wrappedMultilines | JSX | Formatting rule. |
Made with ❤️🔥 in Boston by
Josh Goldberg and contributors.