diff --git a/docs/cookbook/client-side/nextjs-setup.mdx b/docs/cookbook/client-side/nextjs-setup.mdx
new file mode 100644
index 00000000..69179f2b
--- /dev/null
+++ b/docs/cookbook/client-side/nextjs-setup.mdx
@@ -0,0 +1,173 @@
+
+**The Problem: The Server-Client Mismatch**
+Next.js 14 uses the App Router, where components are React Server Components (RSC) by default. These components render standard HTML on the server and send it to the browser.
+
+However, blockchain wallets (Metamask, Coinbase Wallet) live strictly in the browser (Client Side). They inject `window.ethereum` or rely on `localStorage`.
+
+When your app loads:
+
+1. **Server:** Renders the page. It has no access to the user's wallet, so it renders a "Disconnected" state (or empty div).
+2. **Client:** The browser loads the HTML. The Wagmi library initializes, reads `localStorage`, sees the user is connected, and immediately updates the DOM to show the "Connected" state.
+3. **React:** Sees the Server HTML ("Disconnected") does not match the Client DOM ("Connected"). It throws `Error: Hydration failed because the initial UI does not match what was rendered on the server.`
+
+**The Production-Grade Fix**
+You cannot use Context Providers (`WagmiProvider`) directly in a Server Component layout (`layout.tsx`) because Context is a client-only feature.
+
+To solve this, we must:
+
+1. **Encapsulate State:** Create a dedicated "Client Component" wrapper (`providers.tsx`) to hold the Wagmi and TanStack Query logic.
+2. **Defer Rendering:** Use a `useIsMounted` hook for any UI element that depends on wallet data. This forces the component to wait until the client has fully taken over before attempting to render wallet details, ensuring the server HTML and initial client HTML are identical.
+
+---
+
+
+
+**1. Install Dependencies**
+
+```bash
+npm install wagmi viem @tanstack/react-query @rainbow-me/rainbowkit
+
+```
+
+**2. Create the Configuration**
+Create a new file `config/wagmi.ts`. This sets up the Base chain and the connection logic.
+
+```typescript
+import { http, createConfig } from 'wagmi';
+import { base, baseSepolia } from 'wagmi/chains';
+import { getDefaultConfig } from '@rainbow-me/rainbowkit';
+
+// 1. Get projectId from https://cloud.walletconnect.com
+const projectId = 'YOUR_PROJECT_ID';
+
+export const config = getDefaultConfig({
+ appName: 'Base App',
+ projectId: projectId,
+ chains: [base, baseSepolia],
+ transports: {
+ [base.id]: http(),
+ [baseSepolia.id]: http(),
+ },
+ ssr: true, // If your dApp uses server side rendering (SSR)
+});
+
+```
+
+**3. Create the Providers Wrapper**
+This is the critical step. We mark this file `use client` so it can use React Context.
+File: `app/providers.tsx`
+
+```tsx
+'use client';
+
+import * as React from 'react';
+import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
+import { WagmiProvider } from 'wagmi';
+import { RainbowKitProvider, darkTheme } from '@rainbow-me/rainbowkit';
+import { config } from '../config/wagmi';
+
+const queryClient = new QueryClient();
+
+export function Providers({ children }: { children: React.ReactNode }) {
+ return (
+