# Anti-patterns Read this at the Check step, after the self-checks in [quality.md](./quality.md). Each entry: an `Incorrect:` line, then its `Correct:` fix. Detector: the self-check that prints it (C1 to C4), or `visual` when reading finds it. Source: the pilot run that wrote it, or `default` (a training-data habit). ## Pairs ### 1. Stagger on every row (Detector: C2; source: run-08) Incorrect: `transition={{ delay: i * 0.05 }}` on all 50 rows of a table Correct: 1 stagger of at most 6 items, `staggerChildren: 0.05`, never on table rows ### 2. Transition everything on a card (Detector: C1; source: runs 10, 15) Incorrect: `className="rounded-xl border transition-all duration-300 hover:shadow-lg"` Correct: `transition-colors` for a hover color; a lift is `transform` over a static shadow ### 3. Raw palette for a state (Detector: C3; source: runs 08, 15) Incorrect: `Active` Correct: `Active` ### 4. Animated table rows (Detector: C1; source: runs 01, 08, 17) Incorrect: `` Correct: `data-grid` rows, which already hover; never animate rows with motion/react ### 5. Hover scale on the default spring (Detector: C1; source: runs 01, 10) Incorrect: `` with no `transition` Correct: CSS first: `transition-colors` for hover, `transition-transform active:scale-[0.98] motion-reduce:transition-none` for press ### 6. Entrance from scale 0 (Detector: C1; source: runs 10, 15) Incorrect: `` Correct: `initial={{ opacity: 0, scale: 0.95 }}`: start at scale 0.95 or more and move 8px or less ### 7. Hand-built modal or toast (Detector: C4; source: run-15) Incorrect: `
` as a modal Correct: `Dialog`, `AlertDialog` for a destructive confirm, `sonner` for toasts; a palette: ``, as `CommandDialog` holds no `Command` ### 8. Native select (Detector: C4; source: run-15) Incorrect: `