# createSuspenseInfiniteQueryFactory

> **createSuspenseInfiniteQueryFactory**\<`Service`, `Transform`, `Method`, `TPageParam`, `Selected`\>(`reactor`, `config`): `SuspenseInfiniteQueryFactoryFn`\<`Service`, `Method`, `Transform`, `TPageParam`, `Selected`\>

Defined in: [react/src/createSuspenseInfiniteQuery.ts:531](https://github.com/B3Pay/ic-reactor/blob/70bedf3c8779611a3b35710510442dee7f630b87/packages/react/src/createSuspenseInfiniteQuery.ts#L531)

Create a suspense infinite query factory that accepts getArgs at call time.
Useful when pagination logic varies by context.

## Type Parameters

### Service

`Service`

The actor interface type

### Transform

`Transform` *extends* keyof [`TransformArgsRegistry`](https://ic-reactor.b3pay.net/v3/libs/interfaces/transformargsregistry/)\<`unknown`\>

The transformation key (identity, display, etc.)

### Method

`Method` *extends* `string` = [`FunctionName`](https://ic-reactor.b3pay.net/v3/libs/type-aliases/functionname/)\<`Service`\>

The method name on the actor

### TPageParam

`TPageParam` = `unknown`

The page parameter type

### Selected

`Selected` = `InfiniteData`\<[`ReactorQueryData`](https://ic-reactor.b3pay.net/v3/libs/type-aliases/reactorquerydata/)\<[`ReactorReturnOk`](https://ic-reactor.b3pay.net/v3/libs/type-aliases/reactorreturnok/)\<`Service`, `Method`, `Transform`\>\>, `TPageParam`\>

The type returned after select transformation

## Parameters

### reactor

[`Reactor`](https://ic-reactor.b3pay.net/v3/libs/classes/reactor/)\<`Service`, `Transform`\>

The Reactor instance

### config

[`SuspenseInfiniteQueryFactoryConfig`](https://ic-reactor.b3pay.net/v3/libs/type-aliases/suspenseinfinitequeryfactoryconfig/)\<[`NoInfer`](https://ic-reactor.b3pay.net/v3/libs/type-aliases/noinfer/)\<`Service`\>, `Method`, `Transform`, `TPageParam`, `Selected`\>

Suspense infinite query configuration (without getArgs)

## Returns

`SuspenseInfiniteQueryFactoryFn`\<`Service`, `Method`, `Transform`, `TPageParam`, `Selected`\>

A function that accepts getArgs and returns an SuspenseActorInfiniteQueryResult

## Example

```ts
const getPostsQuery = createActorSuspenseInfiniteQueryFactory(reactor, {
  functionName: "get_posts",
  initialPageParam: 0,
  getKeyArgs: (args) => {
    const [{ userId }] = args
    return [{ userId }]
  },
  getNextPageParam: (lastPage) => lastPage.nextCursor,
})

// Create query with specific args builder
const userPostsQuery = getPostsQuery((cursor) => [{ userId, cursor, limit: 10 }])
const { data, fetchNextPage } = userPostsQuery.useSuspenseInfiniteQuery()

// Optional: append a manual query-key suffix in addition to auto key args
const scopedPostsQuery = getPostsQuery(
  (cursor) => [{ userId, cursor, limit: 10 }],
  { queryKey: ["v2"] }
)
```