"Which areas to review?"
Options:
- Full Next.js pattern check (recommended)
- Server/Client Component separation
- Data fetching patterns
- Image/Font optimization
- Routing and layouts
multiSelect: true
Detection Rules
Server vs Client Components
Check
Recommendation
Severity
Unnecessary 'use client'
Remove if SC possible
MEDIUM
async in Client Component
Move to SC
HIGH
useState/useEffect
Check 'use client' need
INFO
// BAD: Unnecessary 'use client'
'use client'exportdefaultfunctionStaticPage() {return<div>Staticcontent</div>}// GOOD: Keep as Server Component
exportdefaultfunctionStaticPage() {return<div>Staticcontent</div>}
App Router Files
File
Purpose
Check
page.tsx
Route page
Default export
layout.tsx
Layout
children prop
loading.tsx
Loading UI
Suspense alternative
error.tsx
Error handling
'use client' required
Data Fetching
Pattern
Recommendation
SC fetch
Recommended (auto caching)
Route Handler
API endpoints
Client SWR/React Query
Real-time data
// GOOD: Direct fetch in Server Component
asyncfunctionProductPage({params}){constproduct=awaitfetch(`/api/products/${params.id}`)return<Productdata={product}/>}// WARNING: useEffect fetch in Client
'use client'functionProductPage({params}){useEffect(()=>{fetch(...)},[])// Recommend: Move to Server Component
}
Image Optimization
Check
Issue
Severity
<img> tag
Use next/image
HIGH
Missing width/height
Layout shift
MEDIUM
Missing priority
LCP image needs it
MEDIUM
Server Actions
Check
Description
Severity
'use server' location
Top of function/file
HIGH
Input validation
Use zod
HIGH
Error handling
try-catch
MEDIUM
Response Template
## Next.js Review Results
**Project**: [name]
**Next.js**: 14.x (App Router)
### Server/Client Components
| Status | File | Issue |
|--------|------|-------|
| WARNING | app/products/page.tsx | Unnecessary 'use client' |
### Data Fetching
| Status | Location | Recommendation |
|--------|----------|----------------|
| WARNING | app/dashboard/page.tsx | Move useEffect fetch to SC |
### Optimization
| Area | Status | Details |
|------|--------|---------|
| Images | WARNING | 3 files using <img> |
| Fonts | OK | Using next/font |
### Actions
1. [ ] Remove 'use client' from `app/products/page.tsx`
2. [ ] Move fetch to Server Component
3. [ ] Use next/image in `components/Banner.tsx`