javascript 3 min read

From Joomla to Astro: twenty-three years on the open web

Joomla in 2003, SilverStripe briefly, a long WordPress decade with Genesis on top — and why static-site tooling finally won me over for new builds in 2026.

A timeline of CMS choices: Joomla! in 2003, SilverStripe around 2008, WordPress through the 2010s, Astro in 2026

In 2007, together with a fellow developer, I built Euroring their first website. The platform of “choice” — generous wording; “what I could get to install on shared hosting” is more honest — was Joomla!. PHP, an admin UI a non-technical client could (mostly) use, customisable templates. We shipped, moved on, called it a website.

That site is still running. We migrated it to WordPress in 2012 when Joomla’s plugin ecosystem started feeling thin, and that build is still up — refreshed by an external agency around 2020, survived a 2021 redesign that never made it past staging, weathered several PHP upgrades, and has been managed by another party since 2024. Open-web infrastructure is unreasonably durable when you build it small.

The early CMS shopping years

For a while in the late 2000s I went through every option on the table. WordPress (still feeling toy-ish in 2007), Joomla! (already declining), Drupal (too much for what most clients needed), and somewhere around 2008 I spent a few months with SilverStripe — a New Zealand–origin CMS that was quietly excellent at the time. Object-oriented PHP done well, a real templating layer, a solid content model. SilverStripe would have been the smarter long-term bet than WordPress for some of the sites I built. It wasn’t, because the ecosystem mass wasn’t there. Plugins, themes, hosting, hiring — WordPress had all of that and SilverStripe didn’t, and ecosystem mass beats technical merit nine times in ten.

By 2010-ish, WordPress had won. The leap that made me actually like working with it was Genesis Framework from StudioPress: a disciplined parent theme with sensible hooks, no theme-options soup, no kitchen-sink plugins. Most of the WordPress sites I still run sit on Genesis with WP Rocket for performance and Cloudflare for edge caching. The Genesis + WP Rocket + Cloudflare stack hits 95+ Core Web Vitals consistently if you don’t fight it. It’s a boring, reliable rig. I built Riverlane on it, Rokade on it, this site on it (until last week).

The WordPress decade(s)

Across all of that, the work shifted. Around 2014 I started doing CRO at Conrad and stopped thinking of websites as “what does the design say” and started thinking “what’s the slowest paint, where do users drop, what happens at the variant level”. That work moved off WordPress entirely into experimentation platforms — Convert and Optimizely first, then GrowthBook with the home-built Toolbox on top. WordPress didn’t leave; it stopped being where the most interesting problems lived. The CMS sat under client websites doing what a CMS does, while the testing layer above did the work that paid the bills.

The longer I worked at the experimentation layer, the more the underlying CMS stopped mattering. Marketing sites are mostly content + a small amount of interactivity + tracking. WordPress will serve that, but it’s a lot of dynamic infrastructure for what’s essentially a static job. The last couple of years I started looking at every new project and asking: do I really need a database, an admin UI, and a PHP runtime to ship a marketing page that updates twice a month?

Why Astro now

The static-site tooling is finally mature. Astro in particular hits the right point on the trade-off curve — TypeScript-strict, content collections that read like a real CMS without the runtime cost, image optimisation built in, the ability to drop into framework code where you need it without paying for it on the marketing pages where you don’t. Vite underneath, which I already trust because the Toolbox runs on Vite. Cloudflare Pages for hosting — free, fast, and on the same edge I was already using for the WordPress sites.

The recoveryArea.nl site you’re reading this on is the recent migration. Riverlane is mid-migration. Both were bilingual NL/EN WordPress sites that became more painful than valuable to keep on PHP. The migrations themselves were straightforward — Markdown content collections, Astro components for the site chrome, Cloudflare Pages for deploy, no surprises. The end result is faster, cheaper, and easier to maintain than the WordPress version, with no admin UI for the client to break.

I’m not done with WordPress. Rokade and a handful of others stay on it because they work, and the Genesis + WP Rocket + Cloudflare stack is genuinely good at what it does. But the default for new sites flipped, and the centre of gravity moved. Twenty-three years on the open web, four CMSes, and the answer for marketing sites in 2026 turned out to be: don’t have a CMS at all. Just write Markdown, build, deploy.

Happy migrating 🙂