SSR, SPA, and New SSR — A Comparison
From classic MPA/SSR to SPA, and the hybrid "New SSR" that combines both — how each rendering strategy works and their tradeoffs.
Restored from a 2020-04 archive. Today's Next.js / Nuxt standardize "New SSR" patterns at the framework level.
SSR (Server-Side Rendering)
Traditionally used in web applications. In contrast to SPAs, it's now called MPA (Multi-Page Application).
Each page request triggers fresh HTML generation on the server. The client downloads the full page every time:
- Client requests
xxx.com/main - Server runs the route handler, locates the HTML template
- Fetches data from the database
- Renders the final HTML
- Sends HTML back to the client
- User sees the rendered view
Pros
- Fully rendered HTML means excellent SEO
- Only loads resources needed for the current page, so initial load is optimized
Cons
- Every navigation re-requests resources, increasing overall traffic
- Full-page refresh on every navigation slows perceived performance
SPA (Single-Page Application)
The current mainstream JS framework paradigm. The server delivers one page (index.html), and subsequent rendering happens via JavaScript:
- Client requests
xxx.com/main - Server unconditionally returns
index.html - Server also delivers a JS bundle (e.g.
bundle.js) - The bundle runs and requests data from
api.xxx.com/main - Server returns JSON data
- Client renders the view with the data
- User sees the view
One HTML file serves every URL, hence "Single Page".
Pros
- After initial load, navigation only fetches data — faster subsequent interactions, less total traffic
- No full-page reloads, smoother UX
Cons
- Initial load downloads all static resources, slowing first paint
- Poor SEO for crawlers without JS support
SSR vs SPA
Both have loading-speed tradeoffs.
SSR starts fast on the first page. SPA is slow on the first load but fast afterward since all bundles are cached. However, SSR reloads resources on every page, so later navigations can feel slower than SPA.
The bigger SPA weakness is SEO. Crawlers typically don't execute JavaScript (Google does, most others don't), so a JS-only SPA shows up as an empty shell to them.
New SSR (Hybrid)
Modern frameworks blend both:
- The first request is handled by SSR
- Subsequent navigation uses client-side rendering (SPA-style)
Pros
- First page SSR solves SEO and initial-paint problems
- Client-side navigation keeps the smooth SPA feel
- React, Vue, and Angular all support this officially, so components render the same way on server and client
Cons
- Complex code — without a clear mental model of bootstrap order, bugs multiply
- Higher CPU usage on the server
- Frontend developers unfamiliar with server concerns can introduce subtle bugs (e.g. code that works in-browser but breaks on the server)
Guestbook
Leave a short note about this post
Loading...