deco-islands-migration

Installation
SKILL.md

Deco Islands Migration — From Fresh Islands to React Components

Why Islands Don't Make Sense in TanStack Start

In Fresh/Preact, islands were a core architecture concept: the server rendered static HTML and only specific islands/ components shipped JavaScript to the browser for hydration. Everything outside islands/ was server-only.

In TanStack Start/React, there is no islands boundary. React performs full hydration of the entire component tree. Every component — whether it lives in src/components/ or src/islands/ — is sent to the client and hydrated. The src/islands/ directory is a dead artifact that:

  1. Adds a useless indirection layer — each island is typically a 3-line wrapper that re-exports a component
  2. Confuses the mental model — developers think islands have special client-side powers
  3. Doubles the module graph — Vite must resolve and bundle both the island wrapper AND the real component
  4. Hides the real component path — makes searching, refactoring, and debugging harder
  5. Breaks tree-shaking assumptions — bundler can't optimize through the extra re-export layer

What an Island Wrapper Looks Like

Installs
2
Repository
decocms/blocks
GitHub Stars
5
First Seen
Mar 11, 2026
deco-islands-migration — decocms/blocks