Corporate & Marketing Websites

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.

The problem

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.

The result

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 getWhat does not come automatically
Around 166 KB less framework JavaScript per pageA 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 visitorA better CLS: it was already at 0.00 before any optimisation
Less CPU and battery use on low-end mobile devicesA ranking gain: performance signals carry no published weight, and relevance comes first
One less locale routing layer to maintainDemonstrated 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.
ItemStatus in AstroWhat it implies
Your typed TypeScript dataPorts almost as isA content collection fed by a loader function, with a unique id per entry
Routes generated from dataDirect equivalentgetStaticPaths replaces static params generation
JSON-LD, sitemap, per-page lastmodDirect equivalentInline injection and per-page serialisation in the sitemap integration
Bilingual routing by locale prefixNativeThe locale routing plumbing disappears
Field-by-field fallback between localesNOT nativeAstro's fallback is a route fallback, not a field fallback: the merge still has to be written
Middleware on prerendered pagesConditionalDoes not run on prerendered pages by default, it has to be enabled in the adapter
Server-side formsNeeds scopingServer actions cannot run on a prerendered page: forms go through endpoints
Strict CSP and security headersVerify case by caseThe adapter option exists, the exact output of your policy must be tested
Font loading and preloadingVerify case by caseDominant 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.

Questions

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.

A 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.

Get advice on my project