Next.js Patterns
next-js-patterns
Best practices and patterns for Next.js App Router, Server Actions, and Routing in this project.
SKILL.md
Full skill instructions
Next.js Patterns
App Router
We use the Next.js 15 App Router located in app/.
Pages
- Location:
app/[route]/page.tsx - Component: Default export function.
- Client vs Server: Use
"use client"directive at the top for components requiring state (useState,useEffect) or browser APIs. otherwise default to Server Components.
Layouts
- Location:
app/layout.tsx(Root),app/[route]/layout.tsx(Nested). - Purpose: Wrappers for pages, holding navigation, fonts, and metadata.
Navigation
- Use
Linkfromnext/linkfor internal navigation. - Use
useRouterfromnext/navigationfor programmatic navigation (inside Client Components).
import Link from "next/link";
import { useRouter } from "next/navigation";
// Link
<Link href="/dashboard">Dashboard</Link>
// Router
const router = useRouter();
router.push('/login');
Data Fetching
- Server Components: Fetch directly using
await fetch()or DB calls. - Client Components: Use
useEffector SWR/TanStack Query (if added later). Currently using standardfetchinuseEffect.
Font Optimization
- We use
next/font/google(e.g., Poppins) inapp/layout.tsx. - Variable fonts are passed to
bodyclassName.
Metadata
- Define
export const metadata: Metadata = { ... }inpage.tsxorlayout.tsxfor SEO.
