What Happens When You Type a URL and Press Enter
DNS lookups, TCP and TLS handshakes, HTTP requests, servers, and the browser's rendering pipeline. The whole journey of a web page, explained so it finally clicks.
Read →Server-side rendering, client-side rendering and static generation each trade speed, freshness, cost and SEO differently. What each one does, where hydration fits in, and how to choose per page.
Modern frameworks let you render pages in several different ways, often within the same app. The acronyms (SSR, CSR, SSG, ISR) sound like jargon, but the choice has a real effect on load speed, SEO, hosting cost and how fresh your data is. Here's what each one means and when to use it.
The server sends a mostly empty HTML page plus a JavaScript bundle. The browser downloads and runs the JavaScript, which fetches data and builds the page.
Good for: dashboards and tools behind a login, where SEO doesn't matter and users stay a while.
The server builds the full HTML for each request, with data already in it, and sends it to the browser. JavaScript then hydrates the page, attaching event handlers to make it interactive.
Good for: pages that are personalised or change constantly and still need fast first loads and SEO, like search results, feeds and product pages with live stock.
Pages are rendered to HTML at build time, then served as static files from a CDN.
Good for: blogs, documentation, marketing pages, portfolios: anything that changes occasionally.
A middle ground: serve a static page, but regenerate it in the background after a set time, or on demand when content changes. Users get static-file speed with content that's at most a few minutes old.
Good for: blogs with a CMS, product catalogues, any public content that changes regularly but not every second. (How this relates to caching.)
| CSR | SSR | SSG | ISR | |
|---|---|---|---|---|
| First load speed | Slower | Fast | Fastest | Fastest |
| Data freshness | Live | Live | At build time | Periodic / on demand |
| SEO friendliness | Weaker | Strong | Strong | Strong |
| Server cost | Lowest | Highest | Lowest | Low |
| Personalisation | Yes (client) | Yes | No (or client-side) | No (or client-side) |
Frameworks like Next.js, Nuxt, SvelteKit, Astro and Remix-style frameworks let different routes use different strategies. A typical setup:
SSR renders HTML on the server for each request, so content is always fresh. SSG renders HTML once at build time and serves static files, which is faster and cheaper but only as fresh as the last build.
Search engines can render JavaScript, but it's slower and less reliable than serving complete HTML, and many link-preview bots don't run JavaScript. Public pages generally do better with SSR or static generation.
The process where JavaScript running in the browser attaches event handlers and state to server-rendered HTML, making the page interactive.
DNS lookups, TCP and TLS handshakes, HTTP requests, servers, and the browser's rendering pipeline. The whole journey of a web page, explained so it finally clicks.
Read →There are dozens of HTTP status codes, but about fifteen cover nearly everything. What each one means, when to return it, and the mix-ups (401 vs 403, 301 vs 302) that confuse everyone.
Read →A, AAAA, CNAME, MX, TXT and NS records in plain English, why DNS changes seem slow, and the troubleshooting commands that tell you what is really going on.
Read →