Current todos
No todos yet.
Basics
Attach tags to any query via meta. When the server invalidates a matching tag, the query refetches automatically via SSE. No manual invalidateQueries needed.
No todos yet.
The server function calls invalidateTags — no client-side invalidation code needed.
const { data } = useQuery({
queryKey: ['todos'],
queryFn: fetchTodos,
})
// After mutation, you must manually:
const addTodo = useMutation({
mutationFn: createTodo,
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: ['todos'] })
// Forget one? Stale data.
// Add a new query? Update every mutation.
}
})const { data } = useQuery({
queryKey: ['todos'],
queryFn: fetchTodos,
meta: { tags: [appTags.todos.list()] }, // <-- one line
})
// Server mutation invalidates automatically.
// No onSuccess. No invalidateQueries. Done.