Documentation Index
Fetch the complete documentation index at: https://kubo-47e69177.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
React Query
Install
pnpm add @zapaction/query @tanstack/react-query
Read with useActionQuery
useActionQuery requires readPolicy: "read-only" so reads stay explicit.
components/todo-panel.tsx
"use client";
import { useActionQuery } from "@zapaction/query";
import { listTodos } from "../app/actions";
const todosQuery = useActionQuery(listTodos, {
input: {},
queryKey: ["todos"],
readPolicy: "read-only"
});
Write with useActionMutation
components/todo-panel.tsx
import { useActionMutation } from "@zapaction/query";
import { createTodo } from "../app/actions";
const createMutation = useActionMutation(createTodo, {
invalidateOnSuccess: true
});
import { createFeatureKeys, createFeatureTags } from "@zapaction/core";
export const todoKeys = createFeatureKeys("todos", {
all: () => [],
byUser: (userId: string) => ["by-user", userId]
});
export const todoTags = createFeatureTags("todos", {
byUser: (userId: string) => ["by-user", userId]
});
Result preview
idle -> pending -> success | error
A clear state model makes retries and UX fallback logic easier to maintain.