Astro Builds

What Actually Changes When You Move a WordPress Site to Astro

Steven Dey Steven Dey 5 min read Updated 22 July 2026
Isometric illustration of a performance gauge, servers, database and cloud icon representing Astro's static rendering speed

Every WordPress site we look at, no matter how well built, is doing the same expensive thing on every single page view: querying a database, assembling a page from a theme and a stack of plugins, and rendering it with PHP, in real time, for that one visitor. Caching plugins paper over this. They do not remove it. Astro removes it, because the page was already built before anyone asked for it.

Static output changes what can go wrong, not just how fast it loads

A WordPress page is generated live. Every request runs through PHP, hits the database, and gets assembled by whatever theme and plugin stack happens to be active that day. An Astro site is built once, at deploy time, into plain HTML, and served directly from Cloudflare’s edge network. There is no PHP execution on the public-facing pages, no database query per visitor, and no plugin code running against strangers on the internet. This is why we frame Astro as a performance decision and a security decision at the same time: removing the render step removes the attack surface that render step created.

Zero JavaScript by default, not zero JavaScript if you remember to optimise

Astro’s islands architecture ships HTML and CSS by default and only hydrates JavaScript for the specific components that actually need interactivity, a navigation menu, a form, an animation. A typical WordPress theme plus page builder plus a handful of plugins ships JavaScript for all of it, all the time, whether the visitor needs it or not. That difference shows up directly in Core Web Vitals: less JavaScript to parse and execute means a lower Total Blocking Time and a better Interaction to Next Paint, without anyone needing to hand-tune a caching plugin to get there.

Time to First Byte stops being a moving target

On a WordPress site, Time to First Byte depends on database load, plugin count, PHP-FPM worker availability, and whatever else happens to be running on that server at that moment. It moves around. A traffic spike, a scheduled backup, or a poorly written plugin query can all drag TTFB up without anything about the page itself changing. A static Astro site has none of that variability: the HTML already exists, so TTFB becomes almost entirely a function of how far the visitor is from the nearest Cloudflare edge node, typically in the tens of milliseconds rather than hundreds. This is one of the more underrated wins, because it is invisible in a screenshot but shows up directly in every Core Web Vitals report Google runs against the site.

Image and asset delivery gets simpler, not just faster

WordPress image optimisation usually means another plugin: something to generate WebP variants, something else to lazy-load, a third thing to strip EXIF data, each one a potential conflict point at the next core update. Astro’s build pipeline handles responsive images, format conversion, and lazy-loading as part of the build itself, with the output served as static files from Cloudflare’s edge rather than generated on request. There is no runtime image-processing step to fail, time out, or get skipped under load.

Two paths, depending on who needs to edit the content

This is not an all-or-nothing decision. We build two ways. Pure Astro suits sites where content changes infrequently and speed matters most: the entire site compiles to static files with no CMS in the loop at all. Headless WordPress plus Astro suits teams who want to keep editing content in the WordPress dashboard they already know, while the public-facing site is generated and served through Astro. This blog runs on exactly that second model: WordPress handles authoring, Astro handles delivery to everyone who actually reads it.

What this changes about hosting, not just architecture

A static Astro site deploys to Cloudflare Pages, served from Cloudflare’s edge network rather than a single origin server. There is no PHP-FPM process to keep provisioned, no MySQL instance sized for peak traffic, and no per-request compute cost for pages that do not change between visitors. For most small-to-medium business sites, that collapses hosting from a managed WordPress plan down to a fraction of the cost, while removing an entire category of maintenance work: there is no WordPress core to patch on the public site, no plugin compatibility matrix to manage, no wp-login.php for anyone to target.

The migration path matters as much as the destination

Moving an existing WordPress site to either build path is not a rewrite from scratch every time. For the headless model specifically, the existing WordPress install, its content, its authors, its editorial workflow, stays exactly as it is. What changes is what sits in front of it: instead of a WordPress theme rendering the public pages, Astro pulls content through the WordPress REST or GraphQL API at build time and generates the static output. Editors keep the dashboard they already know. Visitors get a site that no longer depends on WordPress being fast, secure, or even online at the moment they load a page.

Where WordPress still wins

None of this makes WordPress obsolete. If a client needs a large content team publishing daily, complex membership logic, e-commerce with real-time inventory, or a plugin ecosystem for something genuinely bespoke, WordPress remains the right tool, properly hardened and maintained. The decision is not “Astro is better.” It is “what does this specific site actually need to do,” which is exactly the conversation we have before recommending either path. Our Astro Builds page walks through both build paths in more detail, and our Cloudflare architecture sits underneath either choice.