javascript 4 min read

reboot. rethink. recoveryArea.

Twenty-three years online, four CMSes, one static-site flip. Why we moved off WordPress to Astro on Cloudflare Pages — and whether that's the right call for your own site too.

recoveryarea.nl relaunched on Astro and Cloudflare Pages — reboot. rethink. recoveryArea. — 100/100/100/100 across the board

A few hours ago I flipped the DNS for www.recoveryarea.nl away from the WordPress instance that had served it for the last decade-plus. Visitors landing here right now are seeing an Astro build, freshly deployed to Cloudflare Pages. Same domain, same back catalogue of posts (lightly polished) — everything else got rebuilt from scratch.

This site has lived under four CMSes in twenty-three years: Joomla in the early years, a brief SilverStripe stint around 2008, WordPress from 2012 onward, and now Astro. I wrote up the longer history elsewhere — this post is about what was paid back by the most recent move, and whether the same trade makes sense for your own site too.

Why we moved

The move was paid back in four currencies: performance, security, maintenance, and cost.

Performance. WordPress with Genesis + WP Rocket + Cloudflare in front kept the old site at 95+ Core Web Vitals consistently. Good, but never ceiling. Astro on Cloudflare Pages serves prebuilt static HTML from a global edge — time-to-first-byte in tens of milliseconds anywhere in the world. Lighthouse hits 100/100/100/100 on every audited page, on both desktop and mobile, because there’s nothing dynamic in the request path.

Security. No PHP runtime. No admin login. No plugins to keep patched. No database to harden. The static site has roughly the same attack surface as a folder of HTML files on a CDN — because that’s what it is. You trade away the ability for a non-technical user to log in and edit content. For a personal portfolio site, that’s a feature, not a loss.

Maintenance. Every WordPress site I’ve ever run has been a small ongoing tax: plugin updates, theme updates, PHP-version bumps, “your site needs maintenance” emails. None of that exists on the Astro build. Want to write something? Open WebStorm. Want to update a dependency? npm update — same flow as every other JS project. Even more importantly for a developer: the entire site now lives in one IDE. Not just the theme and plugin layer like WordPress — content, layout, styles, everything. One keyboard, one window, one push.

Cost. Cloudflare Pages on a personal account is free. The old hosting bill — the last billable piece of running this site — disappears at the end of this month. Annual cost going forward: the domain renewal. That’s it.

Where we landed (and what we built into it)

The stack that earns those payoffs: Astro 6 (TypeScript strict, content collections, zero JS by default, framework-optional where you need it) on Cloudflare Pages (deploy-from-git, edge cache, free tier covers everything a personal site needs). Both tools earn their place because they remove decisions you’d otherwise have to make.

Maximum performance. 100/100/100/100 on Lighthouse, built by hand.

Simplicity. No CMS, no plugins, no shortcuts.

Components and content. Four custom-built tools surfaced on a /tools/ section. A Toolbox deep-dive that needed a careful secret-sauce audit pass before it could publish responsibly. A career-spanning Milestones timeline on About-me anchored on real dates.

Visual sugar. View transitions wired across navigation, a cosmic-field background, an SVG cover for every post in a unified visual language, breadcrumbs with BreadcrumbList JSON-LD, OG images rasterised per post.

Client-side usability. Pagefind search that runs entirely in the browser.

Is Astro a good fit for everyone?

Not necessarily. Two cases where I wouldn’t reach for it first:

Sites where non-technical editors update content frequently. Markdown-in-a-repo doesn’t fly when the editor is the marketing manager who knows the WP admin and nothing else. You can pair Astro with a headless CMS (Sanity, Storyblok, Decap…) to get the best of both — but at that point the simplicity argument weakens; you’ve added a piece back. WordPress with Gutenberg, or a headless-WordPress setup feeding Astro, may still be the right answer.

Sites with heavy user-driven dynamic content — comments, e-commerce checkout, member areas, search beyond a static index. Astro can go dynamic via SSR adapters, but at that point you’re choosing it for the dev experience, not the static-first benefits. Be honest about what you actually need.

For marketing sites, portfolios, documentation, and most small-business sites that update twice a month — Astro is the right call in 2026. For the WordPress sites I still maintain for clients: currently mid-migration on one, and considering the same for the others if Astro fits the brief. WordPress isn’t dead — it’s just no longer the default for new builds.

Looking back, each platform was the right answer for its era. Astro is the right answer for 2026 — for this site, anyway. The content lives in Markdown, the deploy is portable, the IDE is the only place I need to be. When the next move comes (and at some point it will), it’ll start from a much lighter baseline than this one did.

Twenty-three years on the open web. Four CMSes. One static-site flip.

Happy rebooting 🙂