Vercel React Best Practices
Quick reference for reviewing React code. For detailed rules with code examples, see RULES.md.
Rule Categories (by priority)
| Priority | Category | Impact |
|---|---|---|
| 1 | Eliminating Waterfalls | CRITICAL |
| 2 | Bundle Size Optimization | CRITICAL |
| 3 | Server-Side Performance | HIGH |
| 4 | Client-Side Data Fetching | MEDIUM-HIGH |
| 5 | Re-render Optimization | MEDIUM |
| 6 | Rendering Performance | MEDIUM |
| 7 | JavaScript Performance | LOW-MEDIUM |
| 8 | Advanced Patterns | LOW |
Critical Rules Summary
Eliminating Waterfalls
- •
async-parallel- UsePromise.all()for independent operations - •
async-defer-await- Move await into branches where actually used - •
async-suspense-boundaries- Use Suspense to stream content
Bundle Size
- •
bundle-barrel-imports- Import directly, avoid barrel files - •
bundle-dynamic-imports- Usenext/dynamicfor heavy components - •
bundle-defer-third-party- Load analytics after hydration
Re-render Optimization
- •
rerender-memo- Extract expensive work into memoized components - •
rerender-functional-setstate- Use functional setState for stable callbacks - •
rerender-lazy-state-init- Pass function to useState for expensive values
Common Patterns
- •
rendering-conditional-render- Use ternary, not&&for conditionals with numbers - •Missing keys in list rendering
- •Index as key for dynamic lists