Skip to main content

API Reference

Complete API reference for @navios/react-query.

declareClient

Creates a client instance for type-safe queries and mutations.

function declareClient(options: ClientOptions): ClientInstance

Parameters

  • options.api: BuilderInstance - The configured API builder
  • options.defaults (optional): Default options
    • keyPrefix?: string[] - Prefix added to all query/mutation keys
    • keySuffix?: string[] - Suffix added to all query/mutation keys

Returns

A ClientInstance with methods to create queries and mutations.

Example

const client = declareClient({
api,
defaults: {
keyPrefix: ['api', 'v1'],
keySuffix: ['cache'],
},
})

ClientInstance Methods

query

Creates a query with inline configuration.

client.query<Config>(config: QueryConfig): QueryHelpers

Config Options:

  • method: HTTP method
  • url: Endpoint URL
  • responseSchema: Zod schema for response
  • querySchema?: Zod schema for query parameters
  • requestSchema?: Zod schema for request body
  • processResponse: Transform response data

Returns: Query helpers with use(), useSuspense(), invalidate(), etc.

queryFromEndpoint

Creates a query from a pre-declared endpoint.

client.queryFromEndpoint<Endpoint>(endpoint: Endpoint, options?: QueryOptions): QueryHelpers

infiniteQuery

Creates an infinite query for paginated data.

client.infiniteQuery<Config>(config: InfiniteQueryConfig): InfiniteQueryHelpers

Additional Options:

  • getNextPageParam: Extract next page parameter
  • getPreviousPageParam?: Extract previous page parameter
  • initialPageParam: Initial page parameter

infiniteQueryFromEndpoint

Creates an infinite query from a pre-declared endpoint.

client.infiniteQueryFromEndpoint<Endpoint>(endpoint: Endpoint, options: InfiniteQueryOptions): InfiniteQueryHelpers

mutation

Creates a mutation for data modification.

client.mutation<Config>(config: MutationConfig): MutationHelpers

Config Options:

  • method: HTTP method
  • url: Endpoint URL
  • requestSchema?: Zod schema for request body
  • responseSchema?: Zod schema for response
  • querySchema?: Zod schema for query parameters
  • processResponse?: Transform response data
  • useContext?: Provide context to callbacks
  • onMutate?: Called before mutation
  • onSuccess?: Called on success
  • onError?: Called on error
  • onSettled?: Called on completion
  • useKey?: Enable mutation key scoping

mutationFromEndpoint

Creates a mutation from a pre-declared endpoint.

client.mutationFromEndpoint<Endpoint>(endpoint: Endpoint, options?: MutationOptions): MutationHelpers

multipartMutation

Creates a mutation for file uploads.

client.multipartMutation<Config>(config: MultipartMutationConfig): MutationHelpers

Same options as mutation, but automatically handles FormData conversion.

Query Helpers

use

Returns a query result object.

query.use(params: QueryArgs): UseQueryResult

Returns:

  • data: Query data
  • isLoading: Initial load state
  • isFetching: Any fetch state
  • error: Error object
  • refetch: Refetch function
  • And all other TanStack Query properties

useSuspense

Returns data directly (throws on loading/error).

query.useSuspense(params: QueryArgs): UseSuspenseQueryResult

invalidate

Invalidate a specific query.

query.invalidate(queryClient: QueryClient, params: QueryArgs): () => Promise<void>

invalidateAll

Invalidate all matching queries.

query.invalidateAll(queryClient: QueryClient, params: QueryUrlParamsArgs): () => Promise<void>

queryKey

Query key utilities.

query.queryKey.dataTag(params: QueryArgs): QueryKey
query.queryKey.filterKey(params: QueryUrlParamsArgs): QueryKey
query.queryKey.bindToUrl(params: QueryUrlParamsArgs): string

Mutation Helpers

Hook Usage

mutation(): UseMutationResult
mutation(urlParams: UrlParams): UseMutationResult // When useKey is enabled

Returns:

  • mutate: Fire and forget mutation
  • mutateAsync: Promise-based mutation
  • isPending: Mutation in progress
  • isError: Mutation failed
  • isSuccess: Mutation succeeded
  • data: Response data
  • error: Error object
  • reset: Reset mutation state

useIsMutating

Check if mutation is in progress (when useKey is enabled).

mutation.useIsMutating(): number // Global count
mutation.useIsMutating(urlParams: UrlParams): boolean // Specific item

mutationKey

Get mutation key.

mutation.mutationKey(): MutationKey // When useKey is false
mutation.mutationKey(urlParams: UrlParams): MutationKey // When useKey is true

