Apply this for all server-state work in apps/admin-ui.
Core Workflow
- •Create or update an API module by service (
api/<service>/). - •Keep HTTP calls and request/response types in
client.tsandtypes.ts. - •Expose query option factories from
queries.ts. - •Consume query factories via
useQuery(...)in components.
Required Patterns
- •Query keys use service namespace first:
['service', 'resource', ...identifiers, params]. - •Required identifiers are separate key items; optional filters are grouped in a trailing object.
- •For cache operations (
invalidateQueries,setQueryData), useMyServiceQueries.<query>(args).queryKeyinstead of hand-written string keys. - •
setQueryDatashould rely on query-key inference; do not add explicit generics when using a factoryqueryKey. - •Prefer React Query
selectoveruseMemofor transformations derived from a single query. - •Use
skipTokenwhen required params are missing. - •Throw errors in query functions and let React Query handle them.
- •Prefer
mutatewith callbacks for mutations; usemutateAsynconly for sequencing.
Reference Files
- •
references/patterns-and-examples.mdfor full module and mutation examples. - •
references/query-select-over-memo.mdfor selector patterns andselectcaveats.