diff --git a/packages/router-ssr-query-core/src/index.ts b/packages/router-ssr-query-core/src/index.ts index a692c8c28f1..781200698d8 100644 --- a/packages/router-ssr-query-core/src/index.ts +++ b/packages/router-ssr-query-core/src/index.ts @@ -5,6 +5,8 @@ import { import { isRedirect } from '@tanstack/router-core' import type { AnyRouter } from '@tanstack/router-core' import type { + DehydrateOptions, + HydrateOptions, QueryClient, DehydratedState as QueryDehydratedState, } from '@tanstack/query-core' @@ -20,6 +22,8 @@ export type RouterSsrQueryOptions = { * @link [Guide](https://tanstack.com/router/latest/docs/framework/react/api/router/redirectFunction) */ handleRedirects?: boolean + hydrateOptions?: Omit + dehydrateOptions?: DehydrateOptions } type DehydratedRouterQueryState = { @@ -31,6 +35,8 @@ export function setupCoreRouterSsrQueryIntegration({ router, queryClient, handleRedirects = true, + dehydrateOptions, + hydrateOptions, }: RouterSsrQueryOptions) { const ogHydrate = router.options.hydrate const ogDehydrate = router.options.dehydrate @@ -50,7 +56,10 @@ export function setupCoreRouterSsrQueryIntegration({ queryStream: queryStream.stream, } - const dehydratedQueryClient = queryDehydrate(queryClient) + const dehydratedQueryClient = queryDehydrate( + queryClient, + dehydrateOptions, + ) if (dehydratedQueryClient.queries.length > 0) { dehydratedQueryClient.queries.forEach((query) => { sentQueries.add(query.queryHash) @@ -93,6 +102,7 @@ export function setupCoreRouterSsrQueryIntegration({ sentQueries.add(event.query.queryHash) queryStream.enqueue( queryDehydrate(queryClient, { + ...dehydrateOptions, shouldDehydrateQuery: (query) => { if (query.queryHash === event.query.queryHash) { return ( @@ -110,7 +120,11 @@ export function setupCoreRouterSsrQueryIntegration({ await ogHydrate?.(dehydrated) // hydrate the query client with the dehydrated data (if it was dehydrated on the server) if (dehydrated.dehydratedQueryClient) { - queryHydrate(queryClient, dehydrated.dehydratedQueryClient) + queryHydrate( + queryClient, + dehydrated.dehydratedQueryClient, + hydrateOptions, + ) } // read the query stream and hydrate the queries as they come in @@ -118,7 +132,7 @@ export function setupCoreRouterSsrQueryIntegration({ reader .read() .then(async function handle({ done, value }) { - queryHydrate(queryClient, value) + queryHydrate(queryClient, value, hydrateOptions) if (done) { return }