react-optimise
35
总安装量
2
周安装量
#10508
全站排名
安装命令
npx skills add https://github.com/pproenca/dot-skills --skill react-optimise
Agent 安装分布
claude-code
2
amp
1
opencode
1
kimi-cli
1
codex
1
github-copilot
1
Skill 文档
React Optimise Best Practices
Application-level performance optimization guide for React applications. Contains 43 rules across 8 categories, prioritized by impact from critical (React Compiler, bundle optimization) to incremental (memory management).
When to Apply
- Optimizing React application performance or bundle size
- Adopting or troubleshooting React Compiler v1.0
- Splitting bundles and configuring code splitting
- Improving Core Web Vitals (INP, LCP, CLS)
- Profiling render performance and identifying bottlenecks
- Fixing memory leaks in long-lived single-page applications
- Optimizing data fetching patterns and eliminating waterfalls
Rule Categories
| Category | Impact | Rules | Key Topics |
|---|---|---|---|
| React Compiler Mastery | CRITICAL | 6 | Compiler-friendly code, bailout detection, incremental adoption |
| Bundle & Loading | CRITICAL | 6 | Route splitting, barrel elimination, dynamic imports, prefetching |
| Rendering Optimization | HIGH | 6 | Virtualization, children pattern, debouncing, CSS containment |
| Data Fetching Performance | HIGH | 5 | Waterfall elimination, route preloading, SWR, deduplication |
| Core Web Vitals | MEDIUM-HIGH | 5 | INP yielding, LCP priority, CLS prevention, image optimization |
| State & Subscription Performance | MEDIUM-HIGH | 5 | Context splitting, selectors, atomic state, derived state |
| Profiling & Measurement | MEDIUM | 5 | DevTools profiling, flame charts, CI budgets, production builds |
| Memory Management | LOW-MEDIUM | 5 | Effect cleanup, async cancellation, closure leaks, heap analysis |
Quick Reference
Critical patterns â get these right first:
- Write compiler-friendly components to unlock automatic 2-10x optimization
- Split code at route boundaries to reduce initial bundle by 40-70%
- Eliminate barrel files to enable tree shaking
- Detect and fix silent compiler bailouts
Common mistakes â avoid these anti-patterns:
- Reading refs during render (breaks compiler optimization)
- Importing entire libraries when only using one function
- Not profiling before optimizing (targeting the wrong bottleneck)
- Missing effect cleanup (subscription memory leaks)
Table of Contents
- React Compiler Mastery â CRITICAL
- 1.1 Detect and Fix Silent Compiler Bailouts â CRITICAL (prevents losing automatic memoization)
- 1.2 Isolate Side Effects from Render for Compiler Correctness â CRITICAL (prevents compiler from producing incorrect cached output)
- 1.3 Remove Manual Memoization After Compiler Adoption â CRITICAL (20-40% code reduction in component files)
- 1.4 Use Incremental Compiler Adoption with Directives â CRITICAL (enables safe rollout without full codebase migration)
- 1.5 Use Ref Access Patterns That Enable Compilation â CRITICAL (maintains compiler optimization for ref-using components)
- 1.6 Write Compiler-Friendly Component Patterns â CRITICAL (2-10x automatic render optimization)
- Bundle & Loading â CRITICAL
- 2.1 Configure Dependencies for Effective Tree Shaking â CRITICAL (50-90% dead code elimination in dependencies)
- 2.2 Eliminate Barrel Files to Enable Tree Shaking â CRITICAL (200-800ms import cost eliminated)
- 2.3 Enforce Bundle Size Budgets with Analysis Tools â CRITICAL (prevents gradual bundle size regression)
- 2.4 Prefetch Likely Next Routes on Interaction â CRITICAL (200-1000ms faster perceived navigation)
- 2.5 Split Code at Route Boundaries with React.lazy â CRITICAL (40-70% reduction in initial bundle size)
- 2.6 Use Dynamic Imports for Heavy Libraries â CRITICAL (100-500KB removed from critical path)
- Rendering Optimization â HIGH
- 3.1 Avoid Inline Object Creation in JSX Props â HIGH (prevents unnecessary child re-renders)
- 3.2 Debounce Expensive Derived Computations â HIGH (50-200ms saved per keystroke)
- 3.3 Use CSS Containment to Isolate Layout Recalculation â HIGH (60-90% layout recalc reduction)
- 3.4 Use Children Pattern to Prevent Parent Re-Renders â HIGH (eliminates re-renders of static subtrees)
- 3.5 Use Stable Keys for List Rendering Performance â HIGH (O(n) DOM mutations to O(1) moves)
- 3.6 Virtualize Long Lists with TanStack Virtual â HIGH (O(n) to O(1) DOM nodes)
- Data Fetching Performance â HIGH
- 4.1 Abort Stale Requests on Navigation or Re-fetch â HIGH (prevents stale data display)
- 4.2 Deduplicate Identical In-Flight Requests â HIGH (50-80% fewer network requests)
- 4.3 Eliminate Sequential Data Fetch Waterfalls â HIGH (2-5x faster page loads)
- 4.4 Preload Data at Route Level Before Component Mounts â HIGH (200-1000ms eliminated)
- 4.5 Use Stale-While-Revalidate for Cache Freshness â HIGH (0ms perceived load for returning visitors)
- Core Web Vitals â MEDIUM-HIGH
- 5.1 Instrument Real User Monitoring with web-vitals â MEDIUM-HIGH (enables data-driven optimization)
- 5.2 Optimize Images with Responsive Sizing and Lazy Loading â MEDIUM-HIGH (40-70% bandwidth reduction)
- 5.3 Optimize Interaction to Next Paint with Yielding â MEDIUM-HIGH (INP from 500ms+ to under 200ms)
- 5.4 Optimize Largest Contentful Paint with Priority Loading â MEDIUM-HIGH (200-1000ms LCP improvement)
- 5.5 Prevent Cumulative Layout Shift with Size Reservations â MEDIUM-HIGH (CLS from 0.25+ to under 0.1)
- State & Subscription Performance â MEDIUM-HIGH
- 6.1 Derive State Instead of Syncing for Zero Extra Renders â MEDIUM-HIGH (eliminates double-render cycle)
- 6.2 Separate Server State from Client State Management â MEDIUM-HIGH (reduces state management code by 40%)
- 6.3 Split Contexts to Isolate High-Frequency Updates â MEDIUM-HIGH (5-50x fewer re-renders)
- 6.4 Use Atomic State for Independent Reactive Values â MEDIUM-HIGH (3-10x fewer unnecessary re-renders)
- 6.5 Use Selector-Based Subscriptions for Granular Updates â MEDIUM-HIGH (reduces re-renders to only affected components)
- Profiling & Measurement â MEDIUM
- 7.1 Benchmark with Production Builds Only â MEDIUM (prevents false positives from dev-mode overhead)
- 7.2 Enforce Performance Budgets in CI â MEDIUM (catches 90% of perf issues before merge)
- 7.3 Profile Before Optimizing to Target Real Bottlenecks â MEDIUM (10x more effective optimization effort)
- 7.4 Read Flame Charts to Identify Hot Render Paths â MEDIUM (identifies exact function causing 80% of render time)
- 7.5 Use React Performance Tracks for Render Analysis â MEDIUM (pinpoints render bottlenecks in minutes)
- Memory Management â LOW-MEDIUM
- 8.1 Avoid Closure-Based Memory Leaks in Event Handlers â LOW-MEDIUM (prevents MB-scale memory retention)
- 8.2 Cancel Async Operations on Unmount â LOW-MEDIUM (prevents stale updates and memory retention)
- 8.3 Clean Up Effects to Prevent Subscription Memory Leaks â LOW-MEDIUM (prevents linear memory growth)
- 8.4 Dispose Heavy Resources in Cleanup Functions â LOW-MEDIUM (prevents 5-50MB per resource retention)
- 8.5 Use Heap Snapshots to Detect Component Retention â LOW-MEDIUM (identifies 10-100MB memory growth)
References
- https://react.dev
- https://react.dev/blog/2025/10/07/react-compiler-1
- https://web.dev/articles/vitals
- https://tanstack.com/virtual
- https://developer.chrome.com/docs/devtools/performance
Related Skills
- For React 19 API best practices, see
reactskill - For Next.js App Router optimization, see
nextjs-16-app-routerskill - For client-side form handling, see
react-hook-formskill