RE
react-performance
Optimize React rendering, bundle size, and data fetching performance. Use when optimizing React rendering performance, reducing re-renders, or improving bundle size. (triggers: **/*.tsx, **/*.jsx, waterfall, bundle, lazy, suspense, dynamic)
Install
mkdir -p .claude/skills/react-performance && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/15260" && unzip -o skill.zip -d .claude/skills/react-performance && rm skill.zipInstalls to .claude/skills/react-performance
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Optimize React rendering, bundle size, and data fetching performance. Use when optimizing React rendering performance, reducing re-renders, or improving bundle size. (triggers: **/*.tsx, **/*.jsx, waterfall, bundle, lazy, suspense, dynamic)240 chars✓ has a “when” trigger
About this skill
React Performance
Priority: P0 (CRITICAL)
Strategies to minimize waterfalls, bundle size, and render cost.
Eliminate Data Waterfalls (P0)
- Parallel Data: Use
Promise.all([getUser(), getProducts(), ...])for independent fetches. Avoid sequential awaits (Request Waterfalls). - Preload: Start fetches before render (in event handlers or route loaders).
- Suspense: Use Suspense boundaries to stream partial content and show partial content early.
See implementation examples for parallel fetch with Suspense boundary and lazy loading patterns.
Reduce Bundle Size (P0)
- No Barrel Files: Avoid barrel files (importing from index.ts); import directly from component files to improve tree-shaking.
- Lazy Load: Use
React.lazyornext/dynamicfor heavy components like Charts, * Modals*, or large libraries. - Dependency Reduction: Replace moment with dayjs or lodash with native/radash to drop
bytes. Use
source-map-explorerorbundle-visualizerto find bloat.
Minimize Re-renders (P1)
- Isolation: Move state as close to its usage as possible. Isolate heavy UI updates.
- List Performance: Use
react-windoworreact-virtualfor virtualization of lists with 500+ items. Wrap list items inReact.memo. - Context Splitting: Split Context into
StateandDispatchobjects. This prevents all consumers from re-rendering when only a setter is needed. - Stability: Use
useMemofor derived list data and passing stable object/array references to children. - Content Visibility:
content-visibility: autofor off-screen CSS content. - Static Hoisting: Extract static objects/JSX outside component scope.
- Transitions:
startTransitionfor non-urgent UI updates.
Parallelize Computation (P1)
- Web Workers: Move heavy computation (Encryption, Image processing, Large Data Sorting) off the
main thread using
ComlinkorWorker.
Optimize Server Components (RSC) (P1)
- Caching:
React.cachefor per-request deduplication. - Serialization: Minimize props passing to Client Components (only IDs/primitives).
Anti-Patterns
- No
export *: Breaks tree-shaking. - No Sequential Await: Causes waterfalls.
- No Inline Objects:
style={{}}breaks strict equality checks (if memoized). - No Heavy Libs: Avoid moment/lodash (use dayjs/radash).
References
See references/REFERENCE.md for Profiler usage, bundle analysis, Web Workers, and debounce patterns.