hydrate: 'none'

Lakes

A lake keeps a subtree static inside an island. HTML stays. That subtree’s JS never ships.

Each card below is one island (counter + toggle work). Nested inside is a lake — the framed panel — whose own button does nothing, because its component code is not in any client chunk. The accent button inside the lake is another island: it becomes interactive again on its own.

Toggle removes and re-adds the lake. Watch the SSR at stamp: cache restores the same HTML; SWR paints from cache then revalidates through the signed region endpoint and gets a fresh stamp. Full remount API: docs · Remount.

remount: 'cache' (default)

Toggle restores the cached lake DOM. The SSR stamp should not change.

interactive island (hydrated)
0
frozen lake · 0 KB JS

This markup is server-rendered and left untouched. Its button never increments.

SSR at 2026-08-08T20:42:29.277Z

island authored inside the lake (self-hydrates):

preset: 'frozenSwr' — remount SWR

Same lake component, vite preset { hydrate: 'none', remount: { revalidate: 'load' } }. Toggle paints cached HTML immediately, then re-fetches; the stamp updates after revalidate.

interactive island (hydrated)
0
frozen lake · 0 KB JS

This markup is server-rendered and left untouched. Its button never increments.

SSR at 2026-08-08T20:42:29.278Z

island authored inside the lake (self-hydrates):