mcpField
V
vercel-react-best-practices

vercel-react-best-practices

github.com/hainrixz开发28479 次安装6 天前更新
代码仓库

关于 vercel-react-best-practices

vercel-react-best-practices 是由 Vercel 维护的 React 和 Next.js 性能优化指南,适用于开发者与编码 Agent。它将 62 条规则按影响程度归入八类。

主要功能

  1. 01包含 62 条优化规则
  2. 02按影响程度划分八类
  3. 03提供异步瀑布与包体积指南
  4. 04涵盖服务端和客户端性能
  5. 05规则文件附详细说明与示例

适用场景

  1. 01检查 React 代码的性能问题
  2. 02优化 Next.js 数据获取
  3. 03重构组件以减少重复渲染
  4. 04指导自动代码生成

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/hainrixz/claude-webkit --skill vercel-react-best-practices

安装后在 Claude Code 中输入/vercel-react-best-practices确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

AGENTS.md
rules/
_sections.md
_template.md
advanced-event-handler-refs.md
advanced-init-once.md
advanced-use-latest.md
async-api-routes.md
async-defer-await.md
async-dependencies.md
async-parallel.md
async-suspense-boundaries.md
bundle-barrel-imports.md
bundle-conditional.md
bundle-defer-third-party.md
bundle-dynamic-imports.md
bundle-preload.md
client-event-listeners.md
client-localstorage-schema.md
client-passive-event-listeners.md
client-swr-dedup.md
js-batch-dom-css.md
js-cache-function-results.md
js-cache-property-access.md
js-cache-storage.md
js-combine-iterations.md
js-early-exit.md
js-flatmap-filter.md
js-hoist-regexp.md
js-index-maps.md
js-length-check-first.md

详细介绍

Vercel React 最佳实践

面向 React 和 Next.js 应用的全面性能优化指南,由 Vercel 维护。包含 8 个类别中的 62 条规则,并按影响程度排序,为自动重构和代码生成提供指导。

适用场景

在以下场景中参考这些指南:

  • 编写新的 React 组件或 Next.js 页面
  • 实现数据获取(客户端或服务器端)
  • 检查代码中的性能问题
  • 重构现有的 React/Next.js 代码
  • 优化包体积或加载时间

按优先级划分的规则类别

优先级类别影响前缀
1消除瀑布式请求CRITICALasync-
2包体积优化CRITICALbundle-
3服务端性能HIGHserver-
4客户端数据获取MEDIUM-HIGHclient-
5重新渲染优化MEDIUMrerender-
6渲染性能MEDIUMrendering-
7JavaScript 性能LOW-MEDIUMjs-
8高级模式LOWadvanced-

快速参考

1. 消除瀑布式请求(CRITICAL)
  • async-defer-await - 将 await 移入实际需要使用它的分支
  • async-parallel - 使用 Promise.all() 并行执行独立操作
  • async-dependencies - 使用 better-all 处理部分依赖
  • async-api-routes - 在 API 路由中尽早启动 Promise,延迟等待结果
  • async-suspense-boundaries - 使用 Suspense 流式传输内容
2. 包体积优化(CRITICAL)
  • bundle-barrel-imports - 直接导入,避免使用 barrel 文件
  • bundle-dynamic-imports - 对大型组件使用 next/dynamic
  • bundle-defer-third-party - 在 hydration 后加载分析和日志记录
  • bundle-conditional - 仅在功能启用时加载模块
  • bundle-preload - 在悬停或聚焦时预加载,提升感知速度
3. 服务端性能(HIGH)
  • server-auth-actions - 像验证 API 路由一样验证服务端操作
  • server-cache-react - 使用 React.cache() 在每个请求内进行去重
  • server-cache-lru - 使用 LRU 缓存实现跨请求缓存
  • server-dedup-props - 避免在 RSC 属性中重复序列化
  • server-hoist-static-io - 将静态 I/O(字体、徽标)提升到模块级别
  • server-serialization - 尽量减少传递给客户端组件的数据
  • server-parallel-fetching - 重构组件以并行获取数据
  • server-after-nonblocking - 使用 after() 执行非阻塞操作
