Debounce e throttle em inputs: busca rápida sem derrubar a API
A busca dispara uma requisição a cada letra digitada e a API sofre. Debounce e throttle resolvem — e deixam a interface mais fluida.
Por Equipe We Codex3 min de leitura
Uma pessoa digitando "concessionária" gera 14 eventos de teclado. Se cada um dispara uma busca na API, são 14 requisições em dois segundos — a maioria inútil, e algumas chegando fora de ordem e mostrando resultados errados.
Debounce
Espera a pessoa parar de digitar por um tempo (por exemplo, 300ms) antes de executar. Ideal para buscas, autocompletar e validações.
function debounce<T extends (...a: never[]) => void>(fn: T, ms = 300) {
let t: ReturnType<typeof setTimeout>
return (...args: Parameters<T>) => { clearTimeout(t); t = setTimeout(() => fn(...args), ms) }
}Throttle
Executa no máximo uma vez a cada intervalo, mesmo com eventos contínuos. Ideal para rolagem, redimensionamento de tela e acompanhamento do mouse.
Cuidados que completam a solução
- 1.Cancele requisições antigas quando uma nova começar (
AbortController), para que uma resposta lenta não sobrescreva a mais recente. - 2.Mostre que está buscando, com um indicador discreto.
- 3.Busca mínima: só a partir de dois ou três caracteres.
- 4.Cache de buscas recentes.
Em React
Para filtros locais, useDeferredValue mantém a digitação fluida enquanto a lista atualiza — ajuda diretamente o INP (INP: o que fazer quando cliques e toques demoram para responder).
Protege a API também
Menos requisições inúteis significa menos chance de bater no limite e receber 429 (Gerenciando o erro 429 Too Many Requests: exponential backoff e retry no cliente, Rate limiting em Node.js: como proteger suas APIs contra sobrecarga e abusos sem afetar a UX).
A busca do blog da We Codex usa essas técnicas. Veja sistemas web ou fale com a gente.
- Debounce
- Throttle
- Performance
- Frontend
Resolver de vez, com quem faz isso todo dia
Seu site precisa carregar em menos de um segundo e converter mais?
Este artigo mostra o caminho. A implementação sob medida — o detalhe que muda o resultado no seu caso — é o trabalho da We Codex, empresa de engenharia do grupo Wocom.
Continue lendo
Tudo sobre Web & Performance- Ler artigo
Web & Performance3 min
INP: o que fazer quando cliques e toques demoram para responder
O usuário clica e a página demora para reagir. Isso é INP ruim — a métrica do Google que substituiu o FID. Veja de onde vem o atraso e como reduzi-lo.
- Ler artigo
Segurança3 min
Gerenciando o erro 429 Too Many Requests: exponential backoff e retry no cliente
Seu app recebe 429 e responde tentando de novo imediatamente — piorando tudo. Veja como implementar exponential backoff com jitter e dar um feedback decente ao usuário.
- Ler artigo
Segurança3 min
Rate limiting em Node.js: como proteger suas APIs contra sobrecarga e abusos sem afetar a UX
Sem limite de requisições, um script mal-intencionado (ou um bug no seu próprio app) derruba a API. Veja como aplicar rate limit no Node.js sem bloquear clientes legítimos.