Most of our pages are content. Marketing, docs, blog, legal, careers — pages where the user wants to read, scan, click a link, and move on. For that 80% of the surface, every kilobyte of JavaScript we ship is a tax we pay on someone else’s battery. Astro lets us treat HTML as the default and JavaScript as the exception.

Where we do need interactivity — onboarding, dashboards, modals with non-trivial state — we reach for Svelte. The compiler model means there’s no virtual DOM tax at runtime, and the syntax stays close enough to standard HTML that designers can read and edit components alongside engineers. That collaboration alone has pulled days off our review cycles.

The combination matters more than either tool alone. Astro hands the page off to the browser as static HTML; Svelte hydrates only the islands that need it; everything else stays as plain markup. The result is sub-100kb routes that feel instant on a 3G connection, with full interactivity on the surfaces that warrant it.

It’s not a silver bullet. Sharing state across islands takes more thought than a SPA. Some libraries assume a React-shaped world. And the tooling is still maturing — we’ve shipped patches upstream more than once. But the trade is worth it: a stack that’s smaller in production, faster on real devices, and easier to reason about at every layer.

If you’re picking a frontend in 2026, the question isn’t which framework — it’s which parts of my product actually need a framework. Answer that honestly, and a stack like Astro plus Svelte stops looking exotic and starts looking obvious.