Next js - React JS

Difference between SSR & CSR ?

Interview Answer (Short)

SSR (Server-Side Rendering) generates HTML on the server before sending it to the browser, which improves SEO and initial page load performance. CSR (Client-Side Rendering) sends minimal HTML and renders the UI in the browser using JavaScript. I typically use SSR for public-facing pages like job listings and blogs, and CSR for dashboards and admin modules where SEO is not required.

SSR vs CSR in React / Next.js

This is one of the most frequently asked React and Next.js interview questions.

FeatureSSR (Server-Side Rendering)CSR (Client-Side Rendering)
HTML GeneratedServerBrowser
Initial LoadFasterSlower
SEOExcellentPoor to Average
Data FetchingBefore page reaches browserAfter page loads
First Contentful PaintFastSlower
Server LoadHigherLower
User InteractionSlightly delayed hydrationImmediate after JS loads
Best ForSEO pages, blogs, job portalsDashboards, admin panels

CSR (Client-Side Rendering)

Flow

Browser Request

Server sends almost empty HTML

Browser downloads JS

React Executes

API Call

UI Rendered

Example

"use client";

import { useEffect, useState } from "react";

export default function Jobs() {
const [jobs, setJobs] = useState([]);

useEffect(() => {
fetch("/api/jobs")
.then(res => res.json())
.then(data => setJobs(data));
}, []);

return (
<>
{jobs.map(job => (
<p key={job.id}>{job.title}</p>
))}
</>
);
}

What Browser Receives Initially?

<div id="root"></div>

Data appears only after JavaScript executes.

Drawbacks

  • Slower initial load
  • SEO issues
  • Search engines may not see content immediately

SSR (Server-Side Rendering)

Flow

Browser Request

Server Fetches Data

Server Creates HTML

Browser Receives Ready HTML

React Hydrates

Example (Next.js)

export default async function JobsPage() {
const response = await fetch(
"https://api.example.com/jobs",
{
cache: "no-store"
}
);

const jobs = await response.json();

return (
<>
{jobs.map((job: any) => (
<p key={job.id}>{job.title}</p>
))}
</>
);
}

HTML Received by Browser

<p>React Developer</p>
<p>Node.js Developer</p>
<p>AI Engineer</p>

Content is already present.


Visual Difference

CSR

Request

Empty HTML

Download JS

API Call

Render Data

SSR

Request

Server Fetch Data

Generate HTML

Send Ready Page

SEO Comparison

CSR

Source View:

<div id="root"></div>

Google may need to execute JavaScript first.

SSR

Source View:

<h1>AI Engineer Jobs</h1>
<p>Latest openings...</p>

Search engines can index content immediately.


When to Use CSR?

Good for:

  • Admin Panels
  • HRMS
  • CRM
  • Internal Dashboards
  • Analytics Screens

Example:

admin.cybotrix.com

SEO is not important.


When to Use SSR?

Good for:

  • Job Portals
  • Blogs
  • News Websites
  • E-commerce Product Pages
  • Landing Pages

Example:

jobs.cybotrix.com/job/react-developer

SEO is important.


In Your Next.js Job Portal

For:

/               Home
/jobs Job List
/job/[slug] Job Details

Use SSR.

Example:

export const dynamic = "force-dynamic";

or

fetch(url, {
cache: "no-store"
});

For:

/admin
/profile
/dashboard

Use CSR.

Example:

"use client";

with useState() and useEffect().