Deno web development
Choose among Deno.serve, Fresh, Hono, Oak, and static-site tools
Choose the abstraction from the workload. “Building for the web” does not automatically require a full-stack framework.
| Option | Position | Good for | Poor fit |
|---|---|---|---|
Deno.serve | Web-standard HTTP primitive | webhooks, small APIs, proxies | many routes and business middleware |
| Fresh 2 | Deno-first full-stack SSR | content, commerce, CRUD, progressive interaction | client-only SPAs |
| Hono | small cross-runtime framework | REST, edge, portable APIs | opinionated full-stack pages |
| Oak | Express/Koa-style middleware | Deno backends and middleware-oriented teams | minimum cross-platform bundles |
| Lume | Deno static-site generator | docs, blogs, content sites | dynamic back offices |
Aleph.js was an important Deno React SSR experiment, but new projects should verify its current releases, maintenance, and target runtime before selecting it. Do not treat a historical comparison table as a recommendation.
Minimal HTTP service
Deno.serve({ port: 8000 }, (request) => {
const url = new URL(request.url);
if (url.pathname === "/health") return Response.json({ ok: true });
return new Response("Not found", { status: 404 });
});
deno run --allow-net=0.0.0.0:8000 main.ts
Selection rules
- Mostly server-rendered HTML with local interaction: Fresh.
- One API across Deno, Workers, Bun, or Node: Hono.
- The team prefers middleware and context: Oak.
- Only a few endpoints: keep
Deno.serveand one less abstraction.