SSR and CSR are two ways to show web pages. SSR builds pages on the server, CSR builds pages in your browser.
SSR vs CSR mental model in Angular
Start learning this pattern below
Jump into concepts and practice - no test required
No specific code syntax applies here, but Angular uses special setups for SSR and CSR. For SSR: Use Angular Universal to render pages on the server. For CSR: Use standard Angular app running in the browser.
SSR means Server-Side Rendering: the server sends a full HTML page.
CSR means Client-Side Rendering: the browser builds the page using JavaScript.
// CSR example: Angular app runs fully in browser
ng serve// SSR example: Angular Universal renders on server
ng run your-app:server
node dist/your-app/server/main.jsThe CSR example shows a simple Angular component that runs in the browser.
The SSR example shows a basic Express server using Angular Universal to render pages on the server.
// This is a conceptual example showing SSR vs CSR in Angular // CSR: app.component.ts import { Component } from '@angular/core'; @Component({ selector: 'app-root', template: `<h1>Welcome to CSR App</h1><p>Content loads in browser.</p>` }) export class AppComponent {} // SSR: server.ts (simplified) import 'zone.js/node'; import { ngExpressEngine } from '@nguniversal/express-engine'; import * as express from 'express'; import { AppServerModule } from './src/main.server'; const app = express(); app.engine('html', ngExpressEngine({ bootstrap: AppServerModule })); app.set('view engine', 'html'); app.set('views', './dist/browser'); app.get('*', (req, res) => { res.render('index', { req }); }); app.listen(4000, () => { console.log('SSR server running on http://localhost:4000'); });
SSR improves initial load speed and SEO because the server sends ready HTML.
CSR allows more dynamic and interactive apps but may show a blank page until JavaScript loads.
Angular Universal is the official tool for SSR in Angular.
SSR builds pages on the server and sends full HTML to the browser.
CSR builds pages in the browser using JavaScript after loading.
Use SSR for faster first load and SEO; use CSR for rich interactivity.
Practice
Solution
Step 1: Understand SSR behavior
SSR builds the full HTML page on the server and sends it to the browser ready to display.Step 2: Understand CSR behavior
CSR sends minimal HTML and JavaScript to the browser, which then builds the page dynamically.Final Answer:
SSR builds the page on the server and sends full HTML to the browser, while CSR builds the page in the browser using JavaScript. -> Option AQuick Check:
SSR = server builds HTML, CSR = browser builds HTML [OK]
- Confusing which side builds the page
- Thinking SSR uses browser JavaScript first
- Believing CSR sends full HTML from server
Solution
Step 1: Identify Angular SSR tool
Angular Universal is the official Angular tool to enable SSR by rendering pages on the server.Step 2: Recognize other options
Angular CLI helps with project setup, Angular Material is UI components, Angular Forms handles forms, none enable SSR.Final Answer:
Angular Universal -> Option AQuick Check:
SSR tool = Angular Universal [OK]
- Choosing Angular CLI as SSR tool
- Confusing Angular Material with SSR
- Thinking Angular Forms enables SSR
Solution
Step 1: Recall SSR behavior on first load
SSR sends fully rendered HTML from the server so the browser can display content immediately.Step 2: Compare other options
Options A and D describe CSR behavior; Only CSS files, no HTML or JavaScript is incorrect as CSS alone cannot render content.Final Answer:
Fully rendered HTML content from the server -> Option BQuick Check:
SSR first load = full HTML sent [OK]
- Thinking SSR sends blank page first
- Confusing CSS files with page content
- Believing JavaScript builds page immediately in SSR
Solution
Step 1: Understand hydration in SSR
Hydration is the process where client JavaScript takes over server-rendered HTML to make it interactive and update data.Step 2: Identify cause of stale data
If hydration fails, the page looks static and does not update after navigation, causing stale data display.Final Answer:
The app is not hydrating the server-rendered HTML properly on the client -> Option DQuick Check:
Hydration failure causes stale data in SSR [OK]
- Assuming server sends blank pages
- Blaming browser JavaScript support without checking hydration
- Thinking Angular Universal missing causes this specific issue
Solution
Step 1: Identify SEO and fast load needs
SSR provides fast initial load and full HTML for SEO benefits.Step 2: Add interactivity after load
Hydrating SSR pages with CSR JavaScript enables rich interactivity after the fast initial load.Step 3: Evaluate other options
CSR alone delays first meaningful paint; static HTML lacks interactivity; disabling JavaScript breaks interactivity.Final Answer:
Use Server-Side Rendering (SSR) for initial load and hydrate with CSR for interactivity -> Option CQuick Check:
SSR + hydration = fast SEO + interactivity [OK]
- Choosing only CSR and ignoring SEO
- Using static HTML losing interactivity
- Disabling JavaScript breaks app functionality
