O middleware do Next.js fica entre a requisicao de entrada e sua aplicacao. Ele roda antes da pagina renderizar, antes da API route executar, antes de qualquer outra coisa. Isso o torna o ponto de interceptacao mais poderoso de uma aplicacao Next.js.
Como funciona o middleware do Next.js
E um unico arquivo: middleware.ts na raiz do seu projeto. Exporta uma funcao que recebe um NextRequest e deve retornar um NextResponse. Roda no Edge Runtime, nao no Node.js.
Padrao 1: Guards de autenticacao
Em vez de verificar auth em cada componente de pagina ou API route, centralize no middleware. Verifique o token de sessao nos cookies e redirecione para /login se nao existir ou expirou.
Padrao 2: Redirects por geolocalizacao
Quando sua app e implantada na Vercel ou Cloudflare, o edge fornece dados de geolocalizacao automaticamente via request.geo. Voce pode usar para redirects de locale, conteudo regional ou compliance.
Padrao 3: Rate Limiting
Rate limiting no middleware protege suas API routes de abuso antes que o request chegue ao handler. Para deployments distribuidos, use Upstash Rate Limit ou outra solucao Redis compativel com edge.
Padrao 4: A/B Testing com cookies
Middleware pode atribuir usuarios a grupos experimentais antes da pagina renderizar, habilitando A/B testing do lado do servidor sem layout shift.
O que middleware NAO pode fazer
- Sem acesso a banco de dados com drivers nativos
- Sem acesso ao file system
- Sem operacoes de longa duracao
- Nao pode medir o tempo de resposta das suas API routes
Onde instrumentation.ts complementa o middleware
Middleware opera no edge antes do request. O hook de instrumentacao roda no runtime do Node.js quando o servidor inicia. E projetado especificamente para observabilidade: tracing, logging e monitoramento.
Pense no middleware como o porteiro na porta e instrumentacao como as cameras de seguranca dentro. Voce precisa dos dois para o panorama completo.
Nurbak Watch usa o hook de instrumentacao para monitorar cada API route de dentro do servidor. 5 linhas em instrumentation.ts, alertas via Slack, email ou WhatsApp em menos de 10 segundos. $29/mes (gratis durante o beta).

