Skip to main content
skill Claude Code CX Codex Cursor

nextjs-app-router-patterns — Next.js skill: what it does

This skill covers Next.js App Router patterns for rendering, routing, and data fetching. Use it when starting an App Router project or moving from Pages Router.

Install into Claude Code · Plugin marketplace All methods and platforms ↓
/plugin marketplace add wshobson/agents
/plugin install frontend-mobile-development@claude-code-workflows
Open on GitHub

What nextjs-app-router-patterns does

The skill explains Server and Client Components, static and dynamic rendering, streaming, and file conventions under app/. It also covers parallel and intercepting routes, caching, and Server Actions. Its examples include fetching data with fetch and setting up a root layout.

More worked examples live in references/details.md. The guidance starts with Server Components and adds 'use client' for interactivity or browser APIs. Slow data sources call for Suspense boundaries and loading states. Install it when your project uses App Router; it is not aimed at projects built with another framework.

What it helps with

  • move a Pages Router project to App Router
  • choose between Server and Client Components
  • stream a page with slow data sources
  • set up parallel routes with independent loading states
  • handle mutations with Server Actions

Example prompts for the agent

  • Move this section from Pages Router to App Router and suggest the file structure.
  • Review these components and decide where `'use client'` is needed.
  • Fetch this data with `fetch` and add a Suspense boundary for the slow source.

How to install nextjs-app-router-patterns

1Plugin marketplace

/plugin marketplace add wshobson/agents
/plugin install frontend-mobile-development@claude-code-workflows

This installs the whole frontend-mobile-development plugin with all its skills

2Skills CLI (Vercel)

npx skills add wshobson/agents --skill nextjs-app-router-patterns -a claude-code

3Manually: put the files in place

~/.claude/skills/nextjs-app-router-patterns/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/nextjs-app-router-patterns/

From the same set213

The whole set →
typescript-advanced-types Seth Hobson Guides an agent through advanced TypeScript types, from generics to conditional and mapped types. Use it for typed libraries, API clients, or strict configuration objects. Claude Code CX Codex Cursor 92,169installs tailwind-design-system Seth Hobson Helps build design systems with Tailwind CSS v4, from theme tokens to component variants. Use it when a project needs shared UI patterns. Claude Code CX Codex Cursor 70,180installs brand-landingpage Travis D. Elliott This skill interviews you about the product and its visual direction, then builds a landing page through Stitch. Use it when there’s no established design yet. Claude Code CX Codex Cursor 39,476installs python-testing-patterns Seth Hobson This skill guides Python testing with pytest, fixtures and mocks. Use it when building a test suite or tracking down failing checks. Claude Code CX Codex Cursor 36,943installs python-performance-optimization Seth Hobson This skill profiles Python code to locate CPU and memory bottlenecks. Use it when an application responds slowly or consumes too many resources. Claude Code CX Codex Cursor 35,675installs api-design-principles Seth Hobson Use this skill to plan or review REST and GraphQL APIs. It helps when writing a specification or setting API conventions for a team. Claude Code CX Codex Cursor 30,348installs code-review-excellence Seth Hobson This skill guides pull request reviews, catches logic and security issues, and helps teams give specific feedback. Use it for review standards or developer mentoring. Claude Code CX Codex Cursor 30,193installs postgresql-table-design Seth Hobson Helps design and review PostgreSQL schemas with guidance on data types, keys, constraints, indexes, and table partitioning. Claude Code CX Codex Cursor 27,780installs

Similar

penpot-uiux-design official github A skill for building interfaces in Penpot via MCP tools: web, mobile, dashboards, design systems. Works with Penpot API directly from your code editor. GitHub Copilot 12,782installs transitions-dev Jakubantalik Twelve standalone CSS transitions for modals, dropdowns, badges, and card resizes. Helps coding agents wire production-ready UI animations without external libraries. Claude Code CX Codex Cursor +1 1,900installs design-is thedotmack Audits an interface against Dieter Rams' ten design principles, collects evidence with subagents, and generates a /make-plan prompt. Claude Code CX Codex Cursor +1 4,200installs fixing-metadata ibelick Audits page metadata and fixes what's broken: titles, descriptions, canonical URLs, Open Graph, Twitter cards, icons and JSON-LD. Claude Code CX Codex Cursor +1 18,200installs core-web-vitals web-quality-skills A skill that measures first, then fixes LCP, INP and CLS. Handy when a page loads slowly or the layout jumps around. Claude Code CX Codex Cursor +1 31,900installs react vercel-labs This skill turns json-render JSON specs into React component trees. Use it when building JSON-driven UIs or defining a component catalog for generated specs. Claude Code CX Codex Cursor +1 16,300installs frontend-design official anthropics This skill guides intentional visual design for new interfaces and redesigns. Use it when a generic generated UI is not enough. Claude Code Claude.ai 1,025,790installs design-taste-frontend Leonxlnx This skill directs the design of public pages and work screens, then checks the result in a browser through screenshots. Use it when an interface feels generic or unfinished. Claude Code CX Codex Cursor +1 673,100installs

