name: nextjs-patterns type: reference description: "Comprehensive Next.js development patterns for App Router, Server Components, TypeScript, and Tailwind CSS. Covers foundational principles, data fetching, routing, performance, and an 8-phase development workflow. Also includes Server Actions and Metadata patterns." paths: ["/*.tsx", "/.jsx", "**/next.config.", "/app//.ts", "**/tailwind.config."] when_to_use: "Building or optimizing Next.js 14+ / 15+ applications with App Router, Server Components, streaming, or Server Actions." allowed-tools: Read, Glob, Grep, Write, Edit, Bash user-invocable: true effort: 3
Next.js Development Patterns
Comprehensive patterns and best practices for Next.js 14+ / 15+ App Router architecture, Server Components, and modern full-stack React development.
1. Foundational Principles
Server vs Client Components
- Server (Default): Use for data fetching, layouts, and static content.
- Client ('use client'): Use for interactivity (useState, useEffect), event handlers, and browser-only APIs.
- Decision Rule: Stay on the server as long as possible. Split components so the interactive "leaf nodes" are client-side while the data-heavy "branch nodes" remain on the server.
Routing & Organization
- App Router: Use the
app/directory for file-based routing. - Route Groups:
(group-name)for organization without affecting URL structure. - Special Files:
page.tsx,layout.tsx,loading.tsx,error.tsx,not-found.tsx. - Advanced Routing: Parallel routes (
@slot) and Intercepting routes ((.)).
2. Data Fetching & Caching
Strategy Matrix
| Pattern | Use Case | Implementation |
|---|---|---|
| Static | Blog posts, marketing | Cached at build time |
| ISR | Products, news | revalidate: 60 |
| Dynamic | User dashboards, search | no-store or force-dynamic |
Patterns
- Server Fetching: Fetch data directly in Server Components using
async/await. - Streaming: Use
Suspenseandloading.tsxto stream UI to the client. - Server Actions: Perform mutations with
use serverfunctions. Validate with Zod.
3. 8-Phase Development Workflow
Phase 1: Project Setup
Scaffold with @app-builder, configure TypeScript, and set up ESLint/Prettier.
Phase 2: Component Architecture
Design hierarchy and implement base layout components using @frontend-developer and @react-patterns.
Phase 3: Styling & Design
Configure Tailwind CSS v4 and design tokens using @tailwind-patterns and @frontend-design.
Phase 4: Data Fetching
Implement Server Component data fetching and set up React Query/SWR if client-side fetching is needed.
Phase 5: Routing & Navigation
Set up file-based routing, dynamic routes, and handle redirects/guards.
Phase 6: Forms & Validation
Use React Hook Form and Zod for robust, type-safe data entry.
Phase 7: Testing
Write unit/integration tests with Vitest and E2E flows with @playwright-skill.
Phase 8: Optimization & Deploy
Analyze bundle size, optimize images with next/image, and deploy to Vercel/similar.
4. Performance & Metadata
- Images: Always use
next/image. Setpriorityfor LCP elements. - Dynamic Imports: Use for heavy client-side libraries.
- Metadata API: Use
generateMetadatafor dynamic SEO tags per route.
Resources & Anti-Patterns
- implementation-playbook.md: Detailed code examples for every pattern.
- Anti-Pattern: Using
'use client'at the top level of every file. - Anti-Pattern: Fetching data inside
useEffectfor information available on first load.
Guidance: If you need deeper walkthroughs, refer to the
resources/folder within this skill.