Token导航 LogoToken导航TokenDH.com
开发规范需要联网clawhub未标认证来源可访问clear审计通过

react-best-practicesReact 最佳实践

Agent Skill

用于辅助前端页面、组件、样式和交互逻辑的开发与维护。它适合让 Agent 生成或审查 React、Next.js、Vue、Tailwind、CSS 等相关代码,整理组件结构,或定位布局和性能问题。使用时需要结合项目现有设计系统、路由和构建方式,避免只生成孤立片段;涉及页面改动时,应配合本地预览和构建检查确认视觉效果。

总安装

133,680

周安装

5,570

GitHub Stars

4

下载量

44,560
OpenClaw

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

MIT-0

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:react-best-practices(React 最佳实践)
来源仓库:https://github.com/wpank/react-best-practices
安装命令:
openclaw skills install react-best-practices
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 OpenClaw 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

ClawHubOpenClaw
openclaw skills install react-best-practices

简介

Vercel Engineering 的 React 和 Next.js 性能优化指南。 8 个类别的 57 条规则,用于编写、审查和重构 React 代码。

SKILL.md

name
react-best-practices
model
standard
version
1.0.0
description
>
tags
[react, nextjs, performance, optimization, ssr, bundle, rendering]
license
MIT
author
vercel

React Best Practices

Comprehensive performance optimization guide for React and Next.js applications from Vercel Engineering. Contains 57 rules across 8 categories, prioritized by impact.

Installation

OpenClaw / Moltbot / Clawbot

npx clawhub@latest install react-best-practices

WHAT This Skill Does

Provides actionable rules for:

  • Eliminating request waterfalls
  • Optimizing bundle size
  • Improving server-side performance
  • Efficient client-side data fetching
  • Minimizing re-renders
  • Rendering performance optimizations
  • JavaScript micro-optimizations
  • Advanced patterns for edge cases

WHEN To Use

  • Writing new React components or Next.js pages
  • Implementing data fetching (client or server-side)
  • Reviewing code for performance issues
  • Refactoring React/Next.js applications
  • Optimizing bundle size or load times
  • Debugging slow renders or waterfalls

KEYWORDS

react performance, nextjs optimization, bundle size, waterfalls, suspense, server components, rsc, rerender, usememo, dynamic import, parallel fetching, cache, swr

Rule Categories by Priority

PriorityCategoryImpactRule Prefix
1Eliminating WaterfallsCRITICALasync-
2Bundle Size OptimizationCRITICALbundle-
3Server-Side PerformanceHIGHserver-
4Client-Side Data FetchingMEDIUM-HIGHclient-
5Re-render OptimizationMEDIUMrerender-
6Rendering PerformanceMEDIUMrendering-
7JavaScript PerformanceLOW-MEDIUMjs-
8Advanced PatternsLOWadvanced-

Quick Reference

1. Eliminating Waterfalls (CRITICAL)

RuleDescription
async-defer-awaitMove await into branches where actually used
async-parallelUse Promise.all() for independent operations
async-dependenciesUse better-all for partial dependencies
async-api-routesStart promises early, await late in API routes
async-suspense-boundariesUse Suspense to stream content

2. Bundle Size Optimization (CRITICAL)

RuleDescription
bundle-barrel-importsImport directly, avoid barrel files
bundle-dynamic-importsUse next/dynamic for heavy components
bundle-defer-third-partyLoad analytics/logging after hydration
bundle-conditionalLoad modules only when feature is activated
bundle-preloadPreload on hover/focus for perceived speed

3. Server-Side Performance (HIGH)

RuleDescription
server-auth-actionsAuthenticate server actions like API routes
server-cache-reactUse React.cache() for per-request dedup
server-cache-lruUse LRU cache for cross-request caching
server-dedup-propsAvoid duplicate serialization in RSC props
server-serializationMinimize data passed to client components
server-parallel-fetchingRestructure components to parallelize fetches
server-after-nonblockingUse after() for non-blocking operations

4. Client-Side Data Fetching (MEDIUM-HIGH)

RuleDescription
client-swr-dedupUse SWR for automatic request deduplication
client-event-listenersDeduplicate global event listeners
client-passive-event-listenersUse passive listeners for scroll
client-localstorage-schemaVersion and minimize localStorage data

5. Re-render Optimization (MEDIUM)

