Islands and Interactivity
How each static site generator handles client-side interactivity on an otherwise static page.
Astro
Defined by its islands architecture — components ship zero JavaScript by default, and you opt individual components into client-side hydration explicitly (client:load, client:visible, and similar directives).
VuePress
Hydrates the whole page as a Vue application by default, closer to a traditional SPA-on-static-hosting model than Astro’s selective island hydration.
VitePress
Similarly hydrates as a Vue application, optimized for the mostly-static, docs-style pages it’s designed for rather than fine-grained partial hydration.
Gatsby
Hydrates the entire page as a React application, meaning even simple, mostly-static pages ship a full React runtime unless specifically optimized otherwise.
Docusaurus
Also hydrates the whole page as a React application, prioritizing consistent React-powered interactivity (like versioned doc switchers and search) over minimizing shipped JavaScript.
Eleventy
Ships no client-side framework or hydration model at all by default — any interactivity is plain, hand-written JavaScript you add yourself, giving full control but no built-in component hydration.
Hugo
Ships no JavaScript framework or hydration model by default — pages are plain static HTML/CSS, with any interactivity added manually as vanilla JS.
Jekyll
Also ships no JavaScript framework by default — interactivity is entirely up to whatever plain JS or third-party scripts you add to the templates yourself.
Zola
Like Hugo and Jekyll, ships no JavaScript framework or hydration model by default, staying pure static HTML unless you add your own scripts.