Static vs Server-Rendered Delivery: When the Page Gets Built

A beginner-friendly look at how web pages are produced and delivered: pre-rendered static files, server rendering per request, and client-side rendering — and the trade-offs for speed, SEO, and complexity.

Published September 15, 20269 min readBy ACY Partner Indonesia
Static versus server-rendered delivery cover with a build-time and request-time code chip
300 × 250Ad Space AvailablePlace your ad here

Open a web page and it appears almost instantly. It feels like one simple thing happened — but behind that single moment, your browser received an HTML document that somebody, or something, had to produce first. The interesting question is not just where that page lives, but when it was actually made. Was it built ahead of time and waiting on a shelf, or assembled the moment you asked for it?

That timing — when the page is made — is the heart of this whole topic. It shapes how fast a site feels, how well search engines understand it, how much it costs to run, and how complicated it is to build. In this article we’ll walk through the three main ways a page reaches you: pre-rendered static files, server rendering per request, and client-side rendering. No prior experience needed — we’ll define each idea the moment it shows up.

If you’ve read our piece on Static vs Dynamic Websites, this is the natural next layer: that article asked whether a site’s content changes; this one asks when and where the HTML is assembled to deliver that content.

First, what does “rendering” even mean?

In web terms, rendering is the act of turning your data and templates into the final HTML that a browser can display. Think of HTML as the finished printed page, and rendering as the printing process that produces it.

The data might be a blog post in a database, a product price, or a user’s name. The template is the layout — where the title goes, where the paragraphs sit, where the buttons live. Rendering merges the two: it pours the data into the template and out comes a complete page.

The only real question that separates our three approaches is timing: when does that pour happen?

  • Before anyone visits, once, during a build step. (Static)
  • The moment a visitor requests the page, on the server. (Server-rendered)
  • After the page loads, inside the visitor’s own browser. (Client-rendered)

Let’s take them one at a time.

Static delivery: built once, served forever

With static rendering (often called a static site or pre-rendering), every page is generated ahead of time — during a step called the build. The build runs on a developer’s machine or a deployment service, turns all the templates and data into plain HTML files, and saves those files. From that point on, the server’s only job is to hand out files that already exist.

A good mental picture is a bakery that bakes all its bread in the morning. When you walk in, the loaf is already on the shelf — you just grab it and go. Nobody bakes anything while you wait.

BUILD TIME (once):           REQUEST TIME (every visit):
 data + template            visitor  -->  server hands over
        |                                 a ready-made .html file
        v                                       |
   build step                                   v
        |                              browser displays it
        v                                (no work to do)
   index.html  (saved)

Because the file is already finished, the server does almost no work per visit. That makes static pages extremely fast and cheap, and easy to copy onto a CDN — a Content Delivery Network, which is a fleet of servers spread around the world that keep copies of your files close to your visitors. A reader in Jakarta and a reader in London each get served from a nearby machine, so the page arrives quickly for both.

This blog is static

The article you’re reading right now is statically rendered. It was turned into an HTML file at build time, which is part of why it loads quickly and is friendly to search engines.

The catch: static pages are the same for everyone until the next build. If a price changes or you publish a new post, you generally rebuild and redeploy to reflect it. That’s perfectly fine for content that doesn’t change every second — blogs, documentation, marketing pages, portfolios. It’s a poor fit for anything that must be personalized or live-updated per visitor.

Server-rendered delivery: built fresh on every request

Server-side rendering (SSR) flips the timing. Instead of baking pages in advance, the server builds the HTML at the moment of the request — every single time someone visits. The visitor asks for a page, the server fetches the latest data, renders it into HTML right then, and sends back the finished result.

Back to the bakery analogy: this is a made-to-order kitchen. You order a sandwich, and they assemble it fresh for you. It takes a little longer than grabbing a pre-baked loaf, but you get exactly what you asked for, made with whatever ingredients are in stock right now.

REQUEST TIME (every visit):
 visitor asks for page
        |
        v
 server fetches latest data + renders HTML
        |
        v
 browser displays the fresh page

This is the right tool when content is personalized or constantly changing: a dashboard showing your account balance, a social feed, search results, a shopping cart, a page that must reflect a price that updated five seconds ago. The HTML arrives complete and up-to-date, which search engines and slower devices appreciate, because the meaningful content is right there in the response.

The trade-offs are real, though. The server does genuine work on every request, so it needs more computing power and costs more to run at scale. Each page is also a little slower to produce than simply handing over a finished file, and if the server is busy or far away, visitors feel it. Caching can soften these costs, but the baseline is still “do work per visit.”

Client-rendered delivery: the browser builds the page

The third approach moves the work into the visitor’s browser. With client-side rendering (CSR), the server first sends a nearly empty HTML shell plus a bundle of JavaScript. The browser then runs that JavaScript, fetches the data it needs, and assembles the visible page itself — after the initial load. Sites built this way are often called SPAs, or Single-Page Applications, because the browser swaps content in and out without fully reloading the page as you click around.

Imagine receiving a flat-pack furniture kit instead of an assembled chair. The box (the shell and the JavaScript) arrives quickly, but you — the browser — still have to put it together before you can sit down.

REQUEST TIME:                AFTER LOAD (in the browser):
 server sends empty shell    JS runs --> fetches data
 + JavaScript bundle                 --> builds the page
        |                            --> page becomes visible
        v
 browser receives it
 (still blank for a moment)

