A pattern for shipping less JavaScript by rendering most of a page on the server and hydrating only the interactive parts
 (1).webp0ebd9d39-a7bf-4254-ab3f-860e3c4aa3ef.webp)
For much of the past decade, many web frameworks defaulted to sending a full JavaScript application to the browser, then using that JavaScript to render the entire page client-side, a pattern often called a single-page application. This approach gives great interactivity but comes at a cost: users download and execute JavaScript for the entire page, even for content that is mostly static text, like an article body or a product description.
Islands architecture flips this default. The page is rendered primarily as static HTML on the server, and only specific, clearly defined components, the "islands", ship their own JavaScript and become interactive after the page loads. Everything else stays as lightweight, fast-loading HTML that requires no JavaScript execution to display correctly.
A typical islands-based page might render a blog post entirely as static HTML, while a comment section, a shopping cart widget, or an interactive chart within that same page is marked as an island. Only the JavaScript needed for those specific interactive components is sent to the browser and hydrated, meaning the static parts of the page become visible and usable almost immediately, without waiting for a large JavaScript bundle to download and execute first.
This is different from traditional server-side rendering, which typically still hydrates the entire page's JavaScript after the initial HTML loads, even if most of that page never changes after load. Islands architecture specifically avoids hydrating parts of the page that don't need interactivity at all.
Because islands architecture ships JavaScript only for genuinely interactive components, pages built this way tend to have smaller total JavaScript payloads and faster times to becoming interactive, particularly for content-heavy pages like blogs, documentation sites, and marketing pages where most of the content is static text and images rather than dynamic widgets. This directly benefits key performance metrics that both users and search engines care about, including how quickly a page responds to the first user interaction.
| Framework Approach | Core Idea |
|---|---|
| Component-level islands | Explicitly mark specific components as interactive; everything else stays static |
| Server-first rendering with selective hydration | Render on the server by default, opt into client-side interactivity per component |
| Partial hydration | Hydrate only the visible or interacted-with parts of a page, sometimes deferring further |
While implementation details differ, the shared philosophy across these approaches is treating server-rendered static HTML as the default, with client-side JavaScript as an explicit, opt-in choice rather than an automatic requirement for every part of a page.
Expect continued convergence across frameworks toward some form of selective or partial hydration, even among frameworks that historically defaulted to hydrating an entire page's JavaScript. As web performance metrics continue to influence both user experience and search visibility, patterns that reduce unnecessary JavaScript are likely to remain a central focus of framework development.
Is islands architecture only useful for content-heavy sites?
It provides the clearest benefit for content-heavy sites, but any application with a mix of static content and a smaller number of genuinely interactive components can benefit from shipping less unnecessary JavaScript.
Does islands architecture mean giving up rich interactivity?
No. Interactive components still work fully; the difference is that non-interactive parts of the page don't carry the cost of unnecessary JavaScript hydration.
Which frameworks support islands architecture?
Several modern web frameworks have implemented their own version of this pattern, though the specific terminology and implementation details vary between them.
Is this the same as traditional server-side rendering?
Not exactly. Traditional server-side rendering typically still hydrates the whole page's JavaScript after load, while islands architecture specifically avoids hydrating parts of the page that don't need interactivity.
Islands architecture reflects a broader shift in web development toward treating JavaScript as an intentional cost rather than a default requirement for every part of a page. For content-heavy sites in particular, the pattern offers a practical way to improve load performance without sacrificing interactivity where it genuinely matters.