Next.js Layouts Cheat Sheet

What is a Layout?

Layouts are React components that wrap pages — used for shared UI, like navbars, footers, sidebars, etc.

1. Basic Layout Setup

// app/layout.tsx
export default function RootLayout({ children }) {
  return (
    <html lang="en">
      <body>
        <Header />
        {children}
        <Footer />
      </body>
    </html>
  );
}
  • This layout wraps all routes under app/

2. Nested Layouts

Create sub-layouts in route folders:

// app/dashboard/layout.tsx
export default function DashboardLayout({ children }) {
  return (
    <div className="dashboard-layout">
      <Sidebar />
      <main>{children}</main>
    </div>
  );
}

→ Wraps all pages in /dashboard/*

3. Optional Layout Segments

// app/(marketing)/layout.tsx
export default function MarketingLayout({ children }) {
  return <div className="marketing">{children}</div>;
}

Use parentheses () to group layouts without affecting the URL.

4. Shared Layout Elements

If you want to keep state (e.g., a sidebar toggle), use:

export const dynamic = 'force-static'; // or 'force-dynamic'
export const revalidate = 0; // or a number for ISR

5. Layouts + Pages Example

app/
├── layout.tsx          # Root layout (Header, Footer)
├── page.tsx            # Home page
├── dashboard/
│   ├── layout.tsx      # Sidebar layout
│   └── page.tsx        # /dashboard
├── (auth)/
│   ├── layout.tsx      # Special layout (e.g., no header)
│   └── login/
│       └── page.tsx    # /login