Tutorials/NextJS/Getting Started
Lesson

Server and Client Components

Getting Started/NextJS

πŸš€ Next.js Notes (Simple Format)

πŸ“Œ 1. Server & Client Components

πŸ”Ή Default Behavior

  • Next.js me:

    • page.js / layout.js β†’ Server Component by default

  • Matlab:

    • Code server pe run hota hai

    • Browser ko optimized HTML milta hai


πŸ–₯️ 2. Server Component kya hota hai?

πŸ‘‰ Server pe run hota hai

βœ… Use kab kare?

  • Database se data fetch

  • API call

  • Secret key use karna (safe)

  • Performance improve karna

πŸ”Ή Example

plaintext
// Server Component
export default async function Page() {
  const data = await fetch("api/data")
  return <div>{data.title}</div>
}

πŸ’» 3. Client Component kya hota hai?

πŸ‘‰ Browser pe run hota hai

βœ… Use kab kare?

  • Button click (onClick)

  • Form handling

  • useState, useEffect

  • localStorage, window

πŸ”Ή Kaise banaye?

πŸ‘‰ Top me likho:

plaintext
"use client"

πŸ”Ή Example

plaintext
"use client"
import { useState } from "react"

export default function Counter() {
  const [count, setCount] = useState(0)

  return (
    <button onClick={() => setCount(count + 1)}>
      {count}
    </button>
  )
}

πŸ”₯ 4. Server vs Client (Quick Difference)

FeatureServer ComponentClient ComponentRun kaha hotaServerBrowseruseStateβŒβœ…useEffectβŒβœ…API fetchβœ…βŒ (prefer server)SecurityHighLow


πŸ”„ 5. Server β†’ Client Data Passing

πŸ‘‰ Props se data bhej sakte ho

plaintext
// Server Component
import LikeButton from "./LikeButton"

export default async function Page() {
  const post = { likes: 10 }
  return <LikeButton likes={post.likes} />
}
plaintext
// Client Component
"use client"

export default function LikeButton({ likes }) {
  return <button>{likes} Likes</button>
}

⚑ 6. "use client" Important Rule

πŸ‘‰ Agar file me "use client" likh diya:

  • Us file ke saare child components bhi client ban jate hain

πŸ“Œ Isliye:

  • Sirf interactive component me use karo

  • Pure app me mat lagao (performance down hoga)


🧩 7. Mixing Server + Client (Best Practice)

plaintext
// Server Component
import Search from "./Search" // client
import Logo from "./Logo"     // server

export default function Layout() {
  return (
    <>
      <Logo />
      <Search />
    </>
  )
}

πŸ‘‰ Yeh best pattern hai

πŸ‘‰ Static = server

πŸ‘‰ Interactive = client


πŸ” 8. Hydration kya hota hai?

πŸ‘‰ Simple:

  • Server β†’ HTML bhejta ha

  • Client β†’ usko interactive banata hai

πŸ“Œ Example:

  • Pehle button dikhega

  • Baad me click kaam karega


πŸ“¦ 9. Package Manager (npm use karo)

πŸ”Ή Project create

plaintext
npx create-next-app@latest my-app
cd my-app
npm run dev

πŸ”Ή Package install

plaintext
npm install axios
npm install react-icons

πŸ”Ή Server-only package (optional)

plaintext
npm install server-only

πŸ‘‰ Use when:


  • API keys hide karni ho


πŸ” 10. Important Security Rule

πŸ‘‰ .env variables:

  • NEXT_PUBLIC_ β†’ client me visible


  • normal variable β†’ server only

plaintext
API_KEY=secret   ❌ client me nahi jayega
NEXT_PUBLIC_URL=abc   βœ… client me jayega

🧠 11. Easy Summary (Interview Ready)


  • Next.js me 2 type components:

    • Server (default)

    • Client ("use client")

  • Server:

    • fast + secure

  • Client:

    • interactive UI

  • Best practice:

    • Mixing both


πŸ”₯ Short Revision (1 min)

πŸ‘‰ Server = data + fast

πŸ‘‰ Client = UI + click

πŸ‘‰ "use client" = browser code

πŸ‘‰ Props = data pass

πŸ‘‰ npm = package manager