--- description: "React/TypeScript/Tailwind conventions: components, hooks, strict typing, utility-first styling" globs: ["**/*.tsx", "**/*.jsx", "**/*.ts", "**/*.css"] --- # React / TypeScript / Tailwind - Use TypeScript strict mode; define `Props` interface for every component - Use named exports, not default exports - Functional components only; use hooks for state/side effects - Server Components by default; add `"use client"` only when needed (if Next.js) - Use Tailwind utility classes for styling; no CSS modules or inline styles - Name event handlers `handle[Action]` (e.g., `handleSubmit`) - Use `React.memo` for expensive pure components - Implement lazy loading for routes (`React.lazy` + `Suspense`) - Organize by feature: `components/`, `hooks/`, `lib/`, `types/` - Never use `any`; prefer unknown + type narrowing - Use `useCallback`/`useMemo` only when there's a measured perf issue