react-code-reviewer
SKILL.md
React Code Review Guidelines
Review Categories
Component Architecture
Server vs Client
Red Flags:
- 'use client' on component that doesn't use hooks or browser APIs
- Server Component trying to use hooks
- Client Component doing data fetching that should be on server
Good Practices:
- Server Components for data fetching and static content
- 'use client' only when necessary (hooks, events, browser APIs)
- Client Components receive data as props from Server Components
Component Structure
Issues:
- Component exceeds 300 lines (consider splitting)
- Multiple responsibilities in one component
- Deeply nested component tree (> 5 levels)
- Repeated code that could be extracted to hook
Look For:
- Single responsibility principle
- Proper component composition
- Extracted custom hooks for reusable logic
TypeScript Usage
Type Safety
Issues:
- Use of 'any' without explanation comment
- Type assertions (as Type) without justification
- Non-null assertions (!) without null checks
- Missing prop types (implicit any)
- Missing return type on exported functions
Best Practices:
- All props have interface definitions
- Generic types for reusable components
- Discriminated unions for complex state
- Proper utility type usage (Partial, Pick, Omit)
Naming
Check:
- PascalCase for components and types
- camelCase for variables and functions
- Descriptive names (avoid single letters except in maps)
- Hooks prefixed with 'use'
State Management
React State
Issues:
- Using state for derived values (should use useMemo)
- Prop drilling more than 2 levels (consider Context)
- State that could be computed from props
- Missing useCallback for functions passed to children
Patterns:
- useState for local UI state
- useReducer for complex state logic
- Context for deeply nested props
- Zustand for global client state
- React Query for server state
Side Effects
Common Issues:
- useEffect with missing dependencies
- useEffect without cleanup function (subscriptions)
- Infinite loops from state updates in useEffect
- Side effects in render (should be in useEffect)
Verify:
- All useEffect dependencies listed correctly
- Cleanup functions for subscriptions/timers
- No state updates during render
Performance
Optimization
Unnecessary Optimization:
- React.memo on simple components
- useMemo for cheap calculations
- useCallback everywhere (premature optimization)
Missing Optimization:
- Expensive calculations without useMemo
- Functions recreated on every render passed to children
- Large lists without virtualization
- No code splitting for large components
Re-renders
Check:
- Inline object creation in props ({} in JSX)
- Inline array creation in props ([] in JSX)
- Inline function definitions in JSX
- Context value not memoized
Error Handling
Coverage
Missing:
- No error handling for async operations
- No loading states for data fetching
- Missing error boundaries
- Silent error catching (empty catch blocks)
Good Practices:
- Loading, error, and success states all handled
- Error boundaries around route segments
- User-friendly error messages
- Retry mechanisms for failed requests
Accessibility
Requirements
Critical Issues:
- Interactive elements without keyboard support
- Missing alt text on images
- Poor color contrast ratios
- Missing ARIA labels on custom controls
- Improper heading hierarchy
Verify:
- All buttons/links keyboard accessible
- Form inputs have labels
- Semantic HTML used appropriately
- Focus management in modals/dialogs
Styling
Tailwind
Issues:
- Extremely long className strings (extract to component)
- Repeated utility combinations (create component)
- Hard-coded colors not from theme
- Magic numbers in spacing (use spacing scale)
Best Practices:
- Use theme colors and spacing
- Responsive classes for mobile-first design
- Conditional classes with clsx/classnames
CSS Modules
Check:
- Scoped styles don't leak globally
- No !important flags (indicates specificity issue)
- Consistent naming convention
Data Fetching
React Query
Issues:
- Fetching in useEffect instead of React Query
- Query keys not unique or not arrays
- Missing error handling in queries
- Not using mutation for state-changing operations
Verify:
- Proper query key structure
- Mutations for POST/PUT/DELETE
- Query invalidation after mutations
- Loading and error states handled
Server Components
Check:
- Direct data fetching (no useEffect)
- Async function declaration
- Proper error handling with try-catch
- Loading states via Suspense boundaries
Testing
Coverage
Missing:
- No tests for components with logic
- Only happy path tested
- Implementation details tested instead of behavior
- Missing edge case tests
Verify:
- User interactions tested
- Loading and error states tested
- Accessibility in tests (query by role/label)
- Integration over unit tests
Security
Common Issues:
- Dangerously setting innerHTML without sanitization
- Unvalidated user input in URLs
- Sensitive data in client components (should be server)
- API keys/secrets exposed in client code
Verify:
- User input sanitized before rendering
- Authentication checks in appropriate places
- Secrets kept on server side
Code Quality
Readability
Issues:
- Unclear variable names
- Complex nested ternaries
- Large boolean expressions without extraction
- No comments for complex logic
Improvements:
- Extract complex conditions to variables
- Use early returns to reduce nesting
- Add JSDoc for public APIs
Consistency
Verify:
- Consistent component declaration style (function vs const)
- Consistent import order
- Consistent naming conventions
- Follows project conventions in CLAUDE.md
Review Process
Checklist
- Component uses correct Server/Client designation
- TypeScript types complete and accurate
- State management appropriate for use case
- Performance optimizations justified
- Error handling comprehensive
- Accessibility requirements met
- Tests cover main user flows
- Code follows project conventions
Severity Levels
Critical:
- Security vulnerabilities
- Accessibility blocking issues
- Data loss possibilities
Major:
- Type safety violations
- Performance problems
- Missing error handling
Minor:
- Code style inconsistencies
- Missing comments
- Minor optimization opportunities
Weekly Installs
8
Repository
masanao-ohba/cl…anifestsGitHub Stars
2
First Seen
Jan 29, 2026
Security Audits
Installed on
github-copilot7
gemini-cli6
codex6
kimi-cli6
amp6
cursor6