Skills/Vercel React Best Practices

Vercel React Best Practices

Comprehensive performance optimization guide for React and Next.js applications, maintained by Vercel.

reactnextjsbest-practices

Install Command

Author

vercel-labs

Source

agent-skills

Installs

81.5K

Vercel React Best Practices

Comprehensive performance optimization guide for React and Next.js applications, maintained by Vercel. Contains 57 rules across 8 categories, prioritized by impact to guide automated refactoring and code generation.

When to Apply

Reference these guidelines when:

  • Writing new React components or Next.js pages
  • Implementing data fetching (client or server-side)
  • Reviewing code for performance issues
  • Refactoring existing React/Next.js code
  • Optimizing bundle size or load times

Rule Categories by Priority

PriorityCategoryImpact Prefix
1Eliminating WaterfallsCRITICAL (async-)
2Bundle Size OptimizationCRITICAL (bundle-)
3Server-Side PerformanceHIGH (server-)
4Client-Side Data FetchingMEDIUM-HIGH (client-)
5Re-render OptimizationMEDIUM (rerender-)
6Rendering PerformanceMEDIUM (rendering-)
7JavaScript PerformanceLOW-MEDIUM (js-)
8Advanced PatternsLOW (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-dependencies: Use better-all for partial dependencies
  • async-api-routes: Start promises early, await late in API routes
  • async-suspense-boundaries: Use Suspense to stream content

2. Bundle Size Optimization (CRITICAL)

  • bundle-barrel-imports: Import directly, avoid barrel files
  • bundle-dynamic-imports: Use next/dynamic for heavy components
  • bundle-defer-third-party: Load analytics/logging after hydration
  • bundle-conditional: Load modules only when feature is activated
  • bundle-preload: Preload on hover/focus for perceived speed

3. Server-Side Performance (HIGH)

  • server-auth-actions: Authenticate server actions like API routes
  • server-cache-react: Use React.cache() for per-request deduplication
  • server-cache-lru: Use LRU cache for cross-request caching
  • server-dedup-props: Avoid duplicate serialization in RSC props
  • server-serialization: Minimize data passed to client components
  • server-parallel-fetching: Restructure components to parallelize fetches
  • server-after-nonblocking: Use after() for non-blocking operations

4. Client-Side Data Fetching (MEDIUM-HIGH)

  • client-swr-dedup: Use SWR for automatic request deduplication
  • client-event-listeners: Deduplicate global event listeners
  • client-passive-event-listeners: Use passive listeners for scroll
  • client-localstorage-schema: Version and minimize localStorage data

5. Re-render Optimization (MEDIUM)

  • rerender-defer-reads: Don't subscribe to state only used in callbacks
  • rerender-memo: Extract expensive work into memoized components
  • rerender-derived-state-no-effect: Derive state during render, not effects
  • rerender-functional-setstate: Use functional setState for stable callbacks
  • rerender-transitions: Use startTransition for non-urgent updates
  • rerender-use-ref-transient-values: Use refs for transient frequent values

6. Rendering Performance (MEDIUM)

  • rendering-content-visibility: Use content-visibility for long lists
  • rendering-hoist-jsx: Extract static JSX outside components
  • rendering-svg-precision: Reduce SVG coordinate precision
  • rendering-usetransition-loading: Prefer useTransition for loading state

7. JavaScript Performance (LOW-MEDIUM)

  • js-batch-dom-css: Group CSS changes via classes or cssText
  • js-index-maps: Build Map for repeated lookups
  • js-combine-iterations: Combine multiple filter/map into one loop
  • js-early-exit: Return early from functions
  • js-set-map-lookups: Use Set/Map for O(1) lookups

8. Advanced Patterns (LOW)

  • advanced-event-handler-refs: Store event handlers in refs
  • advanced-init-once: Initialize app once per app load
  • advanced-use-latest: useLatest for stable callback refs