Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
b2f7d88
docs(preact-query): wrap 'useIsFetching' example in a component
sukvvon Aug 26, 2026
ce37641
docs(preact-query): wrap 'useQueries' examples in components and add …
sukvvon Aug 26, 2026
52e8c76
docs(preact-query): wrap 'useIsMutating' and 'useMutationState' examp…
sukvvon Aug 26, 2026
0685b2e
docs(preact-query): wrap 'queryOptions' examples in components
sukvvon Aug 26, 2026
28ca24c
docs(preact-query): wrap 'infiniteQueryOptions' example in a component
sukvvon Aug 26, 2026
e553284
fix(preact-query): correctly distinguish error state from loading in …
sukvvon Aug 26, 2026
700ce6f
fix(preact-query): correct mutation terminology and filter by success…
sukvvon Aug 26, 2026
0c086bc
docs(preact-query): destructure useInfiniteQuery result in 'infiniteQ…
sukvvon Aug 26, 2026
4ad73e0
docs(preact-query): rename 'variables' to 'pendingVariables' in 'useM…
sukvvon Aug 26, 2026
5d70bbe
docs(preact-query): rename 'data' to 'savedPosts' in 'useMutationStat…
sukvvon Aug 26, 2026
d64829f
docs(preact-query): rename 'results'/'result' to 'addResults'/'addRes…
sukvvon Aug 26, 2026
64b10ce
docs(preact-query): rename 'latest' to 'latestSavedPost' in 'useMutat…
sukvvon Aug 26, 2026
ec6828a
docs(preact-query): render fetched pages and handle loading/error sta…
sukvvon Aug 26, 2026
1741933
Merge branch 'main' into docs/preact-query-examples-componentize
sukvvon Aug 28, 2026
1c84080
docs(preact-query): render infinite query lists as '<ul>'/'<li>' inst…
sukvvon Aug 29, 2026
7bc2b99
docs(preact-query): show hover-triggered prefetch instead of an unloc…
sukvvon Aug 29, 2026
0516c2e
docs(preact-query): move hover-prefetch examples from 'queryOptions'/…
sukvvon Aug 29, 2026
50f7436
docs(preact-query): render list examples as '<ul>'/'<li>' and fix und…
sukvvon Aug 29, 2026
cef13e7
docs(preact-query): name the prefetch id in 'queryOptions'/'infiniteQ…
sukvvon Aug 29, 2026
5e1eb15
docs(preact-query): add 'skipToken' examples for type-safe conditiona…
sukvvon Aug 29, 2026
286c851
docs(preact-query): use 'isLoading' with optional chaining in the inf…
sukvvon Aug 29, 2026
2bae845
docs(preact-query): add missing 'isPending'/'isError' handling across…
sukvvon Aug 29, 2026
f0cf0c1
docs(preact-query): keep 'initialData' examples showing data alongsid…
sukvvon Aug 29, 2026
3676ed7
docs(preact-query): use scroll-triggered pagination in 'useInfiniteQu…
sukvvon Aug 30, 2026
9509231
docs(preact-query): guard scroll-triggered 'fetchNextPage' with 'isFe…
sukvvon Aug 30, 2026
0c2834e
docs(preact-query): move duplicated usage examples from 'queryOptions…
sukvvon Aug 30, 2026
323487c
docs(preact-query): remove duplicated basic-mutation example from 'mu…
sukvvon Aug 30, 2026
53a0114
docs(preact-query): add 'combine' example to 'useSuspenseQueries', li…
sukvvon Aug 30, 2026
a20ed3e
docs(preact-query): drop irrelevant 'useSuspenseQueries' reference fr…
sukvvon Aug 30, 2026
66d28b7
docs(preact-query): strengthen 'useMutation''s '@see' pointer to 'mut…
sukvvon Aug 30, 2026
efa26bf
docs(preact-query): add blank lines around 'isPending'/'isError' guar…
sukvvon Aug 30, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
87 changes: 50 additions & 37 deletions docs/framework/preact/reference/functions/infiniteQueryOptions.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ title: infiniteQueryOptions
function infiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam>(options): UseInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam> & object & QueryKeyWithDataTag<TQueryKey, InfiniteData<TQueryFnData, unknown>, TError>;
```

Defined in: [preact-query/src/infiniteQueryOptions.ts:157](https://github.com/TanStack/query/blob/main/packages/preact-query/src/infiniteQueryOptions.ts#L157)
Defined in: [preact-query/src/infiniteQueryOptions.ts:169](https://github.com/TanStack/query/blob/main/packages/preact-query/src/infiniteQueryOptions.ts#L169)

You can generally pass everything to `infiniteQueryOptions` that you can also pass to `useInfiniteQuery`.
These options can be shared across hooks and imperative APIs such as `queryClient.infiniteQuery`.
Expand Down Expand Up @@ -55,6 +55,11 @@ The same options object, typed so that `queryKey` carries the inferred data type

[useInfiniteQuery](useInfiniteQuery.md) to run an infinite query with these options.

### Remarks

See [useInfiniteQuery](useInfiniteQuery.md) for examples that fetch further pages, from a button click or
automatically as the user scrolls.

### Example

```tsx
Expand All @@ -69,8 +74,18 @@ export const projectsOptions = infiniteQueryOptions({
})

