Guide for implementing Langflow frontend query and mutation patterns with Axios and TanStack React Query v5. Trigger when creating or updating API hooks in controllers/API/queries, consuming UseRequestProcessor in components, deciding whether to use useQuery or useMutation, handling conditional queries, cache invalidation, mutation error handling, or migrating legacy API calls to the query hook pattern.
controllers/API/queries/{domain}/ as the organized source of truth.UseRequestProcessor for consistent retry, invalidation, and error handling.api instance for all HTTP calls (never raw fetch for REST).performStreamingRequest() for streaming operations (build, chat).onSettled callbacks.Langflow uses Axios + TanStack React Query v5 for data fetching. There is no oRPC or contract layer. The architecture is:
Component
-> API hook (controllers/API/queries/{domain}/use-{verb}-{resource}.ts)
-> UseRequestProcessor (controllers/API/services/request-processor.ts)
-> useQuery / useMutation (TanStack React Query)
-> queryFn / mutationFn
-> api.get/post/patch/delete (Axios instance from controllers/API/api.tsx)
| File | Purpose |
|---|---|
controllers/API/api.tsx | Axios instance, ApiInterceptor component, performStreamingRequest() |
controllers/API/services/request-processor.ts | UseRequestProcessor hook wrapping useQuery/useMutation with retry defaults |
controllers/API/helpers/constants.ts | URL constants (URLs) and getURL() helper |
controllers/API/queries/{domain}/ | Domain-organized query and mutation hooks |
types/api/index.ts | useQueryFunctionType, useMutationFunctionType type helpers |
stores/ | Zustand stores for client-side state |
references/query-patterns.md for hook structure, naming, URL patterns, and query/mutation call-site shape.references/runtime-rules.md for conditional queries, invalidation, error handling, and streaming.UseRequestProcessor for query() and mutate() wrappers.api Axios instance for all HTTP calls.getURL() for constructing API paths.useQueryFunctionType or useMutationFunctionType.["useGetFlows"].onSettled.UseRequestProcessor provides default retry (5 for queries, 3 for mutations) with exponential backoff.controllers/API/queries/{domain}/use-get-*.ts (query hooks)controllers/API/queries/{domain}/use-post-*.ts (create mutations)controllers/API/queries/{domain}/use-patch-*.ts (update mutations)controllers/API/queries/{domain}/use-delete-*.ts (delete mutations)controllers/API/helpers/constants.ts (URL constants)types/api/index.ts (API type definitions)stores/ (Zustand store updates triggered by queries)references/query-patterns.md for hook structure, naming conventions, directory layout, and anti-patterns.references/runtime-rules.md for conditional queries, invalidation, mutate versus mutateAsync, error handling, and streaming requests.Treat this skill as the single query and mutation entry point for Langflow frontend work. Keep detailed rules in the reference files instead of duplicating them in project docs.