Skip to content

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.

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.

  • 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.
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