function Projects() {
const { data } = useInfiniteQuery(projectsOptions)
return <>{data.pages.map((page) => page.projects.map((p) => <p key={p.id}>{p.name}</p>))}</>
// `data` is never `undefined`, thanks to `initialData` — even if a refetch fails, so the
// list stays visible alongside the error.
const { data, isError, error } = useInfiniteQuery(projectsOptions)

return (
<div>
{isError ? <span>Error: {error.message}</span> : null}
<ul>
{data.pages.map((page) => page.projects.map((p) => <li key={p.id}>{p.name}</li>))}
</ul>
</div>
)
}
```

Expand All @@ -80,7 +95,7 @@ function Projects() {
function infiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam>(options): OmitKeyof<UseInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam>, "queryFn"> & object & QueryKeyWithDataTag<TQueryKey, InfiniteData<TQueryFnData, unknown>, TError>;
```

Defined in: [preact-query/src/infiniteQueryOptions.ts:233](https://github.com/TanStack/query/blob/main/packages/preact-query/src/infiniteQueryOptions.ts#L233)
Defined in: [preact-query/src/infiniteQueryOptions.ts:240](https://github.com/TanStack/query/blob/main/packages/preact-query/src/infiniteQueryOptions.ts#L240)

You can generally pass everything to `infiniteQueryOptions` that you can also pass to `useInfiniteQuery`.
These options can be shared across hooks and imperative APIs such as `queryClient.infiniteQuery`.
Expand Down Expand Up @@ -120,18 +135,12 @@ The [UnusedSkipTokenInfiniteOptions](../type-aliases/UnusedSkipTokenInfiniteOpti

The same options object, typed so that `queryKey` carries the inferred data type.

### Examples
### Remarks

```tsx
import { infiniteQueryOptions } from '@tanstack/preact-query'
See [useInfiniteQuery](useInfiniteQuery.md) for examples that fetch further pages, from a button click or
automatically as the user scrolls.

export const projectsOptions = infiniteQueryOptions({
queryKey: ['projects'],
queryFn: ({ pageParam }) => fetchProjects(pageParam),
initialPageParam: 0,
getNextPageParam: (lastPage) => lastPage.nextId,
})
```
### Example

A parameterized factory, reused across a hook and an imperative call with the same cache entry:
```tsx
Expand All @@ -150,16 +159,21 @@ export const commentsOptions = (postId: string) =>
})

function Comments({ postId }: { postId: string }) {
const result = useInfiniteQuery(commentsOptions(postId))
if (!result.isSuccess) return 'Loading...'
const { data, isPending, isError, error } = useInfiniteQuery(commentsOptions(postId))

if (isPending) return 'Loading...'
if (isError) return <span>Error: {error.message}</span>

return (
<>
{result.data.pages.map((page) => page.comments.map((c) => <p key={c.id}>{c.text}</p>))}
</>
<ul>
{data.pages.map((page) => page.comments.map((c) => <li key={c.id}>{c.text}</li>))}
</ul>
)
}

// Elsewhere, e.g. to warm the cache before rendering `<Comments>`:
// `commentsOptions` also works with imperative APIs like `queryClient.infiniteQuery` —
// see `useInfiniteQuery` for an example that warms the cache this way before rendering `<Comments>`.
const postId = '1'
queryClient.infiniteQuery(commentsOptions(postId)).catch(noop)
```

Expand All @@ -173,7 +187,7 @@ queryClient.infiniteQuery(commentsOptions(postId)).catch(noop)
function infiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam>(options): UseInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam> & object & QueryKeyWithDataTag<TQueryKey, InfiniteData<TQueryFnData, unknown>, TError>;
```

Defined in: [preact-query/src/infiniteQueryOptions.ts:309](https://github.com/TanStack/query/blob/main/packages/preact-query/src/infiniteQueryOptions.ts#L309)
Defined in: [preact-query/src/infiniteQueryOptions.ts:311](https://github.com/TanStack/query/blob/main/packages/preact-query/src/infiniteQueryOptions.ts#L311)

You can generally pass everything to `infiniteQueryOptions` that you can also pass to `useInfiniteQuery`.
These options can be shared across hooks and imperative APIs such as `queryClient.infiniteQuery`.
Expand Down Expand Up @@ -213,18 +227,12 @@ The [UndefinedInitialDataInfiniteOptions](../type-aliases/UndefinedInitialDataIn

The same options object, typed so that `queryKey` carries the inferred data type.

### Examples
### Remarks

```tsx
import { infiniteQueryOptions } from '@tanstack/preact-query'
See [useInfiniteQuery](useInfiniteQuery.md) for examples that fetch further pages (from a button click or
automatically as the user scrolls) and that use `skipToken` to disable the query until `postId` is set.

export const projectsOptions = infiniteQueryOptions({
queryKey: ['projects'],
queryFn: ({ pageParam }) => fetchProjects(pageParam),
initialPageParam: 0,
getNextPageParam: (lastPage) => lastPage.nextId,
})
```
### Example

A parameterized factory, reused across a hook and an imperative call with the same cache entry:
```tsx
Expand All @@ -243,16 +251,21 @@ export const commentsOptions = (postId: string) =>
})

function Comments({ postId }: { postId: string }) {
const result = useInfiniteQuery(commentsOptions(postId))
if (!result.isSuccess) return 'Loading...'
const { data, isPending, isError, error } = useInfiniteQuery(commentsOptions(postId))

if (isPending) return 'Loading...'
if (isError) return <span>Error: {error.message}</span>

return (
<>
{result.data.pages.map((page) => page.comments.map((c) => <p key={c.id}>{c.text}</p>))}
</>
<ul>
{data.pages.map((page) => page.comments.map((c) => <li key={c.id}>{c.text}</li>))}
</ul>
)
}

// Elsewhere, e.g. to warm the cache before rendering `<Comments>`:
// `commentsOptions` also works with imperative APIs like `queryClient.infiniteQuery` —
// see `useInfiniteQuery` for an example that warms the cache this way before rendering `<Comments>`.
const postId = '1'
queryClient.infiniteQuery(commentsOptions(postId)).catch(noop)
```

Expand Down
25 changes: 8 additions & 17 deletions docs/framework/preact/reference/functions/mutationOptions.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ title: mutationOptions
function mutationOptions<TData, TError, TVariables, TOnMutateResult>(options): WithRequired<UseMutationOptions<TData, TError, TVariables, TOnMutateResult>, "mutationKey">;
```

Defined in: [preact-query/src/mutationOptions.ts:49](https://github.com/TanStack/query/blob/main/packages/preact-query/src/mutationOptions.ts#L49)
Defined in: [preact-query/src/mutationOptions.ts:34](https://github.com/TanStack/query/blob/main/packages/preact-query/src/mutationOptions.ts#L34)

You can generally pass everything to `mutationOptions` that you can also pass to `useMutation`. A
`mutationKey` is required on this overload so the mutation can be looked up later, e.g. with
Expand Down Expand Up @@ -52,21 +52,7 @@ The same options object, unchanged.

[useMutation](useMutation.md) to run the mutation these options describe.

### Examples

```tsx
import { mutationOptions, useMutation } from '@tanstack/preact-query'

export const createPostOptions = mutationOptions({
mutationKey: ['posts', 'create'],
mutationFn: createPost,
})

function CreatePost() {
const mutation = useMutation(createPostOptions)
return <button onClick={() => mutation.mutate({ title: 'Hello' })}>Create</button>
}
```
### Example

Looking the mutation up elsewhere via its `mutationKey`, e.g. for a global "saving…" indicator:
```tsx
Expand All @@ -92,7 +78,7 @@ function SavingIndicator() {
function mutationOptions<TData, TError, TVariables, TOnMutateResult>(options): Omit<UseMutationOptions<TData, TError, TVariables, TOnMutateResult>, "mutationKey">;
```

Defined in: [preact-query/src/mutationOptions.ts:87](https://github.com/TanStack/query/blob/main/packages/preact-query/src/mutationOptions.ts#L87)
Defined in: [preact-query/src/mutationOptions.ts:74](https://github.com/TanStack/query/blob/main/packages/preact-query/src/mutationOptions.ts#L74)

You can generally pass everything to `mutationOptions` that you can also pass to `useMutation`. No
`mutationKey` is required on this overload — use this when you don't need to look the mutation up later
Expand Down Expand Up @@ -135,6 +121,11 @@ The same options object, unchanged.

[useMutation](useMutation.md) to run the mutation these options describe.

### Remarks

Without a `mutationKey`, the mutation can't be looked up elsewhere via `useMutationState` — see
the other overload's example for that.

### Example

```tsx
Expand Down
Loading
Loading