Express, Fastify e Hono — Qual escolher para sua API?
Se você já criou uma API em Node.js, provavelmente esbarrou no Express. Talvez tenha ouvido falar do Fastify como alternativa mais rápida. E, mais recentemente, alguém pode ter mencionado o Hono, esse “menino novo” que roda até na borda (edge).
Como alguém que já trabalhou com os três, quero mostrar as diferenças de forma direta, sem enrolação, para que você escolha com consciência no seu próximo projeto.
1. Filosofia e Objetivo
-
Express (2010)
Minimalista e flexível, nasceu para simplificar a criação de apps web e APIs REST. É praticamente um “canivete suíço” do Node.js, mas sua arquitetura já mostra sinais da idade. -
Fastify (2017)
Criado para ser rápido, tipado e com validação de dados embutida. Pensa no Express, mas otimizado para lidar com alta carga e com TypeScript em mente desde o início. -
Hono (2021)
Minimalista, ultra-performático e pensado para rodar em qualquer runtime moderno — Node, Deno, Bun, Cloudflare Workers, Vercel Edge. Perfeito para serverless e microsserviços leves.
2. Performance
Testes médios de benchmarks (requests por segundo):
| Framework | Requests/s | Observações |
|---|---|---|
| Express | ~ 20–40k | Mais lento, middlewares síncronos e arquitetura antiga. |
| Fastify | ~ 70–90k | Ótimo para alta carga, serialização rápida de JSON. |
| Hono | ~ 180–300k | Absurdo de rápido, pensado para runtimes modernos. |
Se performance máxima é prioridade, Hono leva fácil. Mas lembre-se: performance não é tudo — ecossistema e manutenção contam muito.
3. Ecossistema e Plugins
-
Express
Ecossistema enorme, com milhares de middlewares. Mas o tempo cobrou seu preço: muitas libs estão desatualizadas ou mal mantidas. -
Fastify
Sistema de plugins oficial, validação com JSON Schema, decorators e hooks. Comunidade ativa e crescendo rápido. -
Hono
Ecossistema pequeno, mas já com middlewares para CORS, JWT, autenticação e roteamento avançado. Tudo muito enxuto.
4. Sintaxe
Express
import express from 'express';
const app = express();
app.get('/hello', (req, res) => {
res.send('Hello World');
});
app.listen(3000);
Fastify
import Fastify from 'fastify';
const app = Fastify();
app.get('/hello', async (request, reply) => {
return { msg: 'Hello World' };
});
app.listen({ port: 3000 });
Hono
import { Hono } from 'hono';
const app = new Hono();
app.get('/hello', (c) => c.text('Hello World'));
export default app;
5. TypeScript
- Express — suporte via
@types/express, mas a experiência não é fluida. - Fastify — excelente integração, tipagem de rotas e schemas de forma natural.
- Hono — 100% escrito em TypeScript, inferência automática de parâmetros e body.
6. Runtimes Suportados
| Framework | Node.js | Deno | Bun | Cloudflare Workers | Vercel Edge |
|---|---|---|---|---|---|
| Express | ✅ | ❌ | ⚠️ | ❌ | ❌ |
| Fastify | ✅ | ❌ | ⚠️ | ❌ | ❌ |
| Hono | ✅ | ✅ | ✅ | ✅ | ✅ |
Se você pretende rodar em edge/serverless, Hono é praticamente a única escolha viável.
7. Quando usar cada um
- Express → Projetos legados, times acostumados com a API, quando a prioridade é simplicidade e compatibilidade com libs antigas.
- Fastify → APIs modernas em Node.js, que precisam de performance, tipagem e validação robusta.
- Hono → Microsserviços, serverless, edge computing, APIs ultrarrápidas e minimalistas.
Conclusão
Não existe “o melhor” universal.
O Express ainda é ótimo para quem precisa de estabilidade e não se importa tanto com velocidade.
O Fastify é uma escolha sólida para Node.js moderno, com alta performance e boas práticas embutidas.
O Hono é o canivete suíço das aplicações edge, extremamente rápido e pronto para múltiplos runtimes.
Se você está começando um projeto novo e quer pensar no futuro, especialmente com serverless, vale muito olhar para o Hono.
E você? Já trabalhou com algum desses? Qual foi sua experiência?