用 react-best-practices 給 AI 編程加上 React 性能守門員

前言

用 Cursor、Claude Code、Codex 這類 AI 編程工具寫 React / Next.js 時,組件和頁面往往能很快跑起來,但上線後常見的問題並沒有消失:接口一個接一個串行等待、客戶端 bundle 越來越大、無關狀態一變就整頁重渲染。性能問題通常是「事後救火」——發版感覺變慢了,再去查 useMemo、再去拆包,成本高,也容易改錯地方。

Vercel 工程團隊把多年在生產環境裏踩過的坑,整理成一套面向 AI Agent 的規則庫,打包成 Agent Skill:react-best-practices(Skill 正式名稱爲 vercel-react-best-practices)。裝上之後,Agent 在寫組件、做數據獲取、做重構時,會按「影響優先級」去套這些規則,而不是先糾結微優化。

本文按官方倉庫與 Vercel 博客覈實後的信息,介紹它是什麼、規則怎麼分、如何安裝啓用,以及怎麼在日常開發裏用起來。

這是什麼

vercel-react-best-practices 是 Vercel 官方維護的 Agent Skill,收錄在倉庫 vercel-labs/agent-skillsskills/react-best-practices/ 目錄下。許可證爲 MIT,SKILL.md 中標註 author: vercelversion: "1.0.0"

一句話定位:給 React / Next.js 的性能優化指南,專門寫成 AI Agent 可讀取、可執行的 Skill 格式,用於編寫、審查、重構時對齊同一套高性能模式。

根據當前 SKILL.md,規則集包含 70 條規則、8 個類別,按影響從高到低排序,用來指導自動化重構與代碼生成。需要說明的是:2026 年 1 月 Vercel 官方博客與倉庫 README 仍寫「40+ rules」;以一手資料 SKILL.md 爲準,規則數量已擴展到 70。早期宣傳裏的「40+」可以理解爲發佈時的規模,不影響「按影響優先級組織」這一核心設計。

它解決的核心問題也很直接:讓性能工作從「症狀驅動」變成「按優先級改對的地方」——先消請求瀑布、再砍 bundle,再談服務端與客戶端細節,最後纔是微優化。

核心功能與亮點

1. 按影響排序的八大類規則

官方把規則分成 8 類,並標明優先級與前綴,方便 Agent 按文件名定位細則:

優先級 類別 影響 前綴
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(JS 微優化) LOW-MEDIUM js-
8 Advanced Patterns(進階模式) LOW advanced-

Vercel 博客強調:大多數性能工作失敗,是因爲從棧太低的地方動手。若請求瀑布多等了幾百毫秒,再怎麼摳 useMemo 也救不了首屏;若每頁多塞 300KB JS,循環裏省幾微秒也幾乎無感。因此 CRITICAL 級先盯 async waterfallbundle

2. 每條規則都有「錯例 / 對例」

細則文件在 Skill 目錄的 rules/ 下(例如 rules/async-parallel.md)。每條通常包含:爲什麼重要、錯誤寫法、正確寫法、補充說明。全部規則還會彙總進 AGENTS.md,方便 Agent 一次性查閱。

以官方示例 async-parallel(獨立異步操作用 Promise.all)爲例:

錯誤(串行,三次往返):

const user = await fetchUser()
const posts = await fetchPosts()
const comments = await fetchComments()

正確(並行,一輪往返):

const [user, posts, comments] = await Promise.all([
  fetchUser(),
  fetchPosts(),
  fetchComments()
])

博客裏還有另一類常見瀑布:分支里根本用不到的數據,卻在分支判斷之前就 await 了——正確做法是把 await 挪到真正需要的分支裏(對應規則如 async-defer-await)。

3. 觸發場景寫進 Skill 描述

SKILL.mddescription 寫明:在編寫、審查或重構 React / Next.js 代碼、涉及組件、頁面、數據獲取、bundle 優化或性能改進時,應使用本 Skill。安裝後,Agent 在相關任務上會自動引用這些指南。

4. 來源是生產實踐,不是紙上談兵

Vercel 博客寫明:規則來自十年以上的 React / Next.js 優化經驗,以及真實生產代碼庫裏的性能工作(例如把多次掃描消息列表合併成單次遍歷、把無依賴的 await 並行化、用惰性初始化避免每次渲染都 JSON.parse localStorage 等)。Skill 把這些經驗固化成 Agent 可反覆執行的檢查清單。

安裝與啓用

該 Skill 遵循通用 Agent Skills 格式,可用官方 Skills CLI 安裝。Vercel 文檔說明:Skills 可與 Claude Code、GitHub Copilot、Cursor、Cline 等 18+ 種 AI Agent 配合使用。

只裝這一條 Skill(推薦)