4. 客户端数据获取(MEDIUM-HIGH)
  • client-swr-dedup - 使用 SWR 自动去重请求
  • client-event-listeners - 对全局事件侦听器进行去重
  • client-passive-event-listeners - 为滚动事件使用被动侦听器
  • client-localstorage-schema - 为 localStorage 数据添加版本并尽量精简
5. 重新渲染优化(MEDIUM)
  • rerender-defer-reads - 不要订阅仅在回调中使用的状态
  • rerender-memo - 将开销大的工作提取到经过记忆化的组件中
  • rerender-memo-with-default-value - 将默认的非原始类型属性提升到组件外部
  • rerender-dependencies - 在 effect 中使用原始类型依赖项
  • rerender-derived-state - 订阅派生布尔值,而非原始值
  • rerender-derived-state-no-effect - 在渲染期间派生状态,而非在 effect 中派生
  • rerender-functional-setstate - 使用函数式 setState 保持回调稳定
  • rerender-lazy-state-init - 将函数传递给 useState,以初始化开销大的值
  • rerender-simple-expression-in-memo - 避免对简单的原始值使用 memo
  • rerender-move-effect-to-event - 将交互逻辑放入事件处理函数中
  • rerender-transitions - 使用 startTransition 处理非紧急更新
  • rerender-use-ref-transient-values - 使用 ref 保存频繁变化的临时值
  • rerender-no-inline-components - 不要在组件内部定义组件
6. 渲染性能(MEDIUM)
  • rendering-animate-svg-wrapper - 为 div 包裹层添加动画,而不是 SVG 元素
  • rendering-content-visibility - 对长列表使用 content-visibility
  • rendering-hoist-jsx - 将静态 JSX 提取到组件外部
  • rendering-svg-precision - 降低 SVG 坐标精度
  • rendering-hydration-no-flicker - 对仅客户端数据使用内联脚本
  • rendering-hydration-suppress-warning - 抑制预期内的不匹配警告
  • rendering-activity - 使用 Activity 组件实现显示/隐藏
  • rendering-conditional-render - 条件渲染使用三元表达式,而不是 &&
  • rendering-usetransition-loading - 加载状态优先使用 useTransition
  • rendering-resource-hints - 使用 React DOM 资源提示进行预加载
  • rendering-script-defer-async - 在 script 标签上使用 defer 或 async
7. JavaScript 性能(LOW-MEDIUM)
  • js-batch-dom-css - 通过类名或 cssText 批量修改 CSS
  • js-index-maps - 为重复查找构建 Map
  • js-cache-property-access - 在循环中缓存对象属性
  • js-cache-function-results - 在模块级 Map 中缓存函数结果
  • js-cache-storage - 缓存 localStorage/sessionStorage 的读取结果
  • js-combine-iterations - 将多个 filter/map 合并为一次循环
  • js-length-check-first - 在进行高开销比较前先检查数组长度
  • js-early-exit - 从函数中提前返回
  • js-hoist-regexp - 将 RegExp 的创建提升到循环外部
  • js-min-max-loop - 使用循环求最小/最大值,而不是排序
  • js-set-map-lookups - 使用 Set/Map 实现 O(1) 查找
  • js-tosorted-immutable - 使用 toSorted() 保证不可变性
  • js-flatmap-filter - 使用 flatMap 在一次遍历中完成映射和过滤
8. 高级模式(LOW)
  • advanced-event-handler-refs - 将事件处理函数存储在 ref 中
  • advanced-init-once - 每次应用加载时只初始化一次
  • advanced-use-latest - 使用 useLatest 获得稳定的回调 ref

如何使用

阅读各个规则文件以获取详细说明和代码示例:

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

每个规则文件包含:

  • 对其重要性的简要说明
  • 带有说明的错误代码示例
  • 带有说明的正确代码示例
  • 额外的背景信息和参考

完整汇编文档

如需展开全部规则的完整指南:AGENTS.md

评论

支持 Markdown