I spent 10 years building websites with frameworks that ship 200KB of JavaScript to render a paragraph of text. Vue, Nuxt, React, Next — all brilliant tools for building apps. All absurdly overpowered for a marketing site.
Then I found Astro. And I felt like an idiot for not finding it sooner.
What Astro actually is
Astro is a web framework that ships zero JavaScript by default. You write components — in Astro's own syntax, or in React, Vue, Svelte, literally whatever you want — and the build step renders them to plain HTML. The JavaScript disappears. What lands in the browser is HTML and CSS. That's it.
A typical page on our site is 5-15KB. Not 5-15KB gzipped. 5-15KB total. The Lighthouse score is 95+ on mobile without trying. Not because we optimized aggressively — because there's nothing to optimize. You can't have a slow JavaScript bundle if there is no JavaScript bundle.
"But what about interactivity?" Fine. You mark a component with client:load or client:visible and it hydrates independently. One interactive widget on a page of 20 components means one component ships JS. The other 19 are static HTML. Astro calls this "Islands Architecture." I call it "not shipping code nobody asked for."
The numbers that made me switch
State of JavaScript 2025 surveyed thousands of developers. Astro hit 94% positive sentiment. Number one. SvelteKit came in at 88%. Nuxt at 80%.
Next.js? 55%. Down from 68% the year before.
The survey editors didn't sugarcoat it: Next.js keeps gaining market share while losing satisfaction at the same time, and now has a 39-point gap with Astro. That's a framework running on inertia, not love.
I don't make technology decisions based on popularity contests. But when 94% of people who use a tool like it, and 45% of people who use the alternative don't, the signal is hard to ignore.
Cloudflare bought them
January 16, 2026. Cloudflare acquired The Astro Technology Company. All Astro employees became Cloudflare employees. Framework stays MIT-licensed.
The strategic logic is obvious. Vercel has Next.js. Cloudflare needed a framework story. Astro's static-first, edge-friendly architecture is a natural fit for Workers, R2, and D1. Expect Cloudflare-specific features to ship faster than competing platform adapters.
Should you worry? A little. "Stays open source" is a stated commitment, not a contractual guarantee. Governance changes typically lag acquisitions by 12-24 months. But Astro deploys anywhere — Vercel, Netlify, Node, Deno, Hetzner with nginx. We deploy on Hetzner. Cloudflare has zero leverage over our hosting choice. That's the beauty of static HTML.
Astro 6.0
Shipped March 10, 2026. The highlights that actually matter:
Rebuilt dev server on Vite's Environment API. Faster HMR. You won't notice unless your project is large, then you'll notice a lot.
First-class Cloudflare Workers runtime. Unsurprising given the acquisition. If you deploy to Workers, this removes a layer of adapter friction.
Stable Content Security Policy API. Astro is the first JavaScript meta-framework with built-in CSP for both static and dynamic pages. If you've ever hand-rolled CSP headers in nginx and wanted to cry, this is for you. (I have. I did.)
Experimental Rust compiler. Not default yet. Will be. The team is rewriting the compiler in Rust for speed. Early benchmarks show 2x faster rendering. Treat that number as directional — vendor benchmarks always are.
Built-in Fonts API. Sounds minor. Isn't. Google Fonts without the privacy headache and layout shift. Self-hosted, optimized, one config line.
If you're not ready for v6, run 5.17.x. It's stable, battle-tested, and what we're on right now. Upgrade after 6.1 or 6.2 when the integration ecosystem catches up.
Content Collections are the killer feature nobody talks about
This is the feature that sold me. Not the performance. Not the zero JS. The content model.
You define a schema in Zod. You put Markdown files in a folder. Astro validates every file against the schema at build time. Type errors, missing fields, wrong formats — all caught before deploy, not in production at 2 AM.
We have 116 pages: services, industries, tech stacks, case studies, course chapters. Every content type has a Zod schema. Every markdown file is validated. If an engineer adds a case study with a missing stack field, the build fails. Not "renders wrong." Fails. Loudly.
The Content Layer API (stable in 5.0) generalized this further. You can write loaders that pull from anywhere — local files, APIs, headless CMS, databases — into the same type-safe pipeline. Our blog posts live in Sanity. Our marketing pages live in Markdown. Same build, same types, same validation. Both sources.
The AI crawlability angle nobody's writing about
Here's the thing that matters in 2026 and almost nobody is talking about.
GPTBot, ClaudeBot, PerplexityBot, Google's AI Overviews — they fetch your HTML. They don't execute your JavaScript. If your content lives inside a React component that renders client-side, it doesn't exist to them.
Our old Nuxt site was invisible. Zero organic traffic for years. Not because the content was bad. Because the content wasn't in the HTML.
Astro's output is pure HTML. Every word on every page is in the source. AI bots read it. Search engines index it. LLMs can summarize it. We went from zero to 116 fully indexable pages in two weeks. The SEO value of "your content is actually in the HTML" is impossible to overstate in a world where half the web hides behind client-side rendering.
Who else is using it
IKEA, Unilever, Visa, NBC News, OpenAI, Cloudflare's own developer docs, Microsoft, Adobe, Porsche, The Guardian, Bloomberg, Deloitte, LEGO. TechnologyChecker tracks 49,000+ active domains on Astro. Migration data shows a 12:1 ratio of companies moving from Gatsby to Astro versus the other direction.
This isn't an indie framework anymore.
Where Astro falls apart
I'll be honest because nobody else is.
Complex stateful apps. If you're building a dashboard, a Figma clone, a real-time multiplayer game — Astro is the wrong tool. It's content-first. Everything else is a workaround. Use Next.js, SvelteKit, or whatever your team knows.
The ecosystem is younger. Auth, advanced i18n, complex form state — you'll write more glue code than in Next.js. The integrations exist but they're not as mature.
Astro DB was a miss. The hosted database service (Astro Studio) shut down in early 2025. Fred Schott was unusually candid about it: they never found product-market fit. Astro DB still works as a wrapper around libSQL/Turso, but don't pick Astro for the database story. Pick it for the rendering story.
Cloudflare alignment. The framework deploys everywhere today. But Cloudflare-specific features will get priority. If that bothers you philosophically, factor it in.
The bottom line
I run a software engineering studio. We build apps for Fortune 500s. Our own website runs on Astro on an $8.60/month Hetzner VPS with nginx. It builds 116 pages in 2.66 seconds. Lighthouse scores are 95+. Ahrefs health score is 99/100. Every AI bot on the internet can read every word.
The framework won by doing less. Less JavaScript, less complexity, less cleverness. More HTML. More speed. More content that actually shows up when someone (or something) looks for it.
94% satisfaction isn't a fluke. It's what happens when a tool does exactly what it promises and nothing else.
We rebuilt eltexsoft.com on Astro + Sanity. The full teardown: Rebuilding Our Agency Website in 2026.