首页/前端开发/vercel-react-best-practices
V

vercel-react-best-practices

by @vercel-labsv
4.9(2,000)

Vercel维护的React和Next.js应用性能优化指南,包含8大类62条规则,帮助开发者构建高性能前端应用。

reactnext-jsweb-developmentperformance-optimizationGitHub
安装方式
npx skills add vercel-labs/agent-skills --skill vercel-react-best-practices
compare_arrows

Before / After 效果对比

1
使用前

过去,优化React和Next.js应用的性能,开发者往往需要自行摸索、查阅零散资料,或依赖个人经验。这导致优化过程缺乏系统性,容易遗漏关键点,且效果难以保证。应用性能提升缓慢,用户体验不佳,影响产品竞争力。

使用后

现在,遵循Vercel维护的React和Next.js性能优化指南,开发者能系统性地提升应用性能。这份包含8大类62条规则的指南,提供了权威且实用的优化策略,帮助开发者从代码层面到部署环节全面提升应用速度和响应能力。这显著缩短了优化周期,确保了应用的高性能表现,提升了用户满意度。

description SKILL.md

vercel-react-best-practices

Vercel React Best Practices

Comprehensive performance optimization guide for React and Next.js applications, maintained by Vercel. Contains 62 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

Priority Category Impact Prefix

1 Eliminating Waterfalls CRITICAL async-

2 Bundle Size Optimization CRITICAL bundle-

3 Server-Side Performance HIGH server-

4 Client-Side Data Fetching MEDIUM-HIGH client-

5 Re-render Optimization MEDIUM rerender-

6 Rendering Performance MEDIUM rendering-

7 JavaScript Performance LOW-MEDIUM js-

8 Advanced Patterns LOW 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-hoist-static-io - Hoist static I/O (fonts, logos) to module level

  • 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-memo-with-default-value - Hoist default non-primitive props

  • rerender-dependencies - Use primitive dependencies in effects

  • rerender-derived-state - Subscribe to derived booleans, not raw values

  • rerender-derived-state-no-effect - Derive state during render, not effects

  • rerender-functional-setstate - Use functional setState for stable callbacks

  • rerender-lazy-state-init - Pass function to useState for expensive values

  • rerender-simple-expression-in-memo - Avoid memo for simple primitives

  • rerender-move-effect-to-event - Put interaction logic in event handlers

  • rerender-transitions - Use startTransition for non-urgent updates

  • rerender-use-ref-transient-values - Use refs for transient frequent values

  • rerender-no-inline-components - Don't define components inside components

6. Rendering Performance (MEDIUM)

  • rendering-animate-svg-wrapper - Animate div wrapper, not SVG element

  • 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-hydration-no-flicker - Use inline script for client-only data

  • rendering-hydration-suppress-warning - Suppress expected mismatches

  • rendering-activity - Use Activity component for show/hide

  • rendering-conditional-render - Use ternary, not && for conditionals

  • rendering-usetransition-loading - Prefer useTransition for loading state

  • rendering-resource-hints - Use React DOM resource hints for preloading

  • rendering-script-defer-async - Use defer or async on script tags

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-cache-property-access - Cache object properties in loops

  • js-cache-function-results - Cache function results in module-level Map

  • js-cache-storage - Cache localStorage/sessionStorage reads

  • js-combine-iterations - Combine multiple filter/map into one loop

  • js-length-check-first - Check array length before expensive comparison

  • js-early-exit - Return early from functions

  • js-hoist-regexp - Hoist RegExp creation outside loops

  • js-min-max-loop - Use loop for min/max instead of sort

  • js-set-map-lookups - Use Set/Map for O(1) lookups

  • js-tosorted-immutable - Use toSorted() for immutability

  • js-flatmap-filter - Use flatMap to map and filter in one pass

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

How to Use

Read individual rule files for detailed explanations and code examples:

rules/async-parallel.md
rules/bundle-barrel-imports.md

Each rule file contains:

  • Brief explanation of why it matters

  • Incorrect code example with explanation

  • Correct code example with explanation

  • Additional context and references

Full Compiled Document

For the complete guide with all rules expanded: AGENTS.md Weekly Installs222.6KRepositoryvercel-labs/agent-skillsGitHub Stars23.2KFirst SeenJan 19, 2026Security AuditsGen Agent Trust HubPassSocketPassSnykPassInstalled onopencode158.8Kgemini-cli156.3Kcodex155.5Kgithub-copilot145.4Kcursor139.4Kclaude-code127.1K

forum用户评价 (0)

发表评价

效果
易用性
文档
兼容性

暂无评价

统计数据

安装量359.7K
评分4.9 / 5.0
版本
更新日期2026年4月30日
对比案例1 组

用户评分

4.9(2,000)
5
77%
4
23%
3
0%
2
0%
1
0%

为此 Skill 评分

0.0

兼容平台

🔧Claude Code
🔧OpenClaw
🔧OpenCode
🔧Codex
🔧Gemini CLI
🔧GitHub Copilot
🔧Amp
🔧Kimi CLI

时间线

创建2026年3月16日
最后更新2026年4月30日
🎁 Agent 知识卡片