Zero JavaScript until you actually need it
Technology
Astro ships zero JavaScript by default. A page renders to static HTML at build time, and interactivity gets added back in per component, as an island, only where you actually asked for it. That is the opposite default from Next.js, which assumes a client runtime and lets you opt out.
We reach for it on content-first sites: marketing pages, documentation, and nonprofit sites where the reader outnumbers the interaction by a wide margin. Islands can be built in React, Svelte, or plain HTML, so a team's existing component library usually comes along instead of getting rewritten.
Why
The bet Astro makes
- Zero JavaScript ships until you ask for it
The default output is static HTML with no client runtime attached. You add interactivity component by component, as an island, instead of shipping a framework runtime to every visitor and hoping tree-shaking saves you. For a page that is mostly reading, that default is correct.
- It is a content framework, not an app one
Marketing sites, documentation, and nonprofit sites where a visitor reads more than they click are exactly the target. A logged-in dashboard with real client state, a cart, or live data is not what Astro is built for, and forcing it there fights the framework instead of using it.
- Islands can be built in any framework
A React component, a Svelte component, or plain HTML can all sit on the same Astro page as islands, hydrated independently of each other. That matters when a team already has a design system in another framework and does not want to rebuild it to adopt Astro.