CSR shines for highly interactive apps — think an online editor, a drawing tool, a chat interface — where, once loaded, navigating feels instant and app-like because the browser handles changes without round-trips to the server.

But there are well-known downsides. Until the JavaScript downloads and runs, the user may see a blank screen or a spinner, which hurts the perceived speed on slow connections or older phones. And because the meaningful HTML isn’t present in that first response, search engines historically had a harder time reading the content — a real SEO concern. Modern tooling addresses this by combining CSR with server or static rendering (rendering the first view as real HTML, then “hydrating” it with JavaScript so it becomes interactive). In other words, these approaches aren’t strict rivals; mature sites mix them.

Putting the three side by side

Here’s the same idea, summarized by when the HTML is produced and what that costs you:

Aspect Static (pre-rendered) Server-rendered (SSR) Client-rendered (CSR / SPA)
When HTML is made Once, at build time Per request, on the server After load, in the browser
First-load speed Fastest Fast, but server does work Slower (wait for JS)
Freshness / personalization Same until next build Always fresh, per visitor Fresh, fetched after load
SEO out of the box Excellent Excellent Needs extra care
Server cost & complexity Lowest Higher (work per request) Low server, heavier browser
Best for Blogs, docs, marketing Dashboards, feeds, carts Editors, chat, rich apps

It's a spectrum, not three boxes

Real projects rarely pick just one. A single site might serve its blog statically, render the logged-in dashboard on the server, and run a rich settings panel as a client-side app. The skill is matching each page to the approach that fits that page’s needs.

How do you choose?

You don’t need to memorize rules. Ask a few plain questions about the page in front of you:

Does this page look the same for everyone? If yes, lean static. A marketing homepage or a documentation article doesn’t need to be rebuilt for each visitor, so build it once and serve it from a CDN.

Does it change constantly or depend on who is viewing? That points to server rendering. An order history, a personalized feed, or a live price needs the latest data assembled at request time.

Is it a heavily interactive tool where, after loading, the user stays and clicks around a lot? Client rendering earns its keep there — the up-front cost pays off in snappy in-app navigation.

And remember the most common real-world answer: mix them. Serve fast static pages where you can, render dynamic pages on the server where you must, and reach for client-side interactivity only where the experience genuinely calls for it.

Don't default to the heaviest option

It’s tempting to reach for a full client-side app for everything because it feels modern. But every kilobyte of JavaScript is work the visitor’s device has to do. For content that’s mostly read — like an article — static delivery is usually faster, cheaper, and kinder to your readers. Match the tool to the job.

Recap

Every web page reaches you as HTML, and the big question is when that HTML gets produced:

  • Static pages are made once at build time and served as ready files — fastest, cheapest, CDN-friendly, great for SEO, but the same for everyone until you rebuild.
  • Server-rendered pages are assembled fresh on every request — perfect for personalized or fast-changing content, at the cost of more server work.
  • Client-rendered pages are built in the browser after an initial download — wonderful for rich, interactive apps, but slower to first appear and trickier for SEO unless paired with server or static rendering.

There’s no single winner. The best sites pick the right timing for each page, and often blend all three. If you found this useful, the companion article on Static vs Dynamic Websites approaches the same world from the angle of what changes rather than when it’s built — together they give you a solid feel for how the modern web is delivered.

Tags:web-fundamentalsstatic-siteserver-renderingssrdeliveryperformance
728 × 90Ad Space AvailablePlace your ad here

Related Articles

See All Articles

You Might Also Like

Browser compatibility and polyfills cover with code chip if not supported, polyfill
Web Fundamentals / Browsers

Browser Compatibility and Polyfills

Why the same web page can look or behave differently across browsers, and how feature support, progressive enhancement, polyfills, and transpilers help your site work everywhere.

Sep 15, 20269 min read
An Intro to Browser Developer Tools — ACY Partner Indonesia Blog
Web Fundamentals / Browsers

An Intro to Browser Developer Tools

Every browser hides a powerful toolkit behind one key. Meet DevTools and its main panels, and learn how they let you see the DOM, styles, network requests, and storage for yourself.

Sep 15, 202610 min read
Browser Security Basics cover with a same-origin shield code chip
Web Fundamentals / Browsers

Browser Security Basics: How Your Browser Quietly Protects You

A friendly, beginner-first tour of how your browser keeps you safe: the same-origin policy, tab sandboxing, the HTTPS padlock, mixed content, and a gentle intro to why input can be dangerous.

Sep 15, 202611 min read
Browser storage options shown on a dark ACY Partner blog cover
Web Fundamentals / Browsers

Browser Storage: Cookies, localStorage, and More

A beginner-friendly tour of where the browser keeps data: cookies, localStorage, sessionStorage, and IndexedDB. Learn what each one does and when to reach for it.

Sep 15, 20269 min read
Illustration of a browser engine running scripts through an event loop
Web Fundamentals / Browsers

How Browsers Handle JavaScript

A beginner-friendly look at how the browser parses, compiles, and runs JavaScript, why it has one main thread, and how script loading affects what you see on screen.

Sep 15, 20269 min read
Dark blue cover with the title How Browsers Work and a parse to layout to paint code chip
Web Fundamentals / Browsers

How Browsers Work: An Overview

A beginner-friendly tour of what your browser does between typing a URL and seeing a page: networking, parsing, the render tree, layout, paint, compositing, and the JavaScript engine.

Sep 15, 20269 min read