TL;DR
- Astro ships zero JavaScript by default — pages render to static HTML, so they load fast without hydration overhead.
- Islands architecture lets you add interactivity only where you need it, hydrated independently, instead of shipping one giant JS bundle.
- We lean on
client:visible/client:idledirectives,astro:assetsimage optimization, content collections, and view transitions to hit 95–100 Lighthouse scores.- Astro is framework-agnostic — bring React, Svelte, or Vue components as islands without rewriting them.
- It's the right call for content-and-marketing-heavy sites where speed and SEO matter more than app-like complexity.
Every developer has shipped the site that looked great in dev and crawled in production. A marketing page — mostly text and images — somehow pulls 400KB of JavaScript, blocks the main thread, and posts a Largest Contentful Paint that makes your Core Web Vitals dashboard turn red. The content didn't need a framework runtime. The framework shipped one anyway.
That mismatch — static content paying the tax of a client-side app — is exactly the problem Astro was built to kill. Over the last couple of years it's become our default for performance-critical marketing sites, and the speed difference isn't marginal. So here's the practical version: how we build fast websites with Astro, the specific techniques that move the needle, and the honest cases where you shouldn't reach for it.
Why Loading Speed Is Non-Negotiable in 2026
Speed stopped being a "nice to have" a while ago. Google's Core Web Vitals are a ranking factor, and Largest Contentful Paint, Interaction to Next Paint, and Cumulative Layout Shift all reward pages that render fast and stay stable. Slower than your competitors and you rank below them, full stop.
It's also a conversion issue. The correlation between load time and bounce rate is well documented — every extra second of load time bleeds users before they read a word. For a marketing site whose entire job is to convert visitors, performance is the product.
The frustrating part is that most slow sites are slow by accident. They're content pages built on tools designed for applications, so they ship an application's worth of JavaScript to render a paragraph. Astro's whole thesis is: stop doing that.
What Actually Makes Astro Fast
Two ideas do most of the work.
Zero JavaScript by default. Astro renders your components to HTML at build time and ships no client-side JS unless you explicitly ask for it. A page of content becomes a page of HTML. The browser has almost nothing to parse, execute, or hydrate — it just paints. This alone eliminates the biggest cause of slow content sites.
Islands architecture. When you do need interactivity — a carousel, a search box, a menu — that component becomes an "island": a small, independently hydrated piece of interactivity in a sea of static HTML. Instead of hydrating the entire page, the browser hydrates only the islands, only when needed. You get interactivity where it matters and static speed everywhere else.
Put together: you ship the least JavaScript possible, and you ship it surgically. That's the foundation every technique below builds on.
How We Build in Astro: The Techniques That Matter
Here's the actual playbook we run on a performance-first Astro build.
1. HTML-first, JS-only-when-earned
We start every component as static. If it doesn't need to be interactive, it never becomes a client component. The default is HTML; interactivity is the exception you justify.
2. Selective hydration with client directives
For the islands that do need JS, we hydrate them precisely:
-
client:idlefor non-urgent widgets (hydrate when the browser is free) -
client:visiblefor below-the-fold components (hydrate only when scrolled into view) -
client:mediafor interactivity that's only relevant at certain breakpoints -
client:loadreserved for the rare above-the-fold interactive element
Most sites default everything to load-on-hydrate; deferring islands to visible/idle is one of the biggest wins for Interaction to Next Paint.
3. Image optimization with astro:assets
Images are usually the real LCP culprit, not JS. Astro's built-in <Image /> component handles responsive sizing, modern formats (AVIF/WebP), and lazy loading automatically. We serve correctly sized, next-gen images without a manual pipeline — which quietly fixes most LCP problems.
4. Content collections for content-driven sites
Blogs, case studies, and resource libraries live in type-safe content collections (Markdown/MDX with schema validation). Content stays fast, structured, and version-controlled — no CMS runtime tax on the front end.
5. View transitions for app-like nav without the SPA weight
Astro's view transitions (ClientRouter) give smooth page-to-page transitions and can prefetch links, so navigation feels instant — without adopting a heavy client-side router or turning the whole site into a single-page app.
6. Framework-agnostic islands
We're not locked into one UI library. Astro lets us drop in a React, Svelte, Solid, or Vue component as an island where it earns its place — reusing existing components without a rewrite, and still shipping zero JS everywhere else.
7. Static-first deploy, SSR where needed
Most marketing pages are prerendered to static HTML and served from the edge (Vercel/Netlify/Cloudflare) for near-instant TTFB. For genuinely dynamic bits, Astro's server islands and SSR let us render just those on demand — without giving up static speed on the rest of the page.
The Results (and How to Verify Them)
The payoff of this approach is consistent: content pages that render fast, ship minimal JavaScript, and post green Core Web Vitals. In practice we routinely land Lighthouse performance scores in the 95–100 range on Astro marketing builds, with sub-second Largest Contentful Paint on a decent connection.
e.g., "Our site: LCP 0.8s, Lighthouse Performance 99, total JS shipped: 18KB." Real numbers from your own build are far more credible than generic claims. Run it through PageSpeed Insights and quote the actual results.
Astro vs the Usual Suspects (When It's the Right Call)
- vs Next.js: Next is excellent for app-like, highly dynamic products. For content and marketing sites, Astro ships far less JS by default — you're not paying an app framework's overhead for a brochure site.
- vs WordPress: WordPress carries plugin bloat and render-blocking scripts that tank performance. Astro's static output sidesteps that entire category of problem.
- vs a no-code builder (Webflow/Framer): No-code wins when non-developers need to own and edit the site independently. Astro wins when you want maximum performance and full control and have engineers to maintain it. (In our shop we pick per project — Webflow when the client edits daily, Astro when raw speed is the priority.)
When You Should Not Use Astro
Honesty matters. Astro is not the answer for a heavily interactive, app-like product (a dashboard, a real-time tool) — that's what a full client framework is for. It's also overkill if a non-technical team needs to build and edit everything themselves with no developer involved; a no-code platform serves them better. Astro shines for content-and-marketing-heavy sites where speed and SEO are the priority. Match the tool to the job.
FAQ
Is Astro good for SEO?
Yes. Static, fast-loading HTML with strong Core Web Vitals is exactly what search engines reward, and Astro's output is clean and crawlable by default. Fast pages plus semantic HTML is the foundation of technical SEO.
Does Astro work with React or other frameworks?
Yes — Astro is framework-agnostic. You can use React, Svelte, Vue, or Solid components as hydrated islands, reusing existing components while keeping the rest of the page as zero-JS static HTML.
Can Astro handle dynamic content?
Yes. Beyond static generation, Astro supports SSR and server islands, so you can render dynamic pieces on demand while keeping the rest of the page static and fast.
Is Astro faster than Next.js?
For content and marketing sites, typically yes — because Astro ships zero JS by default while Next hydrates a client app. For highly interactive products, Next's model may fit better. Match the framework to the workload.
The Bottom Line
Fast websites aren't about a magic framework — they're about not shipping what you don't need. Astro makes that the default: static HTML first, JavaScript only where it earns its place, images optimized automatically, interactivity added as isolated islands. For content and marketing sites where speed, SEO, and conversion are the goals, it's the cleanest path we've found to a site that loads in a blink and stays green on Core Web Vitals.
Written by the team at *Windmark** — a strategy-first design & development studio. We build fast, high-converting websites the right way for each project: Webflow when your team needs to own and edit it, Astro when raw performance is the priority. See our work at thewindmark.com or start a conversation.*

Top comments (0)