| Default output | A page with no client-side framework code at all until a component asks for it. | A React application. Server components cut down what is sent, but the client parts still arrive with the framework runtime. |
|---|
| Component model | Astro components render on the server; React, Vue, Svelte, Solid and Preact can run beside them as islands. | React throughout, which keeps one mental model across the whole project. |
|---|
| How interactivity is declared | Per component, with a client directive that also says when to hydrate: on load, when idle, when visible or on a media query. | Per module boundary, with the client directive at the top of a file and the tree below it hydrated. |
|---|
| What the host has to run | Nothing, for a static build. An adapter adds a Node, Vercel, Netlify or Cloudflare runtime where a route needs one. | A runtime that supports the Next.js build output for anything beyond a static export. |
|---|
| Data and content | Content collections with a schema, validated during the build. | Data fetched in server components, with caching and revalidation handled by the framework. |
|---|