mcpField
R
react-best-practices

react-best-practices

github.com/openai开发7.7k77 次安装3 周前更新
代码仓库

关于 react-best-practices

由 Vercel 维护的 React 和 Next.js 性能指南 Skill,包含按影响优先级组织的 64 条规则,分为八类。适用于编写、审查或重构应用的开发者和编码 Agent。

主要功能

  1. 01涵盖八类共 64 条规则
  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/openai/plugins --skill react-best-practices

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

包含的文件

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

AGENTS.md
metadata.json
README.md
agents/
openai.yaml
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

详细介绍

Vercel React 最佳实践

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

适用场景

在以下情况下参考这些指南:

  • 编写新的 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 - 直接导入,避免使用聚合导出文件
  • 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(字体、Logo)提升到模块级别
  • 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-split-combined-hooks - 拆分依赖项相互独立的 Hooks
  • rerender-move-effect-to-event - 将交互逻辑放入事件处理程序
  • rerender-transitions - 对非紧急更新使用 startTransition
  • rerender-use-deferred-value - 延迟开销大的渲染,保持输入响应
  • 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