11'use client'
22
3- import type { DehydratedState , QueryClient } from '@tanstack/react-query'
4- import { dehydrate , hydrate , useQueryClient } from '@tanstack/react-query'
3+ import type {
4+ DehydratedState ,
5+ DehydrateOptions ,
6+ HydrateOptions ,
7+ QueryClient ,
8+ } from '@tanstack/react-query'
9+ import {
10+ defaultShouldDehydrateQuery ,
11+ dehydrate ,
12+ hydrate ,
13+ useQueryClient ,
14+ } from '@tanstack/react-query'
515import * as React from 'react'
616import type { HydrationStreamProviderProps } from './HydrationStreamProvider'
717import { createHydrationStreamProvider } from './HydrationStreamProvider'
@@ -16,6 +26,10 @@ const stream = createHydrationStreamProvider<DehydratedState>()
1626export function ReactQueryStreamedHydration ( props : {
1727 children : React . ReactNode
1828 queryClient ?: QueryClient
29+ options ?: {
30+ hydrate ?: HydrateOptions
31+ dehydrate ?: DehydrateOptions
32+ }
1933 transformer ?: HydrationStreamProviderProps < DehydratedState > [ 'transformer' ]
2034} ) {
2135 const queryClient = useQueryClient ( props . queryClient )
@@ -46,12 +60,14 @@ export function ReactQueryStreamedHydration(props: {
4660 /**
4761 * Dehydrated state of the client where we only include the queries that were added/updated since the last flush
4862 */
63+ const shouldDehydrate =
64+ props . options ?. dehydrate ?. shouldDehydrateQuery ??
65+ defaultShouldDehydrateQuery
66+
4967 const dehydratedState = dehydrate ( queryClient , {
68+ ...props . options ?. dehydrate ,
5069 shouldDehydrateQuery ( query ) {
51- return (
52- trackedKeys . has ( query . queryHash ) &&
53- query . state . status !== 'pending'
54- )
70+ return trackedKeys . has ( query . queryHash ) && shouldDehydrate ( query )
5571 } ,
5672 } )
5773 trackedKeys . clear ( )
@@ -65,7 +81,7 @@ export function ReactQueryStreamedHydration(props: {
6581 // Happens in browser:
6682 onEntries = { ( entries ) => {
6783 for ( const hydratedState of entries ) {
68- hydrate ( queryClient , hydratedState )
84+ hydrate ( queryClient , hydratedState , props . options ?. hydrate )
6985 }
7086 } }
7187 // Handle BigInts etc using superjson
0 commit comments