SSR framework for Svelte 5 + Bun with islands-based selective hydration
Mochi vs SvelteKit
Mochi and SvelteKit both render Svelte 5 on the server, but they make different bets. Mochi is SSR-first on Bun with islands-based selective hydration and a batteries-included backend (SQLite, queues, WebSockets, SSE, caching). SvelteKit is runtime-agnostic with a client-side router, broad deployment targets, and a mature ecosystem.
Use the filters below to focus on the areas you care about, or switch to Mochi only / SvelteKit only to see where each framework leads.
| Feature | Mochi | SvelteKit |
|---|---|---|
| Server islands & selective hydration | Yes - mochi:defer | No - full page hydration only |
| Built-in SQLite database | Yes - bun:sqlite | Partial - node:sqlite via adapter-node on Node or Deno |
| Built-in Postgres & MySQL support | Yes - Bun.sql() | No - bring your own cloud database |
| Background job queues | Yes - Mochi.queue() | No |
| Minimal client-side JavaScript | Yes - zero JS unless hydrated; tuned for first load | Partial - tuned for repeat navigations; no zero-JS pages (CSR opt-out breaks interactivity) |
| Deployment targets | No - Bun only | Yes - Node, Vercel, Bun and other cloud providers |
| Prerendering / SSG | Partial - route warmup supported | Yes |
| Build as static HTML | No - SSR only | Yes - adapter-static |
| Form actions + progressively enhanced forms | Yes | Yes |
| Middleware | Yes | Yes |
| Hooks & extension filters | Yes - eventHooks & filters | No |
| Top-level await | Yes | Partial - experimental |
| Real-time WebSockets | Yes - Mochi.ws() | No - custom server with external package |
| Server-Sent Events | Yes - Mochi.sse() | No - manual setup, limited provider support |
| Built-in caching library | Yes - MochiCache | No |
| Cookie helpers | Yes | Yes |
| AI development support | Yes - Skill, MCP & llms.txt | Yes - Skill, MCP & llms.txt |
| Client-side router | No | Yes |
| Type-safe routes & params | Planned | Yes - generated ./$types & $app/types |
| Remote functions (type-safe RPC) | No | Yes - experimental |
| View Transitions | Yes - built-in component | Partial - manual wiring |
| Highly interactive apps | Yes - WS, SSE & View Transitions | Yes - SPA mode & remote functions |
| Tailwind | Yes - Tailwind v4 | Yes |
| Built-in Markdown (mdsvex) | Yes - mdsvex built-in | Yes - via integration (sv add mdsvex) |
| Centralized logging system | Yes - mochiEvents | No - experimental OpenTelemetry only |
| Image resizing | Planned - build & runtime transformations | Partial - build-time only; runtime at extra cost |
| Link preloading | Planned | Yes |
| Service worker integration | Planned | Yes |
| Snapshots | Partial - browser-native restoration | Yes - manual setup |
If you’re migrating an existing app, the Coming from SvelteKit guide maps each SvelteKit concept to its Mochi equivalent.