Questions about nextjs-app-router-patterns

How do I install nextjs-app-router-patterns in Claude Code?

Run npx skills add wshobson/agents --skill nextjs-app-router-patterns -a claude-code.

What does nextjs-app-router-patterns do?

It provides patterns for Next.js App Router, covering components, rendering, routing, data fetching, and Server Actions.

Does this skill cover migration from Pages Router?

Yes. Moving an application from Pages Router to App Router is one of its stated use cases.

Source text

SKILL.md · MIT
---
name: nextjs-app-router-patterns
description: Master Next.js 14+ App Router with Server Components, streaming, parallel routes, and advanced data fetching. Use when building Next.js applications, implementing SSR/SSG, or optimizing React Server Components.
---

# Next.js App Router Patterns

Comprehensive patterns for Next.js 14+ App Router architecture, Server Components, and modern full-stack React development.

## When to Use This Skill

- Building new Next.js applications with App Router
- Migrating from Pages Router to App Router
- Implementing Server Components and streaming
- Setting up parallel and intercepting routes
- Optimizing data fetching and caching
- Building full-stack features with Server Actions

## Core Concepts

### 1. Rendering Modes

| Mode                  | Where        | When to Use                               |
| --------------------- | ------------ | ----------------------------------------- |
| **Server Components** | Server only  | Data fetching, heavy computation, secrets |
| **Client Components** | Browser      | Interactivity, hooks, browser APIs        |
| **Static**            | Build time   | Content that rarely changes               |
| **Dynamic**           | Request time | Personalized or real-time data            |
| **Streaming**         | Progressive  | Large pages, slow data sources            |

### 2. File Conventions

```
app/
├── layout.tsx       # Shared UI wrapper
├── page.tsx         # Route UI
├── loading.tsx      # Loading UI (Suspense)
├── error.tsx        # Error boundary
├── not-found.tsx    # 404 UI
├── route.ts         # API endpoint
├── template.tsx     # Re-mounted layout
├── default.tsx      # Parallel route fallback
└── opengraph-image.tsx  # OG image generation
```

## Quick Start

```typescript
// app/layout.tsx
import { Inter } from 'next/font/google'
import { Providers } from './providers'

const inter = Inter({ subsets: ['latin'] })

export const metadata = {
  title: { default: 'My App', template: '%s | My App' },
  description: 'Built with Next.js App Router',
}

export default function RootLayout({
  children,
}: {
  children: React.ReactNode
}) {
  return (
    <html lang="en" suppressHydrationWarning>
      <body className={inter.className}>
        <Providers>{children}</Providers>
      </body>
    </html>
  )
}

// app/page.tsx - Server Component by default
async function getProducts() {
  const res = await fetch('https://api.example.com/products', {
    next: { revalidate: 3600 }, // ISR: revalidate every hour
  })
  return res.json()
}

export default async function HomePage() {
  const products = await getProducts()

  return (
    <main>
      <h1>Products</h1>
      <ProductGrid products={products} />
    </main>
  )
}
```

## Detailed patterns and worked examples

Detailed pattern documentation lives in `references/details.md`. Read that file when the navigation tier above is insufficient.

## Best Practices

### Do's

- **Start with Server Components** - Add 'use client' only when needed
- **Colocate data fetching** - Fetch data where it's used
- **Use Suspense boundaries** - Enable streaming for slow data
- **Leverage parallel routes** - Independent loading states
- **Use Server Actions** - For mutations with progressive enhancement

### Don'ts

- **Don't pass serializable data** - Server → Client boundary limitations
- **Don't use hooks in Server Components** - No useState, useEffect
- **Don't fetch in Client Components** - Use Server Components or React Query
- **Don't over-nest layouts** - Each layout adds to the component tree
- **Don't ignore loading states** - Always provide loading.tsx or Suspense

© Seth Hobson · MIT · wshobson/agents

See also

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor