SWR versus React Query: escolhendo a ferramenta certa
Compare SWR e React Query quanto à API, ao tamanho do pacote e à adequação ao caso de uso.
SWR versus React Query: escolhendo a ferramenta certa é uma aula grátis de React Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de React Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de React Academy inclui 4 aulas no total.
Comparação do tamanho do pacote
O SWR ocupa aproximadamente 7 KB comprimidos com gzip. O React Query v5 ocupa aproximadamente 13 KB comprimidos com gzip. A diferença de tamanho reflete os recursos adicionais do React Query: pré-busca de consultas, cancelamento de consultas, um ciclo de vida das consultas mais detalhado e DevTools integradas.
Para aplicações sensíveis ao tamanho ou padrões simples de busca e exibição, o volume menor do SWR é uma vantagem significativa.
Pontos fortes do SWR
O SWR tem uma API mais simples e minimalista. Se sua principal necessidade é buscar dados e exibi-los com revalidação automática, o SWR atende a isso com elegância e pouquíssimo código repetitivo.
Por ser desenvolvido pela Vercel, o SWR integra-se excepcionalmente bem ao Next.js, especialmente para combinar a pré-busca de getServerSideProps ou getStaticProps com a revalidação no cliente por meio de dados de reserva.
Integração do SWR com o Next.js
Passe os dados pré-buscados ao SWR por meio da opção de reserva no SWRConfig ou da opção fallbackData em useSWR. O SWR utiliza esses dados como valor inicial do cache, eliminando o clarão da primeira carga e permitindo a revalidação em segundo plano.
Esse padrão é a abordagem recomendada para busca de dados em aplicações do Next.js que usam o roteador de páginas com a Vercel.
Pontos fortes do React Query
O React Query oferece um controle mais preciso sobre o ciclo de vida das consultas: staleTime, gcTime (coleta de lixo), refetchOnWindowFocus, quantidade de tentativas e atraso entre tentativas podem ser configurados individualmente. O sistema de mutações, com os retornos de chamada onSuccess, onError e onSettled, é bastante expressivo.
O React Query também oferece cancelamento de consultas por meio de AbortSignal, algo útil para interfaces de pesquisa enquanto você digita.
Consultas infinitas
useInfiniteQuery do React Query, junto com getNextPageParam, foi criado especificamente para rolagem infinita e padrões de carregamento incremental. Ele gerencia a lógica do cursor das páginas e fornece um objeto pages plano ou estruturado.
O SWR tem useSWRInfinite, que oferece recursos semelhantes, mas com uma API um pouco mais básica, exigindo uma montagem mais manual das páginas.
Pré-busca de consultas
O React Query oferece suporte à pré-busca de consultas ao passar o cursor sobre um elemento ou ao mudar de rota, usando queryClient.prefetchQuery. Os dados já estão no cache antes da montagem do componente, proporcionando uma renderização instantânea.
O SWR não tem uma API integrada de pré-busca além dos dados de reserva do SSR. Para pré-buscas acionadas ao passar o cursor, o React Query é a melhor escolha.
Melhorias do React Query v5
O React Query v5 simplificou a API fazendo useQuery retornar isPending em vez de isLoading, unificando os padrões de atualização otimista e aprimorando a inferência do TypeScript. A API da v5 é mais limpa e consistente do que as versões anteriores.
Se estiver avaliando o React Query, use diretamente a v5 em vez de aprender a v4 e depois migrar.
Compartilhamento global automático do cache
O SWR compartilha globalmente as entradas do cache entre os componentes por chave, sem exigir configuração de provedor além de SWRConfig para os valores padrão. O React Query exige QueryClientProvider com uma instância de QueryClient.
Para prototipagem rápida ou aplicações simples, o cache global do SWR sem configuração é mais rápido de configurar. O cliente explícito do React Query é melhor para aplicações grandes com requisitos complexos de cache.
Quando escolher o SWR
Escolha o SWR quando sua aplicação for desenvolvida principalmente com Next.js, os padrões de busca de dados forem diretos (buscar-exibir-revalidar), você quiser um pacote menor ou sua equipe valorizar a simplicidade da API mais do que recursos avançados.
O SWR também é uma ótima escolha ao incorporar gradualmente uma biblioteca de busca de dados a uma base de código existente, sem uma grande migração.
Quando escolher o React Query
Escolha o React Query quando precisar de um gerenciamento complexo do estado do servidor: rolagem infinita, pré-busca de consultas, estratégias de nova busca em segundo plano, dependências de consulta em várias etapas ou controle minucioso do TTL do cache.
O React Query também tem um ecossistema mais ativo de middleware e DevTools, e seu queryClient pode ser testado com mais facilidade de forma isolada.
A abordagem híbrida
Algumas equipes usam ambos: o SWR para buscas simples de um único recurso em componentes folha e o React Query para páginas complexas com várias consultas e pré-busca. Isso é incomum, mas válido se a equipe tiver proficiência nas duas APIs.
Com mais frequência, as equipes escolhem uma das opções e a aplicam de maneira consistente em toda a aplicação, para evitar a alternância de contexto e a sobrecarga de duas dependências.
Tamanho dos pacotes: SWR versus React Query
Aproximadamente, como se comparam os tamanhos dos pacotes do SWR e do React Query?
Recapitulação da lição
O SWR (~7 KB) é mais simples, integra-se nativamente ao Next.js e abrange a maioria dos padrões de busca e exibição com pouco código. O React Query (~13 KB) oferece recursos mais avançados: consultas infinitas, pré-busca, retornos de chamada detalhados do ciclo de vida e cancelamento de consultas.
Escolha o SWR pela simplicidade e para projetos Next.js; escolha o React Query quando houver requisitos complexos de estado do servidor. Ambos oferecem suporte a TypeScript, Suspense, SSR e padrões off-line.
Perguntas Frequentes
A aula “SWR versus React Query: escolhendo a ferramenta certa” é grátis?
Sim — o texto completo de “SWR versus React Query: escolhendo a ferramenta certa” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de React Academy, atualize para CoddyKit PRO. O curso de React Academy inclui 4 aulas no total.
O que vou aprender em “SWR versus React Query: escolhendo a ferramenta certa”?
Compare SWR e React Query quanto à API, ao tamanho do pacote e à adequação ao caso de uso. Você pratica React Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar React Academy?
Nenhuma experiência prévia é necessária. React Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “SWR versus React Query: escolhendo a ferramenta certa”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de React Academy?
Sim. Cada aula de React Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Conceitos fundamentais do SWR: obsoleto enquanto revalida
- Hook useSWR: busca, carregamento e estados de erro
- Mutação e atualizações otimistas com SWR
- SWR versus React Query: escolhendo a ferramenta certa