skills/lgariv-dn/frontend-skills/react-best-practices

react-best-practices

SKILL.md

React Best Practices

Comprehensive performance optimization guide for React applications, adapted from Vercel Engineering. Contains 30 rules across 7 categories, prioritized by impact to guide automated refactoring and code generation.

Note: This version has been customized for pure React 19.2:

  • Server-side data fetching and SWR rules removed (project uses react-query)
  • Next.js-specific rules removed (next/dynamic, SSR hydration, etc.)
  • React Compiler is enabled - Memoization rules (memo, useMemo, useCallback) removed as the compiler handles this automatically

When to Apply

Reference these guidelines when:

  • Writing new React components
  • Reviewing code for performance issues
  • Refactoring existing React code
  • Optimizing bundle size or load times

Rule Categories by Priority

Priority Category Impact Prefix
1 Eliminating Waterfalls CRITICAL async-
2 Bundle Size Optimization CRITICAL bundle-
3 Client-Side Patterns MEDIUM-HIGH client-
4 Re-render Optimization MEDIUM rerender-
5 Rendering Performance MEDIUM rendering-
6 JavaScript Performance LOW-MEDIUM js-
7 Advanced Patterns LOW advanced-

Quick Reference

1. Eliminating Waterfalls (CRITICAL)

  • async-defer-await - Move await into branches where actually used
  • async-parallel - Use Promise.all() for independent operations
  • async-suspense-boundaries - Use Suspense to stream content

2. Bundle Size Optimization (CRITICAL)

  • bundle-barrel-imports - Import directly, avoid barrel files
  • bundle-conditional - Load modules only when feature is activated
  • bundle-preload - Preload on hover/focus for perceived speed

3. Client-Side Patterns (MEDIUM-HIGH)

  • client-localstorage-schema - Type-safe localStorage access
  • client-passive-event-listeners - Use passive event listeners for scroll/touch

4. Re-render Optimization (MEDIUM)

  • rerender-defer-reads - Don't subscribe to state only used in callbacks
  • rerender-dependencies - Use primitive dependencies in effects
  • rerender-derived-state - Subscribe to derived booleans, not raw values
  • rerender-functional-setstate - Use functional setState for stable callbacks
  • rerender-lazy-state-init - Pass function to useState for expensive values
  • rerender-transitions - Use startTransition for non-urgent updates

5. Rendering Performance (MEDIUM)

  • rendering-animate-svg-wrapper - Animate div wrapper, not SVG element
  • rendering-content-visibility - Use content-visibility for long lists
  • rendering-svg-precision - Reduce SVG coordinate precision
  • rendering-activity - Use Activity component for show/hide
  • rendering-conditional-render - Use ternary, not && for conditionals

6. JavaScript Performance (LOW-MEDIUM)

  • js-batch-dom-css - Group CSS changes via classes or cssText
  • js-index-maps - Build Map for repeated lookups
  • js-cache-property-access - Cache object properties in loops
  • js-cache-function-results - Cache function results in module-level Map
  • js-cache-storage - Cache localStorage/sessionStorage reads
  • js-combine-iterations - Combine multiple filter/map into one loop
  • js-length-check-first - Check array length before expensive comparison
  • js-early-exit - Return early from functions
  • js-hoist-regexp - Hoist RegExp creation outside loops
  • js-min-max-loop - Use loop for min/max instead of sort
  • js-set-map-lookups - Use Set/Map for O(1) lookups
  • js-tosorted-immutable - Use toSorted() for immutability

7. Advanced Patterns (LOW)

  • advanced-event-handler-refs - Store event handlers in refs

How to Use

Read individual rule files for detailed explanations and code examples:

rules/async-parallel.md
rules/bundle-barrel-imports.md

Each rule file contains:

  • Brief explanation of why it matters
  • Incorrect code example with explanation
  • Correct code example with explanation
  • Additional context and references

Full Compiled Document

For the complete guide with all rules expanded: AGENTS.md

Weekly Installs
2
Installed on
windsurf1
opencode1
cursor1
codex1
claude-code1
antigravity1