Introduction
Cease Nonsense is an ESLint plugin for TypeScript, React, and roblox-ts projects. It ships 57 rules that go
after the kinds of bugs and anti-patterns that slip past standard linting — things like implicit children on
React.FC, memoization that does nothing, hooks called conditionally, and naming that drifts across a codebase.
How It Works
Section titled “How It Works”The plugin splits its rules into two tiers depending on what they need to analyze:
- AST-only rules run purely against the syntax tree. They’re fast, cheap, and work on every keystroke. Most naming checks and structural patterns live here.
- Type-aware rules tap into TypeScript’s type checker for deeper analysis — things like verifying that a memoized dependency is actually stable, or that a Roblox Instance constructor argument is valid. These are more expensive but catch problems that syntax alone can’t see.
All 57 rules ship in a single recommended config. You can also pull in category-specific rulesets if you
only need a subset.
Who Is This For?
Section titled “Who Is This For?”- TypeScript teams who want stricter guardrails than stock ESLint provides, without stitching together a dozen separate plugins.
- React developers dealing with hook complexity, component bloat, or inconsistent patterns across a growing codebase.
- roblox-ts developers building on Roblox, where Instance handling, Luau interop, and performance constraints introduce a whole category of bugs that generic linters ignore.
- Solo developers who want a second pair of eyes that actually understands the framework they’re working in.
Rule Breakdown
Section titled “Rule Breakdown”21
React Rules
Hooks, components, memoization, and rendering patterns
17
Roblox & Luau Rules
Instance handling, Luau interop, and roblox-ts specifics
7
Naming & Conventions
Casing, abbreviations, and convention enforcement
12
General Logic & Style
Early returns, dead code, imports, and structural patterns