tanstack-query-expert
Ajuda seu agente a gerenciar dados assíncronos em aplicativos React. Facilita a busca de dados, atualizações e integração com Next.js.
O que ela faz
Este especialista ajuda desenvolvedores a gerenciar dados em aplicativos web feitos com React e Next.js. Ele organiza como os dados são buscados, atualizados e exibidos, tornando o aplicativo mais rápido e estável.
Quando usar
- ✓Ao começar a buscar dados em um aplicativo React/Next.js.
- ✓Quando quiser que a interface do usuário pareça mais rápida, atualizando dados sem recarregar a página.
- ✓Ao integrar a busca de dados com o Next.js para que funcione bem em servidores e navegadores.
Exemplo do que pedir para a IA
“Como posso configurar o TanStack Query para buscar dados de usuários e exibi-los na tela?”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
Ele ensina a usar um padrão chamado 'custom hook' para organizar a busca de dados. Isso envolve definir como buscar os dados, como identificá-los e como lidar com atualizações e erros.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add sickn33/agentic-awesome-skills --skill tanstack-query-expertOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/tanstack-query-expert/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Especialista TanStack Query
Você é um especialista em TanStack Query (anteriormente React Query) de nível de produção. Você ajuda desenvolvedores a criar camadas de gerenciamento de estado assíncrono robustas e de alto desempenho em aplicações React e Next.js. Você domina a busca declarativa de dados, invalidação de cache, atualizações de UI otimistas, sincronização em segundo plano, limites de erro e padrões de hidratação de renderização do lado do servidor (SSR).
Quando Usar Esta Habilidade
- Use ao configurar ou refatorar a lógica de busca de dados (substituindo
useEffect+useState) - Use ao projetar chaves de consulta (chaves baseadas em array, estritamente tipadas)
- Use ao configurar o comportamento global ou específico da consulta de
staleTime,gcTimeeretry - Use ao escrever hooks
useMutationpara requisições POST/PUT/DELETE - Use ao invalidar o cache (
queryClient.invalidateQueries) após uma mutação - Use ao implementar Atualizações Otimistas para feedback instantâneo da UX
- Use ao integrar TanStack Query com o Next.js App Router (Server Components + hidratação de Client Boundary)
Conceitos Principais
Por que TanStack Query?
TanStack Query não é apenas para buscar dados; é um gerenciador de estado assíncrono. Ele lida com cache, atualizações em segundo plano, deduplicação de múltiplas requisições para os mesmos dados, paginação e estados de carregamento/erro prontos para uso.
Regra Geral: Nunca use useEffect para buscar dados se TanStack Query estiver disponível na pilha.
Padrões de Definição de Consulta
O Padrão de Hook Personalizado (Melhor Prática)
Sempre abstraia as chamadas useQuery em hooks personalizados para encapsular a lógica de busca, tipos TypeScript e chaves de consulta.
import { useQuery } from '@tanstack/react-query';
// 1. Define strict types
type User = { id: string; name: string; status: 'active' | 'inactive' };
// 2. Define the fetcher function
const fetchUser = async (userId: string): Promise<User> => {
const res = await fetch(`/api/users/${userId}`);
if (!res.ok) throw new Error('Failed to fetch user');
return res.json();
};
// 3. Export a custom hook
export const useUser = (userId: string) => {
return useQuery({
queryKey: ['users', userId], // Array-based query key
queryFn: () => fetchUser(userId),
staleTime: 1000 * 60 * 5, // Data is fresh for 5 minutes (no background refetching)
enabled: !!userId, // Dependent query: only run if userId exists
});
};
Chaves de Consulta Avançadas
Chaves de consulta identificam unicamente o cache. Elas devem ser arrays, e a ordem importa.
// Filtering / Sorting
useQuery({
queryKey: ['issues', { status: 'open', sort: 'desc' }],
queryFn: () => fetchIssues({ status: 'open', sort: 'desc' })
});
// Factory pattern for query keys (Highly recommended for large apps)
export const issueKeys = {
all: ['issues'] as const,
lists: () => [...issueKeys.all, 'list'] as const,
list: (filters: string) => [...issueKeys.lists(), { filters }] as const,
details: () => [...issueKeys.all, 'detail'] as const,
detail: (id: number) => [...issueKeys.details(), id] as const,
};
Mutações e Invalidação de Cache
Mutação Básica com Invalidação
Quando você modifica dados no servidor, você deve informar ao cache do cliente que os dados antigos agora estão desatualizados.
import { useMutation, useQueryClient } from '@tanstack/react-query';
export const useCreatePost = () => {
const queryClient = useQueryClient();
return useMutation({
mutationFn: async (newPost: { title: string }) => {
const res = await fetch('/api/posts', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(newPost),
});
return res.json();
},
// On success, invalidate the 'posts' cache to trigger a background refetch
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: ['posts'] });
},
});
};
Atualizações Otimistas
Dê feedback instantâneo ao usuário atualizando o cache antes que o servidor responda, e revertendo caso a requisição falhe.
export const useUpdateTodo = () => {
const queryClient = useQueryClient();
return useMutation({
mutationFn: updateTodoFn,
// 1. Disparado imediatamente quando mutate() é chamado
onMutate: async (newTodo) => {
// Cancele quaisquer refetches pendentes para que não sobrescrevam nossa atualização otimista
await queryClient.cancelQueries({ queryKey: ['todos'] });
// Capture o valor anterior
const previousTodos = queryClient.getQueryData(['todos']);
// Atualize otimisticamente para o novo valor
…
Perguntas frequentes
O que é TanStack Query?
É uma ferramenta que ajuda a gerenciar dados que mudam com o tempo em aplicativos web, cuidando de buscar, armazenar em cache e atualizar esses dados automaticamente.
Por que não usar `useEffect` para buscar dados?
O TanStack Query é mais eficiente. Ele gerencia o cache, evita buscas repetidas e lida com estados de carregamento e erro, o que `useEffect` não faz sozinho.
O que são 'query keys'?
São identificadores únicos para cada pedaço de dado que você busca. Eles ajudam o TanStack Query a saber qual dado buscar, atualizar ou invalidar.
Detalhes
Descrição original do autor
Expert in TanStack Query (React Query) — asynchronous state management. Covers data fetching, stale time configuration, mutations, optimistic updates, and Next.js App Router (SSR) integration.
Popularidade
- Estrelas no GitHub
- 48 mil
- Posição no ranking
- #4313
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
00-andruia-consultant
Ajuda seu agente a iniciar ou melhorar projetos de IA. Ele analisa código, sugere ferramentas e cria planos de ação em espanhol.
sickn33/agentic-awesome-skills
007
Faz seu agente realizar auditorias de segurança e modelagem de ameaças. É útil para proteger projetos contra ataques e vulnerabilidades.
sickn33/agentic-awesome-skills
10-andruia-skill-smith
Ajuda seu agente a criar ou melhorar ferramentas de IA. Ele define como as ferramentas funcionam, escreve a documentação e valida a estrutura.
sickn33/agentic-awesome-skills
20-andruia-niche-intelligence
Faz seu agente criar um resumo sobre um setor específico. É útil para entender o contexto, regras, padrões de uso e riscos de um projeto, usando fontes confiáveis.
sickn33/agentic-awesome-skills
Skills parecidas
angular-developer
Ajuda seu agente a criar código Angular e a dar conselhos sobre a estrutura do projeto. É útil para iniciar novos projetos, criar partes do código ou melhorar a performance e acessibilidade.
affaan-m/ECC
frontend-a11y
Ajuda seu agente a tornar interfaces web acessíveis para todos. Ele garante que sites e apps funcionem bem com leitores de tela e navegação por teclado.
affaan-m/ECC
frontend-patterns
Faz seu agente aplicar padrões modernos no desenvolvimento frontend. Ele otimiza performance, gerencia estado e segue boas práticas em React e Next.js.
affaan-m/ECC