RuleDescription
rerender-defer-readsDon't subscribe to state only used in callbacks
rerender-memoExtract expensive work into memoized components
rerender-memo-with-default-valueHoist default non-primitive props
rerender-dependenciesUse primitive dependencies in effects
rerender-derived-stateSubscribe to derived booleans, not raw values
rerender-derived-state-no-effectDerive state during render, not effects
rerender-functional-setstateUse functional setState for stable callbacks
rerender-lazy-state-initPass function to useState for expensive values
rerender-simple-expression-in-memoAvoid memo for simple primitives
rerender-move-effect-to-eventPut interaction logic in event handlers
rerender-transitionsUse startTransition for non-urgent updates
rerender-use-ref-transient-valuesUse refs for transient frequent values

6. Rendering Performance (MEDIUM)

RuleDescription
rendering-animate-svg-wrapperAnimate div wrapper, not SVG element
rendering-content-visibilityUse content-visibility for long lists
rendering-hoist-jsxExtract static JSX outside components
rendering-svg-precisionReduce SVG coordinate precision
rendering-hydration-no-flickerUse inline script for client-only data
rendering-hydration-suppress-warningSuppress expected mismatches
rendering-activityUse Activity component for show/hide
rendering-conditional-renderUse ternary, not && for conditionals
rendering-usetransition-loadingPrefer useTransition for loading state

7. JavaScript Performance (LOW-MEDIUM)

RuleDescription
js-batch-dom-cssGroup CSS changes via classes or cssText
js-index-mapsBuild Map for repeated lookups
js-cache-property-accessCache object properties in loops
js-cache-function-resultsCache function results in module-level Map
js-cache-storageCache localStorage/sessionStorage reads
js-combine-iterationsCombine multiple filter/map into one loop
js-length-check-firstCheck array length before expensive ops
js-early-exitReturn early from functions
js-hoist-regexpHoist RegExp creation outside loops
js-min-max-loopUse loop for min/max instead of sort
js-set-map-lookupsUse Set/Map for O(1) lookups
js-tosorted-immutableUse toSorted() for immutability

8. Advanced Patterns (LOW)

RuleDescription
advanced-event-handler-refsStore event handlers in refs
advanced-init-onceInitialize app once per app load
advanced-use-latestuseLatest for stable callback refs

How to Use

Reading Individual Rules

Each rule file in rules/ contains:

  • Brief explanation of why it matters
  • Incorrect code example with explanation
  • Correct code example with explanation
  • Additional context and references
rules/async-parallel.md
rules/bundle-barrel-imports.md
rules/rerender-memo.md

Full Compiled Document

For the complete guide with all rules expanded: AGENTS.md

This 2900+ line document contains every rule with full code examples and detailed explanations, suitable for comprehensive reference.

Key Patterns

Parallel Data Fetching

// Bad: sequential
const user = await fetchUser()
const posts = await fetchPosts()

// Good: parallel
const [user, posts] = await Promise.all([
  fetchUser(),
  fetchPosts()
])

Dynamic Imports

// Bad: bundles Monaco with main chunk
import { MonacoEditor } from './monaco-editor'

// Good: loads on demand
const MonacoEditor = dynamic(
  () => import('./monaco-editor').then(m => m.MonacoEditor),
  { ssr: false }
)

Functional setState

// Bad: stale closure risk
const addItem = useCallback((item) => {
  setItems([...items, item])
}, [items]) // recreates on every items change

// Good: always uses latest state
const addItem = useCallback((item) => {
  setItems(curr => [...curr, item])
}, []) // stable reference

NEVER Do

  1. NEVER await operations sequentially when they can run in parallel
  2. NEVER import from barrel files (import { X } from 'lib') — import directly
  3. NEVER skip authentication in Server Actions — treat them like API routes
  4. NEVER pass entire objects to client components when only one field is needed
  5. NEVER use && for conditional rendering with numbers — use ternary
  6. NEVER subscribe to state only used in event handlers — read on demand
  7. NEVER mutate arrays with .sort() — use .toSorted()
  8. NEVER put initialization in useEffect([]) — use module-level guard

适合场景

01

OpenClaw 用户查找和安装 Skill 时

02

用户想查找某类 Agent Skill 时

03

需要根据任务场景推荐可安装能力包时

04

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

补充不同宿主或平台的使用分布数据

能力 5

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

OpenClaw

71.09%
按下载量换算31,678

安全审计

VirusTotal

通过

ClawScan

通过

Static analysis

未展示

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills