SSR framework for Svelte 5 + Bun with islands-based selective hydration
On this page
mochi
Mochi is a lightweight, server-first framework for Svelte 5 on Bun. Mochi websites render server-side on every request and ship as plain HTML. Components only ship JavaScript when you explicitly mark them as islands.
Server-rendered, with island interactivity
The websites we visit on the web are mostly static — text, images and links. Only a handful of elements on any given page actually need to be interactive: a search box, a logged-in badge, a comments widget. Mochi reflects this at the core of its design. Mochi sites renders server-side as plain HTML; the interactive pieces are marked with the mochi:hydrate directive and ship JS as interactive islands embedded in that HTML.
Go ahead, try hydrating the page below and see which components will load JavaScript.
profile
- ssr
- island
The header text, the main column, and the footer ship as HTML and stay that way. The badge and the sidebar nav are wrapped as islands — same SSR HTML on first paint, with JS attached on top. Everything else is zero-JS forever.
Why would I consider Mochi over SvelteKit?
- Faster sites. Mochi ships zero client JavaScript by default. SvelteKit code-splits per route but still hydrates the entire page — even purely static content. Mochi only hydrates the components you explicitly mark as islands, which means less JS on first load, better bfcache behavior, and a natural fit for any site.
- Performant hydration. Avoid hydrating islands until the users scrolls into them with
mochi:hydrate:visible. Or avoid hydrating at all if the user never scrolls down to that component. Your users will thank you for the faster experience. - Uses the platform. Mochi ships with first-class support for View Transitions. No client side router, no state to keep track of between requests.
- No heavy bundler (no Vite). Uses the lighting-fast Bun bundler, which builds sites with hundreds of routes in seconds.
- Real-time built in. WebSockets and Server Sent Events are first-class route types — no extra packages or services required.
Community
Questions, bug reports, ideas, or just want to see what others are building? Join the Mochi Discord.