Islands ≠ code splitting
They define independent client roots and leave other regions outside hydration.
Quick reference · Print-friendly
Compare replay scope, serialized state, loading granularity, and coordination cost.
| Dimension | Whole-tree hydration | Islands | Resumability |
|---|---|---|---|
| Startup reconstruction | Replay rendered client tree | Replay explicit interactive roots | Read serialized graph/listener metadata |
| Lazy boundary | Developer chunks/components | Island plus trigger | Fine-grained symbols generated by tooling |
| State handoff | Serialized props/store, then replay | Per-root serialized props/store | Serializable state and captured references |
| Coordination | Shared tree/context is direct | Explicit cross-root channel | Serialized reactive graph and async code |
| Main risk | Eager CPU/code grows with tree | Boundary and shared-state complexity | Serialization, chunks, tooling, cold actions |
| Strong fit | Dense app-like interaction | Content page with sparse widgets | Large interaction graph needing deferred startup |
They define independent client roots and leave other regions outside hydration.
A loader and demanded handlers still execute; eagerness and replay change.
Visibility can precede readiness. Match triggers to interaction urgency.
Cold chunks and bad scheduling can regress the first interaction.