Prefetch Helpers

createPrefetchHelper

Creates a prefetch helper for SSR/RSC usage.

function createPrefetchHelper<TParams, TData, TError>(
queryOptionsCreator: QueryOptionsCreator<TParams, TData, TError>
): PrefetchHelper<TParams, TData, TError>

Returns: PrefetchHelper with methods:

  • prefetch(queryClient, params) - Prefetch data
  • ensureData(queryClient, params) - Ensure data exists, returns data
  • getQueryOptions(params) - Get raw query options
  • prefetchMany(queryClient, paramsList) - Prefetch multiple in parallel

createPrefetchHelpers

Creates multiple prefetch helpers from a record of queries.

function createPrefetchHelpers<T extends Record<string, QueryOptionsCreator<any, any, any>>>(
queries: T
): { [K in keyof T]: PrefetchHelper<...> }

prefetchAll

Prefetch multiple queries from different helpers in parallel.

function prefetchAll(
queryClient: QueryClient,
prefetches: Array<{ helper: PrefetchHelper<any, any, any>; params: unknown }>
): Promise<void>

Optimistic Update Helpers

createOptimisticUpdate

Creates type-safe optimistic update callbacks.

function createOptimisticUpdate<TData, TVariables, TQueryData>(
config: OptimisticUpdateConfig<TData, TVariables, TQueryData>
): OptimisticUpdateCallbacks<TData, TVariables, TQueryData>

Config Options:

OptionTypeDefaultDescription
queryKeyreadonly unknown[]RequiredQuery key to update
updateFn(oldData, variables) => newDataRequiredCompute new cache value
rollbackOnErrorbooleantrueRollback on error
invalidateOnSettledbooleantrueInvalidate after mutation

createMultiOptimisticUpdate

Creates optimistic update callbacks for multiple query keys.

function createMultiOptimisticUpdate<TData, TVariables>(
configs: Array<OptimisticUpdateConfig<TData, TVariables, unknown>>
): OptimisticUpdateCallbacks<TData, TVariables, Map<string, unknown>>

Types

QueryConfig

interface QueryConfig {
method: HttpMethod
url: string
responseSchema: ZodType
querySchema?: ZodType
requestSchema?: ZodType
errorSchema?: ErrorSchemaRecord
processResponse: (data: any) => any
}

MutationConfig

interface MutationConfig {
method: HttpMethod
url: string
requestSchema?: ZodType
responseSchema?: ZodType
querySchema?: ZodType
errorSchema?: ErrorSchemaRecord
processResponse?: (data: any) => any
useContext?: () => any
onMutate?: (variables: any, context: any) => any
onSuccess?: (data: any, variables: any, context: any) => void
onError?: (error: any, variables: any, context: any) => void
onSettled?: (data: any, error: any, variables: any, context: any) => void
useKey?: boolean
}

InfiniteQueryConfig

interface InfiniteQueryConfig extends QueryConfig {
getNextPageParam: (lastPage: any, allPages: any[]) => any
getPreviousPageParam?: (firstPage: any, allPages: any[]) => any
initialPageParam: any
}

ErrorSchemaRecord

type ErrorSchemaRecord = {
[statusCode: number]: ZodType
}

PrefetchHelper

interface PrefetchHelper<TParams, TData, TError = Error> {
prefetch: (queryClient: QueryClient, params: TParams) => Promise<void>
ensureData: (queryClient: QueryClient, params: TParams) => Promise<TData>
getQueryOptions: (params: TParams) => FetchQueryOptions<TData, TError, TData, QueryKey>
prefetchMany: (queryClient: QueryClient, paramsList: TParams[]) => Promise<void>
}

OptimisticUpdateConfig

interface OptimisticUpdateConfig<TData, TVariables, TQueryData> {
queryKey: readonly unknown[]
updateFn: (oldData: TQueryData | undefined, variables: TVariables) => TQueryData
rollbackOnError?: boolean
invalidateOnSettled?: boolean
}

ComputeBaseResult

Helper type that computes result based on discriminator mode and error schema.

type ComputeBaseResult<
UseDiscriminator extends boolean,
ResponseSchema extends ZodType,
ErrorSchema extends ErrorSchemaRecord | undefined,
> = UseDiscriminator extends true
? ErrorSchema extends ErrorSchemaRecord
? z.output<ResponseSchema> | InferErrorSchemaOutput<ErrorSchema>
: z.output<ResponseSchema>
: z.output<ResponseSchema>

See Also