vercel-react-best-practices skill
React and Next.js performance optimization guidelines from Vercel Engineering. This skill should be used when writing, reviewing, or refactoring React/Next.js code to ensure optimal performance patterns. Triggers on tasks involving React components, Next.js pages, data fetching, bundle optimization, or performance improvements.
Is the vercel-react-best-practices skill safe?
Clean: nothing in its files matched our rules. We read 63 files in the folder on 2026-09-28.
No findings.
Install the vercel-react-best-practices skill
A skill is a folder. Copy it into your agent's skills folder and the agent loads it when the task matches its description.
git clone --depth 1 https://github.com/zebbern/claude-code-guide.git /tmp/claude-code-guide mkdir -p ~/.claude/skills cp -r /tmp/claude-code-guide/skills/react-best-practices ~/.claude/skills/vercel-react-best-practices
In the Claude apps, zip the folder and upload it from the Skills settings. The folder on GitHub
The instructions your agent would load
SKILL.md as published, without the frontmatter. Read it on GitHub
Vercel React Best Practices
Comprehensive performance optimization guide for React and Next.js applications, maintained by Vercel. Contains 57 rules across 8 categories, prioritized by impact to guide automated refactoring and code generation.
When to Apply
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
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-auth-actions - Authenticate server actions like API routes
- server-cache-react - Use React.cache() for per-request deduplication
- server-cache-lru - Use LRU cache for cross-request caching
- server-dedup-props - Avoid duplicate serialization in RSC props
- 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
- client-passive-event-listeners - Use passive listeners for scroll
- client-localstorage-schema - Version and minimize localStorage data
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-memo-with-default-value - Hoist default non-primitive props
- rerender-dependencies - Use primitive dependencies in effects
- rerender-derived-state - Subscribe to derived booleans, not raw values
- rerender-derived-state-no-effect - Derive state during render, not effects
- rerender-functional-setstate - Use functional setState for stable callbacks
- rerender-lazy-state-init - Pass function to useState for expensive values
- rerender-simple-expression-in-memo - Avoid memo for simple primitives
- rerender-move-effect-to-event - Put interaction logic in event handlers
- rerender-transitions - Use startTransition for non-urgent updates
- rerender-use-ref-transient-values - Use refs for transient frequent values
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-hydration-suppress-warning - Suppress expected mismatches
- rendering-activity - Use Activity component for show/hide
- rendering-conditional-render - Use ternary, not && for conditionals
- rendering-usetransition-loading - Prefer useTransition for loading state
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-init-once - Initialize app once per app load
- 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.mdEach 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
More skills from zebbern/claude-code-guide
- Aacademic-paper-reviewerSimulates academic peer review, evaluating papers across Originality, Methodology, Results, and Writing to provide Major/Minor Revision recommendations with actionable feedback. Triggers when a user asks to \"review my paper,\" \"simulate peer review,\" or \"give my paper a peer review.
- Aactive-directory-attacksThis skill should be used when the user asks to "attack Active Directory", "exploit AD", "Kerberoasting", "DCSync", "pass-the-hash", "BloodHound enumeration", "Golden Ticket", "Silver Ticket", "AS-REP roasting", "NTLM relay", or needs guidance on Windows domain penetration testing.
- Capi-fuzzing-bug-bountyThis skill should be used when the user asks to "test API security", "fuzz APIs", "find IDOR vulnerabilities", "test REST API", "test GraphQL", "API penetration testing", "bug bounty API testing", or needs guidance on API security assessment techniques.
- Aapi-shape-explorerGenerate multiple radically different interface designs for a module using parallel sub-agents. Use when user wants to design an API, explore interface options, compare module shapes, or mentions "design it twice".
- Aaudit-flowInteractive system flow tracing across CODE, API, AUTH, DATA, NETWORK layers with SQLite persistence and Mermaid export. Use for security audits, compliance documentation, flow tracing, feature ideation, brainstorming, debugging, architecture reviews, or incident post-mortems. Triggers on audit, trace flow, document flow, security review, debug flow, brainstorm, architecture review, post-mortem, incident review.
- Aauthentication-patternsAuthentication patterns: session vs JWT vs OAuth comparison, provider selection (NextAuth, Clerk, Supabase Auth), security checklist, and common mistakes. Use when implementing auth, reviewing auth flows, or choosing auth providers.
- Aaws-penetration-testingThis skill should be used when the user asks to "pentest AWS", "test AWS security", "enumerate IAM", "exploit cloud infrastructure", "AWS privilege escalation", "S3 bucket testing", "metadata SSRF", "Lambda exploitation", or needs guidance on Amazon Web Services security assessment.
- Abroken-authenticationThis skill should be used when the user asks to "test for broken authentication vulnerabilities", "assess session management security", "perform credential stuffing tests", "evaluate password policies", "test for session fixation", or "identify authentication bypass flaws". It provides comprehensive techniques for identifying authentication and session management weaknesses in web applications.
- Cburp-suite-testingThis skill should be used when the user asks to "intercept HTTP traffic", "modify web requests", "use Burp Suite for testing", "perform web vulnerability scanning", "test with Burp Repeater", "analyze HTTP history", or "configure proxy for web testing". It provides comprehensive guidance for using Burp Suite's core features for web application security testing.
- AcachingCaching strategies — invalidation, TTL guidelines, cache keys, cache layers, and when not to cache. Use when implementing or reviewing caching logic.
- Achart-imageGenerate publication-quality PNG chart images from data, supporting line, bar, area, candlestick, pie, and heatmap charts. Triggers when the user asks to visualize data, create a graph, plot a time series, or generate a chart for a report, alert, or dashboard. Runs as a lightweight, headless Node.js process without a browser.
- Dcloud-penetration-testingThis skill should be used when the user asks to "perform cloud penetration testing", "assess Azure or AWS or GCP security", "enumerate cloud resources", "exploit cloud misconfigurations", "test O365 security", "extract secrets from cloud environments", or "audit cloud infrastructure". It provides comprehensive techniques for security assessment across major cloud platforms.