Skip to content
Automation
Skill

/react-best-practices

Comprehensive performance optimization guide for React and Next.js applications, maintained by Vercel. Use when writing new React components or Next.js pages, implementing data fetching (client or server-side), or reviewing code for performance issues.

From plugin
lihongwei-cn
5200 skills1 agent
Install
$ npx -y skills add LiHongwei-cn/lihongwei-cn --skill react-best-practices --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/react-best-practices

Context preview

The summary Claude sees to decide when to auto-load this skill.

Comprehensive performance optimization guide for React and Next.js applications, maintained by Vercel. Use when writing new React components or Next.js pages, implementing data fetching (client or server-side), or reviewing code for performance issues.

SKILL.md

react-best-practices.SKILL.md
name: react-best-practices
description: "Comprehensive performance optimization guide for React and Next.js applications, maintained by Vercel. Use when writing new React components or Next.js pages, implementing data fetching (client or server-side), or reviewing code for performance issues."
risk: safe
source: community
date_added: "2026-02-27"

Vercel React Best Practices

Comprehensive performance optimization guide for React and Next.js applications, maintained by Vercel. Contains 45 rules across 8 categories, prioritized by impact to guide automated refactoring and code generation.

When to Use

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-cache-react` - Use React.cache() for per-request deduplication
  • `server-cache-lru` - Use LRU cache for cross-request caching
  • `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

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-dependencies` - Use primitive dependencies in effects
  • `rerender-derived-state` - Subscribe to derived booleans, not raw values
  • `rerender-functional-setstate` - Use functional setState for stable callbacks
  • `rerender-lazy-state-init` - Pass function to useState for expensive values
  • `rerender-transitions` - Use startTransition for non-urgent updates

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-activity` - Use Activity component for show/hide
  • `rendering-conditional-render` - Use ternary, not && for conditionals

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

8. Advanced Patterns (LOW)

  • `advanced-event-handler-refs` - Store event handlers in refs
  • `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
rules/_sections.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`

When to Use

This skill is applicable to execute the workflow or actions described in the overview.

Limitations

  • Use this skill only when the task clearly matches the scope described above.
  • Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
  • Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.
Read more
Ships withlihongwei-cn

MUNDO - THE EMPEROR. Complete AI orchestration system with 1208 skills, 25 capability modules, self-evolving, collective consciousness. GitHub Actions 24/7 automation.

Get the whole plugin
Stats
5
Stars
1
Forks
Maintained
Maintenance
Python
Language
MIT
License
1mo ago
Last commit
4mo ago
Created

Repo: LiHongwei-cn/lihongwei-cn

Other skills on lihongwei-cn.

cheat-on-content
Skill

cheat-on-content

给所有想把"感觉"变成可校准预测的内容创作者。**方法论通用**——打分 → 盲预测 → T+3d 复盘 → 进化 rubric 的循环适用任何能被量化(播放 / 阅读 / 收听 / 点击)的内容。**rubric 是循环的内容,不是循环本身**——当前内置一份观点视频 rubric(参考博主 25+…

cheat-bump
Skill

cheat-bump

提议并执行 rubric 或 bucket 升级。两种模式:**完整 rubric bump**(最高风险动作,5 步强制 + 跨模型审核)和 **--bucket-only 轻量重校**(只换 bucket 边界,不动 rubric 公式)。**Phase 2 强制走 cheat-score-blind…

cheat-init
Skill

cheat-init

cheat-on-content 的首次 onboarding 与脚手架创建器。统一流程——所有用户都走相同 5 阶段闭环,唯一区别是"发过视频的人"会在 init 时多一步:抓取已有视频建立历史 context(用于后续 cheat-seed 给更贴合的选题、更准的…

cheat-migrate
Skill

cheat-migrate

把老用户的 .cheat-state.json 升级到当前 schema_version。读 migrations/registry.md 算迁移链,按顺序应用每一步迁移文件。幂等:跑两次结果一样。失败停在中间版本不前进。触发词:"迁移"/"升级 state"/"migrate"/"我的 state…

cheat-persona
Skill

cheat-persona

从复盘评论数据派生 / 刷新账号的受众画像,写入 audience.md。这是和 rubric 平行的第二个派生物——rubric 答"怎么打分",persona 答"谁在看"。cheat-seed 选题 / 写稿时读它。**audience.md 含实绩信号,cheat-score-blind…