What problem does it solve? Developers building with Next.js App Router often misuse Client Components, mishandle data fetching, or skip loading and error states, leading to bloated bundles and poor performance. This Skill provides structured principles for making correct architectural decisions. ## Core Features & Use Cases - Server vs Client Component Guidance: Decision trees and tables for choosing between Server Components and 'use client' boundaries. - Data Fetching & Caching Patterns: Covers static rendering, ISR revalidation, no-store dynamic fetching, and on-demand revalidation with revalidatePath/revalidateTag. - Routing & Project Structure: Documents file conventions (page.tsx, layout.tsx, loading.tsx, error.tsx), route groups, parallel routes, and intercepting routes. - Use Case: When building a dashboard page, use this Skill to structure a Server Component parent that fetches data, delegate interactivity to a small Client child, and add proper loading.tsx and error.tsx boundaries. ## Quick Start Review my Next.js App Router page component and tell me whether it should be a Server or Client Component with proper data fetching and caching.