Hint
Only interactive components hydrate; static parts stay inert HTML — reduces JS payload dramatically
Islands architecture (Astro, Fresh, Marko) treats a page as mostly static HTML with isolated "islands" of interactivity that hydrate independently.
Traditional SSR problem: Even if 90% of the page is static text, the entire component tree must hydrate — downloading and parsing all JavaScript just to make a nav dropdown work.
Islands approach:
// Astro syntax
---
import Counter from './Counter.tsx'; // React component
---
<main>
<h1>Static content — no JS</h1>
<Counter client:load /> {/* hydrates this island only */}
</main>
React Server Components push the same idea into React itself — server components render to HTML, client components hydrate selectively.