~ / blog / 2026-04-22-why-static-sites-still-win.md

Why static sites still win, and the small ways they're getting weirder

A walk through what changed since 2018: islands, partial hydration, view transitions, and why the boring answer (HTML-first) keeps quietly winning the build-tool wars.

There’s an old joke that the web has forgotten everything every five years and remembered most of it badly. I’ve been thinking about that more than usual lately, sitting between two projects: one a sprawling Next app that needs four runtimes and a small ritual to deploy, the other a static site I push by typing git push and walking away.

The static site is, by every metric I care about, better. Faster to ship. Faster to load. Cheaper to host. Easier to read in six months. And yet the discourse keeps insisting it’s the simple cousin — the option you pick when you don’t know any better.

I’d like to argue the opposite: that the last few years have been a quiet renaissance for static-first thinking, and that the new tools are weirder, sharper, and more interesting than the bundlers we left behind.

Islands, finally

The big shift, the one that gets the most attention, is islands architecture. The basic idea is older than its branding: render the page as HTML, then hydrate small interactive regions with JS — instead of treating every leaf as a potential client component.

“The default should be no JavaScript.” — most of us, eventually, after enough Lighthouse reports.

Astro’s client:visible directive is the cleanest expression of this I’ve used. You get the editorial pleasure of writing markdown and components, and the performance pleasure of shipping a few KB of JS only where you asked for it.

---
import Counter from './Counter.tsx';
---
<article>
  <p>Static prose, no JS.</p>
  <Counter client:visible />
</article>

View transitions, almost good

The other shift is the slow arrival of native view transitions. They’re everything we wanted from “SPA but cheaper” — a CSS-driven crossfade between two HTML documents — and they’re almost there in browsers.

Used carefully, you get the smooth feeling of an app from a static site. Used carelessly, you get a site that thinks it’s a slideshow. Both are real outcomes I’ve shipped this year.

What I keep coming back to

  • The fewer moving parts, the longer the site lives.
  • Most of the magic I want is already in the platform.
  • The boring deployment is the deployment that survives.

HTML-first, again

The thing nobody admits about modern web frameworks is that the best ones are converging on something that looks suspiciously like PHP from a distance. Server-rendered HTML, small islands of interactivity, file-based routing. We took the long way around.

Where this leaves us

I think the next interesting personal sites won’t look like apps. They’ll look like magazines that occasionally do something — pages where the default is reading, but the page is alive enough to surprise you. A terminal hidden in the corner. A command palette. A 404 that’s a maze.

That’s where I’m pointing my own site. I’ll let you know how it goes.

— jonas, vienna, april 2026