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