Astro: a content site that ships no JavaScript by default.
A content site built on a React framework ships its runtime on every page, including the ones with no interaction at all. Astro flips the rule: the page is HTML, and JavaScript only exists inside the islands you ask for. We build in Astro when it is the right call, and we tell you when it is not.
A real person replies within 24 business hours.
Your site is a content site, yet it serves every visitor the full runtime of an application framework on pages that have no use for it.
A prerendered site where JavaScript is limited to the components that genuinely need it, backed by a written and costed framework decision.
Benefits
Zero framework JavaScript on pages with no interaction
Less data consumed and less CPU on low-end mobile devices
Native bilingual routing, with no hand-built i18n layer to maintain
A documented decision rather than a migration driven by fashion
Deliverables
Astro versus Next.js decision, costed, with the measurements behind it
Prerendered Astro site: typed content collections, JSON-LD, sitemap
React islands or targeted scripts wherever interaction demands them
301 redirect plan and SEO no-regression review
Use cases
Corporate or brochure site of 30 to 50 pages
Topic cluster or SEO content silo
Moving off WordPress to a prerendered site
Bilingual site with one locale falling back on the other
What Astro changes, in one sentence
On a React framework, a static page is still a React tree rendered at build time and then rehydrated in the browser, because the runtime has to take over somewhere. So the runtime ships everywhere, including on a text page with no interaction at all.
Astro does the opposite: the page is a template rendered at build time, no JavaScript is shipped by default, and JavaScript only exists inside the islands you explicitly mark as interactive. That is the model described in Astro's official documentation on islands architecture.
On a 40-page site where 38 pages are content, the difference is roughly 166 KB of compressed JavaScript per page. That is a figure we measured in the browser on our own site, not a vendor estimate.
What you get, and what you do not
This is where most Astro pitches go wrong. The gain in bytes is certain. The gain in Core Web Vitals is not, and we would rather say so before selling you a migration.
| What you get | What does not come automatically |
|---|---|
| Around 166 KB less framework JavaScript per page | A better LCP: on our site, Chrome's render-blocking analysis reports 0 ms of savings on both FCP and LCP |
| Less data consumed by the visitor | A better CLS: it was already at 0.00 before any optimisation |
| Less CPU and battery use on low-end mobile devices | A ranking gain: performance signals carry no published weight, and relevance comes first |
| One less locale routing layer to maintain | Demonstrated INP headroom: a load trace does not measure INP |
On our own site, what weighed on mobile LCP was not JavaScript but render delay, 86 to 96% of LCP, meaning CSS and fonts. Both are identical in either framework. An audit before the decision is exactly what prevents that kind of misattribution, and it is what we do in the free site audit.
The trap that cancels the main gain
Almost every site has an interactive header: mega menu, mobile drawer, keyboard focus trap. That component sits on every page. Keep it in React with a hydration directive and React plus its renderer ship on every page again, which takes the Astro gain straight back to zero.
So the condition for the gain is not choosing Astro. It is writing the site shell without a UI framework. Worth knowing before you sign off on a migration: that work is feasible while staying on your current framework, and it then delivers the same gain without rewriting your pages.
Astro or Next.js: the criterion we apply
For a content site, Astro is our default. We move to Next.js only when at least two of the following are true. One is not enough: a contact form, content negotiation for AI agents or three API routes belong perfectly well in Astro endpoints.
- Your conversion tool is a real application: scoring engine, admin area, queue, storage, webhooks. That is no longer a brochure site with a form.
- You reuse React heavily: an existing design system, a component library, shared-state UI across many pages. Porting all of that costs more than the bundle tax you save.
- You need Server Components, streaming or partial prerendering. Astro has no equivalent.
- You serve high-cardinality dynamic content with aggressive revalidation. Doable in Astro, more direct in Next.
If your project looks more like a custom institutional site with heavy integrations than a content site, the answer leans towards Next. If what you mainly want is a credible corporate site that is easy to keep alive, Astro does the job well.
What ports as is, and what has to be rewritten
We checked this table against the official Astro 7 documentation on 30 July 2026. It is the basis we use to price a migration when one is on the table.
Four points drive the pricing. All four are documented by the vendor, and all four are worth reading before you sign anything.
- Content collections: every entry needs a unique id, so data keyed by slug has to be remapped.
- Internationalised routing: the fallback works per route, not per field. A field-by-field merge still has to be written.
- Middleware: it does not run on a prerendered page until an adapter option enables it.
- Server actions: they cannot run on a prerendered page, so forms go through endpoints.
| Item | Status in Astro | What it implies |
|---|---|---|
| Your typed TypeScript data | Ports almost as is | A content collection fed by a loader function, with a unique id per entry |
| Routes generated from data | Direct equivalent | getStaticPaths replaces static params generation |
| JSON-LD, sitemap, per-page lastmod | Direct equivalent | Inline injection and per-page serialisation in the sitemap integration |
| Bilingual routing by locale prefix | Native | The locale routing plumbing disappears |
| Field-by-field fallback between locales | NOT native | Astro's fallback is a route fallback, not a field fallback: the merge still has to be written |
| Middleware on prerendered pages | Conditional | Does not run on prerendered pages by default, it has to be enabled in the adapter |
| Server-side forms | Needs scoping | Server actions cannot run on a prerendered page: forms go through endpoints |
| Strict CSP and security headers | Verify case by case | The adapter option exists, the exact output of your policy must be tested |
| Font loading and preloading | Verify case by case | Dominant LCP lever: a regression here degrades the only metric that matters |
Our own decision, and why it was no
In July 2026 we audited our own site to decide whether it should move to Astro. Verdict: no. Two of the conditions favouring Next were met, our audit tool is a real application with a scoring engine and a token-protected back office, and our pages are already 100% prerendered. Astro would not have changed the rendering model, only the build tool.
We tell that story because it says something useful about how we work: the decision rests on measurements, and it can conclude against the fashionable technology. If you want the detail of the method before trusting us with a project, our approach walks through it step by step.
Moving off WordPress to a prerendered site
This is the most common case. A WordPress install that has piled up plugins, whose back office scares the team, and whose pages take three seconds to appear. Astro solves the technical half, provided the work happens in the right order.
- Inventory of existing URLs and their rankings, before any structural decision
- A 301 redirect plan written and approved before the switch, not discovered after the drop
- Content moved into typed collections, with metadata and internal linking intact
- The shell rebuilt without a UI framework, which is the condition for the real gain
- A no-regression review: titles, descriptions, structured data, sitemap, hreflang
If your team is attached to a familiar back office and performance is not your main problem, a well-run WordPress redesign is often still the better call. We say so when that is the case.
Is Astro mature enough for a professional site?
Yes. The model is stable and the integration ecosystem covers sitemaps, images, Tailwind, page transitions and the main hosting providers. The thing to watch is not framework maturity but verifying the patterns your specific site depends on: security policy, font loading, middleware on prerendered pages. We check those against the documentation before pricing, never from memory.
Can we keep React components in an Astro site?
Yes, as islands. A React component marked interactive ships its runtime, but only on the pages where it appears. That is the right way to handle a multi-step form, a calculator or a configurator. The trap is putting the header in one: it appears everywhere, so its runtime ships everywhere.
How long does an Astro site take?
The same order of magnitude as an equivalent content site on another framework. Our benchmark is 6 to 12 weeks for 10 to 25 pages, from scoping to launch, content and SEO included. Beyond that, the timeline follows the volume of content to produce and your team's availability, not the technical choice. Migrating a site that already ranks adds the time needed for URL inventory and no-regression review.
What does it do for search engines and AI answer engines?
Full HTML is served at build time either way, so there is no mechanical visibility gain to expect from the framework. What matters for search engines and AI agents alike is page structure, content depth, structured data and internal linking. Astro does not provide those on its own: that is editorial work, and we treat it as such.
Do you audit before recommending a migration?
Always, and the outcome can be negative. We measure the weight actually served in the browser, the chunk breakdown, the render delay, and we check whether your field data justifies the investment. On our own site, that process concluded against migrating and in favour of fixing four issues, three of which had nothing to do with the framework.
Before we start.
Astro or Next.js for my site?
For a content site, Astro is our default. Next.js is justified when at least two conditions are met: your conversion tool is a real application (scoring engine, back office, storage), you reuse a React design system heavily, you need Server Components or streaming, or you serve high-cardinality content with aggressive revalidation. A contact form and three API routes do not justify Next.
Will Astro improve my Core Web Vitals?
The gain is certain in bytes and uncertain in Core Web Vitals, and it should be said that way. On our own site, Chrome's render-blocking analysis reports 0 ms of savings on FCP and on LCP: JavaScript was off the critical path, and the render delay came from CSS and fonts, which are identical in either framework. We do not sell a speed gain we have not measured on your site.
Should an existing site be migrated to Astro?
Rarely on weight alone. A migration touches every URL you rank on, and the Astro gain cancels out if the interactive header stays a React component hydrated on every page. We ran that decision on our own site in July 2026 and chose not to migrate. Method matters more than framework.
Corporate & Marketing Websites
WordPress Website Development
WordPress site development and redesigns, built for performance and easy content management.
Learn moreWordPress Core Template (Reusable Starter)
A reusable WordPress core and template for consistent multi-site deployments.
Learn moreWordPress Multisite
A WordPress multisite network to manage multiple brands from one shared foundation.
Learn moreCustom Institutional Website
Custom institutional websites for large accounts and organizations.
Learn moreA astro web development project to scope?
Send us your context. We tell you where to start, because a well-chosen first project saves you from paying for the rest too early. A real person replies within 24 business hours.