react-code-reviewer

React Code Review Guidelines

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "react-code-reviewer" with this command: npx skills add masanao-ohba/claude-manifests/masanao-ohba-claude-manifests-react-code-reviewer

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

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

code-implementer

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

code-reviewer

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

react-code-implementer

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

typescript-coding-standards

No summary provided by upstream source.

Repository SourceNeeds Review