🍡 mochi

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.

FeatureMochiSvelteKit
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.