MR
Mayur Rathi
@mayurrathi
⭐ 40.7k GitHub stars

Nextjs Best Practices

Nextjs Best Practices is an code AI skill with a core value of Next. It helps developers solve real-world problems in the code domain, boosting efficiency, automating repetitive tasks, and optimizing workflows.

Next.js App Router principles. Server Components, data fetching, routing patterns.

Last verified on: 2026-07-07

Quick Facts

Category code
Works With Claude
Source sickn33/antigravity-awesome-skills
Stars ⭐ 40.7k
Last Verified 2026-07-07
Risk Level Low
mkdir -p ./skills/nextjs-best-practices && curl -sfL https://raw.githubusercontent.com/sickn33/antigravity-awesome-skills/main/skills/nextjs-best-practices/SKILL.md -o ./skills/nextjs-best-practices/SKILL.md

Run in terminal / PowerShell. Requires curl (Unix) or PowerShell 5+ (Windows).

Skill Content

# Next.js Best Practices


> Principles for Next.js App Router development.


---


1. Server vs Client Components


Decision Tree


text
Does it need...?
│
├── useState, useEffect, event handlers
│   └── Client Component ('use client')
│
├── Direct data fetching, no interactivity
│   └── Server Component (default)
│
└── Both? 
    └── Split: Server parent + Client child

By Default


| Type | Use |

|------|-----|

| **Server** | Data fetching, layout, static content |

| **Client** | Forms, buttons, interactive UI |


---


2. Data Fetching Patterns


Fetch Strategy


| Pattern | Use |

|---------|-----|

| **Default** | Static (cached at build) |

| **Revalidate** | ISR (time-based refresh) |

| **No-store** | Dynamic (every request) |


Data Flow


| Source | Pattern |

|--------|---------|

| Database | Server Component fetch |

| API | fetch with caching |

| User input | Client state + server action |


---


3. Routing Principles


File Conventions


| File | Purpose |

|------|---------|

| `page.tsx` | Route UI |

| `layout.tsx` | Shared layout |

| `loading.tsx` | Loading state |

| `error.tsx` | Error boundary |

| `not-found.tsx` | 404 page |


Route Organization


| Pattern | Use |

|---------|-----|

| Route groups `(name)` | Organize without URL |

| Parallel routes `@slot` | Multiple same-level pages |

| Intercepting `(.)` | Modal overlays |


---


4. API Routes


Route Handlers


| Method | Use |

|--------|-----|

| GET | Read data |

| POST | Create data |

| PUT/PATCH | Update data |

| DELETE | Remove data |


Best Practices


- Validate input with Zod

- Return proper status codes

- Handle errors gracefully

- Use Edge runtime when possible


---


5. Performance Principles


Image Optimization


- Use next/image component

- Set priority for above-fold

- Provide blur placeholder

- Use responsive sizes


Bundle Optimization


- Dynamic imports for heavy components

- Route-based code splitting (automatic)

- Analyze with bundle analyzer


---


6. Metadata


Static vs Dynamic


| Type | Use |

|------|-----|

| Static export | Fixed metadata |

| generateMetadata | Dynamic per-route |


Essential Tags


- title (50-60 chars)

- description (150-160 chars)

- Open Graph images

- Canonical URL


---


7. Caching Strategy


Cache Layers


| Layer | Control |

|-------|---------|

| Request | fetch options |

| Data | revalidate/tags |

| Full route | route config |


Revalidation


| Method | Use |

|--------|-----|

| Time-based | `revalidate: 60` |

| On-demand | `revalidatePath/Tag` |

| No cache | `no-store` |


---


8. Server Actions


Use Cases


- Form submissions

- Data mutations

- Revalidation triggers


Best Practices


- Mark with 'use server'

- Validate all inputs

- Return typed responses

- Handle errors


---


9. Anti-Patterns


| ❌ Don't | ✅ Do |

|----------|-------|

| 'use client' everywhere | Server by default |

| Fetch in client components | Fetch in server |

| Skip loading states | Use loading.tsx |

| Ignore error boundaries | Use error.tsx |

| Large client bundles | Dynamic imports |


---


10. Project Structure


text
app/
├── (marketing)/     # Route group
│   └── page.tsx
├── (dashboard)/
│   ├── layout.tsx   # Dashboard layout
│   └── page.tsx
├── api/
│   └── [resource]/
│       └── route.ts
└── components/
    └── ui/

---


> **Remember:** Server Components are the default for a reason. Start there, add client only when needed.


When to Use

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

🎯 Best For

  • Claude users
  • Software engineers
  • Development teams
  • Tech leads

💡 Use Cases

  • Code quality improvement
  • Best practice enforcement

📖 How to Use This Skill

  1. 1

    Install the Skill

    Copy the install command from the Terminal tab and run it. The SKILL.md file downloads to your local skills directory.

  2. 2

    Load into Your AI Assistant

    Open Claude and reference the skill. Paste the SKILL.md content or use the system prompt tab.

  3. 3

    Apply Nextjs Best Practices to Your Work

    Open your project in the AI assistant and ask it to apply the skill. Start with a small module to verify the output quality.

  4. 4

    Review and Refine

    Review AI suggestions before committing. Run tests, check for regressions, and iterate on the skill output.

❓ Frequently Asked Questions

Is Nextjs Best Practices compatible with Cursor and VS Code?

Yes — this skill works with any AI coding assistant including Cursor, VS Code with Copilot, and JetBrains IDEs.

Do I need specific dependencies for Nextjs Best Practices?

Check the install command and Works With section. Most code skills only require the AI assistant and your codebase.

How do I install Nextjs Best Practices?

Copy the install command from the Terminal tab and run it. The skill downloads to ./skills/nextjs-best-practices/SKILL.md, ready to use.

Can I customize this skill for my team?

Absolutely. Edit the SKILL.md file to add team-specific instructions, examples, or workflows.

⚠️ Common Mistakes to Avoid

Skipping validation

Always test AI-generated code changes, even for simple refactors.

Missing dependency updates

Check if the skill requires updated dependencies or new packages.

🔗 Related Skills