Stacks vs Hono

Hono runs anywhere. Stacks runs an application.

Hono is a few kilobytes of extremely well-made routing that works on Cloudflare Workers, Deno, Bun, Node, and Lambda, with typed middleware and an RPC mode. It is the right tool for edge services. It is not trying to be the place your models, jobs, mail, and admin live.

What Hono is.

In its own terms, not ours.

Hono has become the default choice for edge and worker runtimes, and deservedly so: a small API, excellent TypeScript inference, a useful set of built-in middleware, and portability across every JavaScript runtime that matters. Its RPC mode gives typed clients without code generation, which is a genuinely nice property.

Where each one wins.

Same amount of room on both sides, on purpose.

Pick Hono for

  • Runtime portability

    One codebase on Workers, Fastly, Deno, Bun, Node, Lambda, Vercel, and Netlify. Stacks runs on Bun today, with more runtimes planned, and does not deploy to edge platforms.

  • Cold starts and size

    For workers measured in kilobytes and milliseconds, Hono is in a category Stacks is not competing in.

  • Type inference

    The RPC client infers types from every route with no opt-in and no generation step. Stacks infers only from routes registered through its typed router.

  • Simplicity

    The whole framework can be read in an afternoon, which is worth a lot for a service you will maintain for years.

Pick Stacks for

  • Everything past the handler

    Data, auth, roles, jobs, mail, storage, search, realtime, and admin, rather than middleware you select.

  • A view layer

    STX pages, layouts, and components in the same project, with SSR, static generation, islands, and SPA navigation.

  • Long-running work

    Queues, schedules, and workers are a poor fit for edge runtimes and a first-class fit here.

  • Deploy and infrastructure

    Provisioned from config rather than assembled per service.

  • Your own mail server

    Stacks ships an SMTP and IMAP server, so hello@ and support@ on your domain are real mailboxes on your own box, readable in Mail.app or any client. buddy mail:provision creates them and their MX, SPF, DKIM, and DMARC records. None of the frameworks compared here ships one.

Side by side.

The dimensions teams actually decide on.

Dimension Stacks Hono
Scope Full application framework Routing and middleware
Runtimes Bun today, more planned Workers, Fastly, Deno, Bun, Node, Lambda, more
Client types Typed client, no generation step; OpenAPI too Inferred RPC client
Data layer Included Choose your own
Background work Included Queues provided by the platform
Views STX: SSR, static, islands Built-in JSX renderer or none
Best fit Products, platforms, long-running work Edge services, APIs, proxies
Admin surface Generated from models Not applicable
Mail server Built in: SMTP, IMAP, real mailboxes None; inboxes come from a hosted provider

If you did move.

What ports cleanly, what does not, and where to start.

They coexist well

Keep Hono at the edge for caching, geo routing, or webhooks, and put the application behind it.

Handlers become actions

Route handlers translate directly; the RPC client is replaced by the Stacks typed client.

Watch the runtime assumptions

Code written for Workers may assume no filesystem and no long-running work, which changes once it lands in a server process.

The verdict.

Both answers are real. Most teams already know which paragraph is theirs.

Choose Hono when

The workload belongs at the edge, must run on multiple runtimes, or is small enough that a framework would be overhead.

Choose Stacks when

The workload is an application, with a database, background work, and people who need an admin screen.

The frameworks that usually come up in the same conversation.