官方文檔與 skills.sh 給出的安裝命令爲:

npx skills add vercel-labs/agent-skills --skill vercel-react-best-practices

也可寫成完整倉庫 URL:

npx skills add https://github.com/vercel-labs/agent-skills --skill vercel-react-best-practices

注意:安裝時 --skill 參數要用正式名稱 vercel-react-best-practices(2026 年 6 月倉庫將 namereact-best-practices 更名爲該名稱),目錄名仍是 skills/react-best-practices/

安裝整個 agent-skills 倉庫

若希望一併裝上同倉庫其他 Skill(如 web-design-guidelines、composition-patterns 等):

npx skills add vercel-labs/agent-skills

CLI 會解析倉庫、發現其中的 Skill,並檢測本機已安裝的編碼 Agent,再引導你選擇安裝範圍與方式。

項目級與全局

  • 默認安裝到當前項目(便於提交進倉庫、團隊共享)。
  • -g 可裝到用戶級,跨項目可用:
npx skills add vercel-labs/agent-skills --skill vercel-react-best-practices -g

環境要求:Skills CLI 需要 Node.js 18+,可用 npx 直接跑,不必先全局安裝 CLI。

安裝完成後一般無需額外配置:相關任務出現時,Agent 會按 Skill 說明自動引用規則。

典型用法示例

官方 README 給出的用法很直接。安裝後,在 Cursor / Claude Code / Codex 等工具裏用自然語言觸發即可,例如:

Review this React component for performance issues
Help me optimize this Next.js page

更具體一些,可以點名關注 CRITICAL 級問題:

請按 vercel-react-best-practices 審查這個頁面:
1. 是否存在異步請求瀑布(該並行卻串行、該延後 await 卻提前 await)
2. 是否有 barrel import / 過重的客戶端依賴導致 bundle 膨脹
3. 給出對應規則前綴(如 async-、bundle-)和改法

Agent 側會去讀 rules/ 下的細則或 AGENTS.md。你也可以自己打開某條規則對照學習,例如:

rules/async-parallel.md
rules/bundle-barrel-imports.md
rules/server-cache-react.md

CRITICAL / HIGH 類裏還有一批值得優先記住的規則名(摘自 SKILL.md 速查):

  • async-parallel:獨立操作用 Promise.all
  • async-defer-await:只在真正用到的分支裏 await
  • async-suspense-boundaries:用 Suspense 流式輸出
  • bundle-barrel-imports:避免 barrel 文件,直接按需 import
  • bundle-dynamic-imports:重型組件用 next/dynamic
  • server-cache-react:用 React.cache() 做請求內去重
  • server-parallel-fetching:調整組件結構以並行拉取數據

適用場景與注意事項

適合誰、什麼時候用

  • 日常用 AI 寫 React 組件、Next.js App Router 頁面
  • Code Review 時專門查性能(瀑布、包體積、RSC 序列化、重渲染)
  • 重構已有頁面:先按 CRITICAL → HIGH 排期,再處理 MEDIUM / LOW
  • 團隊希望「人和 Agent 用同一套性能決策」,減少風格漂移

使用時注意

  1. 先高優先級,再微優化。 規則本身已按影響排序;先消瀑布、砍 bundle,再去摳 js-* 微優化,否則收益很小。
  2. 規則數量以當前 SKILL.md 爲準。 博客/README 的「40+」與 SKILL.md 的「70」並存時,以倉庫內 Skill 元數據爲準。
  3. 名稱別裝錯。 對外常稱 react-best-practices,CLI 的 --skill 要用 vercel-react-best-practices
  4. 它是指南,不是運行時監控。 Skill 不會替你採集線上 RUM;改完仍建議結合真實指標與構建分析驗證。
  5. 部分規則依賴 Next.js / React 新特性(如 after()ActivityuseEffectEvent 等)。項目版本較舊時,Agent 可能給出當前棧用不了的寫法,需要人工對照依賴版本取捨。

小結

react-best-practicesvercel-react-best-practices)把 Vercel 工程側的 React / Next.js 性能經驗,收成一套按影響排序的 Agent Skill:先消除瀑布與 bundle 浪費,再覆蓋服務端、客戶端數據、重渲染與進階模式。對已經把大量樣板代碼交給 AI 的前端團隊來說,它更像是「質量守門員」——讓生成與重構默認對齊同一套高性能模式。

官方地址:

  • Skill 目錄:https://github.com/vercel-labs/agent-skills/tree/main/skills/react-best-practices
  • skills.sh 頁面:https://skills.sh/vercel-labs/agent-skills/react-best-practices
  • 介紹博文:https://vercel.com/blog/introducing-react-best-practices
  • Agent Skills 文檔:https://vercel.com/docs/agent-resources/skills
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