react-best-practices

React and Next.js performance patterns. Use when writing, reviewing, or optimizing React components.

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-best-practices" with this command: npx skills add jgamaraalv/ts-dev-kit/jgamaraalv-ts-dev-kit-react-best-practices

React & Next.js Performance Patterns

Performance optimization guide for React and Next.js applications, based on Vercel Engineering practices. 8 categories organized by impact.

<constraints>

When to Apply

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

Quick Reference

1. Async Patterns (CRITICAL)

references/async-patterns.md

  • Prevent waterfall chains in API routes -- start promises early, await late
  • Defer await until needed -- move await into branches that use it
  • Dependency-based parallelization -- Promise.all() with .then() chaining
  • Strategic Suspense boundaries -- stream content with <Suspense>

2. Bundle Optimization (CRITICAL)

references/bundle-optimization.md

  • Avoid barrel file imports -- import directly from source files
  • Conditional module loading -- load only when feature is activated
  • Defer non-critical third-party libraries -- load after hydration
  • Dynamic imports for heavy components -- next/dynamic with ssr: false
  • Preload on user intent -- preload on hover/focus

3. Server-Side Performance (HIGH)

references/server-performance.md

  • after() for non-blocking operations -- logging, analytics after response
  • Authenticate Server Actions -- treat as public endpoints
  • Cross-request LRU caching -- share data across sequential requests
  • React.cache() deduplication -- per-request with primitive args
  • Avoid duplicate RSC serialization -- transform in client, not server
  • Parallel fetching via composition -- restructure component tree
  • Minimize serialization at boundaries -- pass only needed fields

4. Client-Side Patterns (MEDIUM-HIGH)

references/client-patterns.md

  • Deduplicate global event listeners -- useSWRSubscription
  • Version and minimize localStorage -- schema versioning, try-catch
  • Passive event listeners -- { passive: true } for scroll performance
  • SWR for automatic deduplication -- caching and revalidation

5. Re-render Optimization (MEDIUM)

references/rerender-optimization.md

  • Defer state reads to usage point -- read in callbacks, not render
  • Narrow effect dependencies -- use primitives, not objects
  • Derive state during render -- no state + effect for computed values
  • Functional setState -- stable callbacks, no stale closures
  • Hoist default non-primitive props -- stable defaults for memo()
  • Extract to memoized components -- skip computation with early returns
  • Interaction logic in event handlers -- not state + effect
  • useRef for transient values -- avoid re-render on frequent updates

6. Rendering Performance (MEDIUM)

references/rendering-performance.md

  • Animate SVG wrapper -- hardware-accelerated CSS on <div>, not <svg>
  • CSS content-visibility: auto -- defer off-screen rendering
  • Hoist static JSX -- extract constants outside components
  • Prevent hydration mismatch -- inline script for client-only data
  • useTransition over manual loading states -- built-in pending state

7. JavaScript Performance (LOW-MEDIUM)

references/js-performance.md

  • Avoid layout thrashing -- batch DOM reads and writes
  • Cache repeated function calls -- module-level Map
  • Cache storage API calls -- in-memory cache for localStorage/cookies
  • Build index Maps for lookups -- O(1) instead of O(n) .find()
  • Loop for min/max -- O(n) instead of O(n log n) sort

8. Advanced Patterns (LOW)

references/advanced-patterns.md

  • Store event handlers in refs -- stable effect subscriptions
  • Initialize app once per load -- module-level guard
</references>

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

bullmq

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

ui-ux-guidelines

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

ioredis

No summary provided by upstream source.

Repository SourceNeeds Review