Overview
This skill guides automated refactoring and code generation with proven patterns for:- Eliminating request waterfalls
- Optimizing bundle size
- Improving server-side performance
- Reducing client-side overhead
- Minimizing unnecessary re-renders
Rules are prioritized from CRITICAL (high user impact) to LOW (incremental gains) to guide optimization efforts.
Rule Categories
1. Eliminating Waterfalls (CRITICAL)
Waterfalls are the #1 performance killer. Each sequential await adds full network latency.async-defer-await- Move await into branches where actually usedasync-parallel- Use Promise.all() for independent operationsasync-dependencies- Use better-all for partial dependenciesasync-suspense-boundaries- Use Suspense to stream content
2. Bundle Size Optimization (CRITICAL)
Reducing initial bundle size improves Time to Interactive and Largest Contentful Paint.bundle-barrel-imports- Import directly, avoid barrel filesbundle-dynamic-imports- Use next/dynamic for heavy componentsbundle-defer-third-party- Load analytics/logging after hydrationbundle-conditional- Load modules only when feature is activated
3. Server-Side Performance (HIGH)
Optimizing server-side rendering eliminates server-side waterfalls and reduces response times.server-auth-actions- Authenticate server actions like API routesserver-cache-react- Use React.cache() for per-request deduplicationserver-cache-lru- Use LRU cache for cross-request cachingserver-parallel-fetching- Restructure components to parallelize fetches
4. Client-Side Data Fetching (MEDIUM-HIGH)
client-swr-dedup- Use SWR for automatic request deduplicationclient-event-listeners- Deduplicate global event listenersclient-passive-event-listeners- Use passive listeners for scroll
5. Re-render Optimization (MEDIUM)
rerender-defer-reads- Don’t subscribe to state only used in callbacksrerender-memo- Extract expensive work into memoized componentsrerender-functional-setstate- Use functional setState for stable callbacksrerender-derived-state-no-effect- Derive state during render, not effects
6. Rendering Performance (MEDIUM)
rendering-animate-svg-wrapper- Animate div wrapper, not SVG elementrendering-content-visibility- Use content-visibility for long listsrendering-hoist-jsx- Extract static JSX outside components
7. JavaScript Performance (LOW-MEDIUM)
js-index-maps- Build Map for repeated lookupsjs-set-map-lookups- Use Set/Map for O(1) lookupsjs-tosorted-immutable- Use toSorted() for immutability
8. Advanced Patterns (LOW)
advanced-init-once- Initialize app once per app loadadvanced-event-handler-refs- Store event handlers in refsadvanced-use-latest- useLatest for stable callback refs
When to Apply
Load this skill 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
Impact Metrics
Rules are prioritized by measured impact:| Category | Example Improvement |
|---|---|
| Eliminating Waterfalls | 2-10× faster page loads |
| Bundle Optimization | 15-70% faster dev boot, 28% faster builds |
| Server Performance | 40% faster cold starts |
| Re-render Optimization | 50-90% fewer renders |
Skill Structure
References
Full documentation:.github/skills/react-best-practices/AGENTS.md
External resources: