Technologies
Next.js Server-Side Rendering
Server-side rendering means the HTML for a page is generated on the server for every request, using data that's current at the moment the request comes in. It's the right choice when content genuinely changes per request — a dashboard, search results, anything personalized — and the wrong choice when the content is the same for every visitor, where static generation is faster.
I decide SSR versus static generation per route based on how the data actually behaves, not by defaulting to one pattern across the whole app.
When SSR Is the Right Call
- arrow_rightContent that's personalized per user (dashboards, account pages)
- arrow_rightSearch or filter results that depend on query parameters
- arrow_rightData that changes frequently enough that even short-lived static caching would show stale information
- arrow_rightPages that need request-time information — headers, cookies, geolocation
SSR and SEO
SSR pages are fully rendered HTML by the time a crawler sees them, same as static pages — the SEO difference between SSR and static generation isn't about crawlability, it's about speed. A statically generated page can be served instantly from a CDN edge; an SSR page has to run the render on every request, which adds latency search engines do factor into ranking signals around page speed.
Common Mistakes
- arrow_rightUsing SSR for content that's actually the same for every visitor, when static generation would be faster and cheaper
- arrow_rightNot caching SSR responses at all when partial caching (stale-while-revalidate) would still keep data reasonably fresh
- arrow_rightFetching more data than the page actually needs during the server render, slowing down time-to-first-byte
Frequently Asked Questions
Is SSR always better for SEO than static generation?add
No — both produce fully rendered HTML that crawlers can read. Static generation is usually the better default for SEO specifically because it's faster to serve, and page speed is itself a ranking factor.
Does SSR slow down the site?add
It adds server render time to every request compared to serving pre-built static HTML, but for genuinely dynamic content it's still far faster than client-side rendering, which has to download and execute JavaScript before showing anything.
Can a page mix SSR and static content?add
Yes — a page can render mostly static content with a smaller dynamic section (like a personalized greeting) handled separately, so you're not forced to make the whole page dynamic just because one part of it is.