From 3268587d6e0f6db990b2b1d9ee6500d3efb8500c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9E=AC=EC=9A=B1?= Date: Sun, 25 Jan 2026 16:05:37 +0900 Subject: [PATCH 01/15] test(react-query): add reproduction test for useQuery().promise retry issue (#9978) --- .../src/__tests__/useQuery.promise.test.tsx | 75 +++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/packages/react-query/src/__tests__/useQuery.promise.test.tsx b/packages/react-query/src/__tests__/useQuery.promise.test.tsx index 5e1d892df0..6dc54aa23a 100644 --- a/packages/react-query/src/__tests__/useQuery.promise.test.tsx +++ b/packages/react-query/src/__tests__/useQuery.promise.test.tsx @@ -1504,4 +1504,79 @@ describe('useQuery().promise', { timeout: 10_000 }, () => { expect(rendered.queryByText('error boundary')).toBeNull() }) + + it('should retry when QERB triggers reset, even if useQuery is outside', async () => { + const key = queryKey() + const renderStream = createRenderStream({ snapshotDOM: true }) + + let queryCount = 0 + function Child(props: { promise: Promise }) { + const data = React.use(props.promise) + return <>{data} + } + + function Page() { + const query = useQuery({ + queryKey: key, + queryFn: async () => { + await vi.advanceTimersByTimeAsync(1) + queryCount++ + if (queryCount === 1) { + throw new Error('Error test') + } + return 'data' + }, + retry: false, + }) + + return ( + + {({ reset }) => ( + ( +
+
error boundary
+ +
+ )} + > + loading..}> + + +
+ )} +
+ ) + } + + const rendered = await renderStream.render( + + + , + ) + + { + const { withinDOM } = await renderStream.takeRender() + expect(withinDOM().getByText('loading..')).toBeInTheDocument() + } + + { + const { withinDOM } = await renderStream.takeRender() + expect(withinDOM().getByText('error boundary')).toBeInTheDocument() + } + + rendered.getByText('retry').click() + + await waitFor(() => { + expect(rendered.getByText('loading..')).toBeInTheDocument() + }) + + await waitFor(() => { + expect(rendered.getByText('data')).toBeInTheDocument() + }) + + expect(queryCount).toBe(2) + }) }) From fb79e38d6fa80e218580c2d981801f6870b2afa2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9E=AC=EC=9A=B1?= Date: Mon, 26 Jan 2026 16:05:59 +0900 Subject: [PATCH 02/15] fix(query-core): recreate promise when fetchStatus changes to fetching --- packages/query-core/src/queryObserver.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/query-core/src/queryObserver.ts b/packages/query-core/src/queryObserver.ts index 463407a073..3eb08b1512 100644 --- a/packages/query-core/src/queryObserver.ts +++ b/packages/query-core/src/queryObserver.ts @@ -628,7 +628,11 @@ export class QueryObserver< } break case 'rejected': - if (!isErrorWithoutData || nextResult.error !== prevThenable.reason) { + if ( + !isErrorWithoutData || + nextResult.error !== prevThenable.reason || + nextResult.fetchStatus === 'fetching' + ) { recreateThenable() } break From 5ee860a5598ce6ad8d726d12dfde6df788b4bed7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9E=AC=EC=9A=B1?= Date: Tue, 27 Jan 2026 16:06:22 +0900 Subject: [PATCH 03/15] fix(react-query): trigger refetch of errored queries on reset --- packages/react-query/src/QueryErrorResetBoundary.tsx | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/packages/react-query/src/QueryErrorResetBoundary.tsx b/packages/react-query/src/QueryErrorResetBoundary.tsx index 910215bcb6..d0ae7e1fbe 100644 --- a/packages/react-query/src/QueryErrorResetBoundary.tsx +++ b/packages/react-query/src/QueryErrorResetBoundary.tsx @@ -1,6 +1,9 @@ 'use client' import * as React from 'react' +import { useQueryClient } from './QueryClientProvider' +import type { QueryClient } from '@tanstack/query-core' + // CONTEXT export type QueryErrorResetFunction = () => void export type QueryErrorIsResetFunction = () => boolean @@ -12,7 +15,7 @@ export interface QueryErrorResetBoundaryValue { reset: QueryErrorResetFunction } -function createValue(): QueryErrorResetBoundaryValue { +function createValue(client?: QueryClient): QueryErrorResetBoundaryValue { let isReset = false return { clearReset: () => { @@ -20,6 +23,9 @@ function createValue(): QueryErrorResetBoundaryValue { }, reset: () => { isReset = true + void client?.refetchQueries({ + predicate: (query) => query.state.status === 'error', + }) }, isReset: () => { return isReset @@ -47,7 +53,8 @@ export interface QueryErrorResetBoundaryProps { export const QueryErrorResetBoundary = ({ children, }: QueryErrorResetBoundaryProps) => { - const [value] = React.useState(() => createValue()) + const client = useQueryClient() + const [value] = React.useState(() => createValue(client)) return ( {typeof children === 'function' ? children(value) : children} From ffd9b1b63d4bcdd388e0811914f949c95361302e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9E=AC=EC=9A=B1?= Date: Wed, 28 Jan 2026 16:46:27 +0900 Subject: [PATCH 04/15] fix: Refine QueryErrorResetBoundary's reset logic to only refetch errored queries --- packages/react-query/src/QueryErrorResetBoundary.tsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/react-query/src/QueryErrorResetBoundary.tsx b/packages/react-query/src/QueryErrorResetBoundary.tsx index d0ae7e1fbe..985da287d5 100644 --- a/packages/react-query/src/QueryErrorResetBoundary.tsx +++ b/packages/react-query/src/QueryErrorResetBoundary.tsx @@ -24,7 +24,10 @@ function createValue(client?: QueryClient): QueryErrorResetBoundaryValue { reset: () => { isReset = true void client?.refetchQueries({ - predicate: (query) => query.state.status === 'error', + predicate: (query) => + query.state.status === 'error' && + query.getObserversCount() > 0 && + query.observers.some((observer) => observer.options.enabled !== false), }) }, isReset: () => { From ade1696e347266697610f3e68d833b70366dd5a2 Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Thu, 29 Jan 2026 08:28:23 +0000 Subject: [PATCH 05/15] ci: apply automated fixes --- packages/react-query/src/QueryErrorResetBoundary.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/react-query/src/QueryErrorResetBoundary.tsx b/packages/react-query/src/QueryErrorResetBoundary.tsx index 985da287d5..a7a1a12361 100644 --- a/packages/react-query/src/QueryErrorResetBoundary.tsx +++ b/packages/react-query/src/QueryErrorResetBoundary.tsx @@ -27,7 +27,9 @@ function createValue(client?: QueryClient): QueryErrorResetBoundaryValue { predicate: (query) => query.state.status === 'error' && query.getObserversCount() > 0 && - query.observers.some((observer) => observer.options.enabled !== false), + query.observers.some( + (observer) => observer.options.enabled !== false, + ), }) }, isReset: () => { From 2f9a7fe07b80408b858893c292e835b92376ef4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9E=AC=EC=9A=B1?= Date: Thu, 29 Jan 2026 18:06:59 +0900 Subject: [PATCH 06/15] feat: Export resolveEnabled and use it for observer enabled checks --- packages/query-core/src/index.ts | 1 + packages/react-query/src/QueryErrorResetBoundary.tsx | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/query-core/src/index.ts b/packages/query-core/src/index.ts index a7763cf648..b733f919a0 100644 --- a/packages/query-core/src/index.ts +++ b/packages/query-core/src/index.ts @@ -34,6 +34,7 @@ export { noop, partialMatchKey, replaceEqualDeep, + resolveEnabled, shouldThrowError, skipToken, } from './utils' diff --git a/packages/react-query/src/QueryErrorResetBoundary.tsx b/packages/react-query/src/QueryErrorResetBoundary.tsx index a7a1a12361..d017f4d1b6 100644 --- a/packages/react-query/src/QueryErrorResetBoundary.tsx +++ b/packages/react-query/src/QueryErrorResetBoundary.tsx @@ -1,6 +1,8 @@ 'use client' import * as React from 'react' +import { resolveEnabled } from '@tanstack/query-core' + import { useQueryClient } from './QueryClientProvider' import type { QueryClient } from '@tanstack/query-core' @@ -28,7 +30,7 @@ function createValue(client?: QueryClient): QueryErrorResetBoundaryValue { query.state.status === 'error' && query.getObserversCount() > 0 && query.observers.some( - (observer) => observer.options.enabled !== false, + (observer) => resolveEnabled(observer.options.enabled, query) !== false, ), }) }, From 00af302e7c5b59fab0300b97b07b9ff69f60fc26 Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Thu, 29 Jan 2026 09:08:18 +0000 Subject: [PATCH 07/15] ci: apply automated fixes --- packages/react-query/src/QueryErrorResetBoundary.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/react-query/src/QueryErrorResetBoundary.tsx b/packages/react-query/src/QueryErrorResetBoundary.tsx index d017f4d1b6..f49bda3f37 100644 --- a/packages/react-query/src/QueryErrorResetBoundary.tsx +++ b/packages/react-query/src/QueryErrorResetBoundary.tsx @@ -30,7 +30,8 @@ function createValue(client?: QueryClient): QueryErrorResetBoundaryValue { query.state.status === 'error' && query.getObserversCount() > 0 && query.observers.some( - (observer) => resolveEnabled(observer.options.enabled, query) !== false, + (observer) => + resolveEnabled(observer.options.enabled, query) !== false, ), }) }, From 15339fe956320bce32cf7c723decd02a9b045c72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9E=AC=EC=9A=B1?= Date: Sat, 31 Jan 2026 14:55:21 +0900 Subject: [PATCH 08/15] feat(query-core): attach queryHash to observer promises --- packages/query-core/src/queryObserver.ts | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/packages/query-core/src/queryObserver.ts b/packages/query-core/src/queryObserver.ts index 3eb08b1512..64c983a42c 100644 --- a/packages/query-core/src/queryObserver.ts +++ b/packages/query-core/src/queryObserver.ts @@ -584,7 +584,7 @@ export class QueryObserver< isRefetchError: isError && hasData, isStale: isStale(query, options), refetch: this.refetch, - promise: this.#currentThenable, + promise: tagThenable(this.#currentThenable, query.queryHash), isEnabled: resolveEnabled(options.enabled, query) !== false, } @@ -608,7 +608,7 @@ export class QueryObserver< const pending = (this.#currentThenable = nextResult.promise = - pendingThenable()) + tagThenable(pendingThenable(), query.queryHash)) finalizeThenableIfPossible(pending) } @@ -830,3 +830,22 @@ function shouldAssignObserverCurrentProperties< // basically, just keep previous properties if nothing changed return false } + +function tagThenable>( + thenable: TThenable, + queryHash: string, +): TThenable { + if (!Object.prototype.hasOwnProperty.call(thenable, 'queryHash')) { + Object.defineProperty(thenable, 'queryHash', { + value: queryHash, + enumerable: false, + configurable: true, + }) + } + return thenable +} + +/** + * @internal + */ +export type PromiseWithHash = Promise & { queryHash?: string } From 7c81f75d0e48a9873c94f0ef513e51a0104fc741 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9E=AC=EC=9A=B1?= Date: Sat, 31 Jan 2026 14:55:51 +0900 Subject: [PATCH 09/15] feat(query-core): attach queryHash to observer promises --- .../src/QueryErrorResetBoundary.tsx | 65 +++++++++++++++---- packages/react-query/src/index.ts | 2 + 2 files changed, 54 insertions(+), 13 deletions(-) diff --git a/packages/react-query/src/QueryErrorResetBoundary.tsx b/packages/react-query/src/QueryErrorResetBoundary.tsx index f49bda3f37..fd378642f0 100644 --- a/packages/react-query/src/QueryErrorResetBoundary.tsx +++ b/packages/react-query/src/QueryErrorResetBoundary.tsx @@ -1,10 +1,8 @@ 'use client' import * as React from 'react' -import { resolveEnabled } from '@tanstack/query-core' import { useQueryClient } from './QueryClientProvider' -import type { QueryClient } from '@tanstack/query-core' // CONTEXT export type QueryErrorResetFunction = () => void @@ -15,9 +13,10 @@ export interface QueryErrorResetBoundaryValue { clearReset: QueryErrorClearResetFunction isReset: QueryErrorIsResetFunction reset: QueryErrorResetFunction + register: (queryHash: string) => void } -function createValue(client?: QueryClient): QueryErrorResetBoundaryValue { +function createValue(): QueryErrorResetBoundaryValue { let isReset = false return { clearReset: () => { @@ -25,19 +24,11 @@ function createValue(client?: QueryClient): QueryErrorResetBoundaryValue { }, reset: () => { isReset = true - void client?.refetchQueries({ - predicate: (query) => - query.state.status === 'error' && - query.getObserversCount() > 0 && - query.observers.some( - (observer) => - resolveEnabled(observer.options.enabled, query) !== false, - ), - }) }, isReset: () => { return isReset }, + register: () => {}, } } @@ -62,10 +53,58 @@ export const QueryErrorResetBoundary = ({ children, }: QueryErrorResetBoundaryProps) => { const client = useQueryClient() - const [value] = React.useState(() => createValue(client)) + const registeredQueries = React.useRef(new Set()) + const [value] = React.useState(() => { + const boundary = createValue() + return { + ...boundary, + reset: () => { + boundary.reset() + const queryHashes = new Set(registeredQueries.current) + registeredQueries.current.clear() + + void client.refetchQueries({ + predicate: (query) => + queryHashes.has(query.queryHash) && query.state.status === 'error', + type: 'active', + }) + }, + register: (queryHash: string) => { + registeredQueries.current.add(queryHash) + }, + } + }) return ( {typeof children === 'function' ? children(value) : children} ) } + +/** + * @internal + */ +export function getQueryHash(query: any): string | undefined { + if (typeof query === 'object' && query !== null) { + if ('queryHash' in query) { + return query.queryHash + } + if ( + 'promise' in query && + query.promise && + typeof query.promise === 'object' && + 'queryHash' in query.promise + ) { + return query.promise.queryHash + } + } + return undefined +} + +export function useTrackQueryHash(query: any) { + const { register } = useQueryErrorResetBoundary() + const hash = getQueryHash(query) + if (hash) { + register(hash) + } +} diff --git a/packages/react-query/src/index.ts b/packages/react-query/src/index.ts index 36ea8da7af..a3a9121196 100644 --- a/packages/react-query/src/index.ts +++ b/packages/react-query/src/index.ts @@ -45,6 +45,8 @@ export type { QueryErrorResetFunction, } from './QueryErrorResetBoundary' export { + useTrackQueryHash, + getQueryHash, QueryErrorResetBoundary, useQueryErrorResetBoundary, } from './QueryErrorResetBoundary' From 7c2fd9eb5cdaa0da7a208a56cb9a0778a5fbcb3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9E=AC=EC=9A=B1?= Date: Sat, 31 Jan 2026 14:56:20 +0900 Subject: [PATCH 10/15] feat(react-query): register query hashes in QueryErrorResetBoundary --- packages/react-query/src/useBaseQuery.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packages/react-query/src/useBaseQuery.ts b/packages/react-query/src/useBaseQuery.ts index 2a151fe113..9d39cd2b67 100644 --- a/packages/react-query/src/useBaseQuery.ts +++ b/packages/react-query/src/useBaseQuery.ts @@ -83,6 +83,13 @@ export function useBaseQuery< ensurePreventErrorBoundaryRetry(defaultedOptions, errorResetBoundary, query) useClearResetErrorBoundary(errorResetBoundary) + if ( + defaultedOptions.experimental_prefetchInRender || + defaultedOptions.suspense + ) { + errorResetBoundary.register(defaultedOptions.queryHash) + } + // this needs to be invoked before creating the Observer because that can create a cache entry const isNewCacheEntry = !client .getQueryCache() From 84e20a726f454364227f567435928f1769be50fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9E=AC=EC=9A=B1?= Date: Sat, 31 Jan 2026 14:56:28 +0900 Subject: [PATCH 11/15] test(react-query): add core invariant tests for QueryErrorResetBoundary registry --- .../QueryResetErrorBoundary.test.tsx | 236 ++++++++++++++++++ 1 file changed, 236 insertions(+) diff --git a/packages/react-query/src/__tests__/QueryResetErrorBoundary.test.tsx b/packages/react-query/src/__tests__/QueryResetErrorBoundary.test.tsx index c02adeeece..53574cf8d7 100644 --- a/packages/react-query/src/__tests__/QueryResetErrorBoundary.test.tsx +++ b/packages/react-query/src/__tests__/QueryResetErrorBoundary.test.tsx @@ -11,6 +11,7 @@ import { useQuery, useSuspenseQueries, useSuspenseQuery, + useTrackQueryHash, } from '..' import { renderWithClient } from './utils' @@ -863,4 +864,239 @@ describe('QueryErrorResetBoundary', () => { consoleMock.mockRestore() }) }) + + describe('Scoped Registry', () => { + it('should isolate resets between different boundaries', async () => { + const consoleMock = vi + .spyOn(console, 'error') + .mockImplementation(() => undefined) + const key1 = queryKey() + const key2 = queryKey() + let count1 = 0 + let count2 = 0 + + function Comp1() { + useQuery({ + queryKey: key1, + queryFn: async () => { + await sleep(10) + count1++ + throw new Error('fail1') + }, + retry: false, + throwOnError: true, + }) + return null + } + + function Comp2() { + useQuery({ + queryKey: key2, + queryFn: async () => { + await sleep(10) + count2++ + throw new Error('fail2') + }, + retry: false, + throwOnError: true, + }) + return null + } + + const rendered = renderWithClient( + queryClient, + <> + + {({ reset }) => ( + ( +
+ +
+ )} + > + + + +
+ )} +
+ + {({ reset }) => ( + ( +
+ +
+ )} + > + + + +
+ )} +
+ , + ) + + await vi.advanceTimersByTimeAsync(11) + expect(rendered.getByText('reset1')).toBeInTheDocument() + expect(rendered.getByText('reset2')).toBeInTheDocument() + expect(count1).toBe(1) + expect(count2).toBe(1) + + fireEvent.click(rendered.getByText('reset1')) + + await vi.advanceTimersByTimeAsync(11) + expect(count1).toBe(2) + expect(count2).toBe(1) + + consoleMock.mockRestore() + }) + + it('should clear registry after reset', async () => { + const consoleMock = vi + .spyOn(console, 'error') + .mockImplementation(() => undefined) + const key = queryKey() + let count = 0 + + function Comp() { + useQuery({ + queryKey: key, + queryFn: async () => { + await sleep(10) + count++ + throw new Error('fail') + }, + retry: false, + throwOnError: true, + }) + return null + } + + const rendered = renderWithClient( + queryClient, + + {({ reset }) => ( + ( +
+ +
+ )} + > + + + +
+ )} +
, + ) + + await vi.advanceTimersByTimeAsync(11) + expect(rendered.getByText('reset')).toBeInTheDocument() + expect(count).toBe(1) + + fireEvent.click(rendered.getByText('reset')) + await vi.advanceTimersByTimeAsync(11) + expect(count).toBe(2) + + consoleMock.mockRestore() + }) + + it('should handle StrictMode double registration gracefully', async () => { + const key = queryKey() + let count = 0 + + function Comp() { + useQuery({ + queryKey: key, + queryFn: async () => { + await sleep(10) + count++ + return 'ok' + }, + }) + return null + } + + renderWithClient( + queryClient, + + + + + , + ) + + await vi.advanceTimersByTimeAsync(11) + expect(count).toBeGreaterThanOrEqual(1) + }) + + it('should support tracking queries outside the boundary via useTrackQueryHash', async () => { + const consoleMock = vi + .spyOn(console, 'error') + .mockImplementation(() => undefined) + const key = queryKey() + let count = 0 + + function Child() { + const { data } = useSuspenseQuery({ + queryKey: key, + queryFn: async () => { + await sleep(10) + count++ + if (count === 1) { + throw new Error('fail') + } + return 'ok' + }, + retry: false, + }) + return
{data}
+ } + + function TrackedChild() { + const hash = queryClient + .getQueryCache() + .build(queryClient, { queryKey: key }).queryHash + useTrackQueryHash(hash) + return null + } + + const rendered = renderWithClient( + queryClient, + + {({ reset }) => ( + ( + + )} + > + + + + + + )} + , + ) + + await act(() => vi.advanceTimersByTimeAsync(11)) + expect(rendered.getByText('retry')).toBeInTheDocument() + expect(count).toBe(1) + + fireEvent.click(rendered.getByText('retry')) + await act(() => vi.advanceTimersByTimeAsync(11)) + expect(count).toBe(2) + expect(rendered.getByText('ok')).toBeInTheDocument() + + consoleMock.mockRestore() + }) + }) }) From 171690dc77f322017d6591faf94cb7c871f9e9f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9E=AC=EC=9A=B1?= Date: Sat, 31 Jan 2026 14:56:34 +0900 Subject: [PATCH 12/15] test(react-query): merge and update scoped registry tests --- packages/react-query/src/__tests__/useQuery.promise.test.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/react-query/src/__tests__/useQuery.promise.test.tsx b/packages/react-query/src/__tests__/useQuery.promise.test.tsx index 6dc54aa23a..7989cbfe0a 100644 --- a/packages/react-query/src/__tests__/useQuery.promise.test.tsx +++ b/packages/react-query/src/__tests__/useQuery.promise.test.tsx @@ -14,6 +14,7 @@ import { keepPreviousData, useInfiniteQuery, useQuery, + useTrackQueryHash, } from '..' import { QueryCache } from '../index' @@ -1511,6 +1512,7 @@ describe('useQuery().promise', { timeout: 10_000 }, () => { let queryCount = 0 function Child(props: { promise: Promise }) { + useTrackQueryHash(props.promise) const data = React.use(props.promise) return <>{data} } From aec13b39e71c20cae114846a1dbce8920c43b6fe Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Sat, 31 Jan 2026 05:57:37 +0000 Subject: [PATCH 13/15] ci: apply automated fixes --- packages/react-query/src/QueryErrorResetBoundary.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/react-query/src/QueryErrorResetBoundary.tsx b/packages/react-query/src/QueryErrorResetBoundary.tsx index fd378642f0..60850407bb 100644 --- a/packages/react-query/src/QueryErrorResetBoundary.tsx +++ b/packages/react-query/src/QueryErrorResetBoundary.tsx @@ -1,7 +1,6 @@ 'use client' import * as React from 'react' - import { useQueryClient } from './QueryClientProvider' // CONTEXT From e1f424843f55ddcdbf76fff409d1f9f85c8d5a99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=86=A1=EC=9E=AC=EC=9A=B1?= Date: Sat, 31 Jan 2026 15:12:39 +0900 Subject: [PATCH 14/15] Update packages/react-query/src/__tests__/QueryResetErrorBoundary.test.tsx Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- .../react-query/src/__tests__/QueryResetErrorBoundary.test.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/react-query/src/__tests__/QueryResetErrorBoundary.test.tsx b/packages/react-query/src/__tests__/QueryResetErrorBoundary.test.tsx index 53574cf8d7..c4437c6da3 100644 --- a/packages/react-query/src/__tests__/QueryResetErrorBoundary.test.tsx +++ b/packages/react-query/src/__tests__/QueryResetErrorBoundary.test.tsx @@ -1064,9 +1064,10 @@ describe('QueryErrorResetBoundary', () => { const hash = queryClient .getQueryCache() .build(queryClient, { queryKey: key }).queryHash - useTrackQueryHash(hash) + useTrackQueryHash({ queryHash: hash }) return null } + } const rendered = renderWithClient( queryClient, From d4cd23a135ea788f4d389aa9ac602b61d4794e71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9E=AC=EC=9A=B1?= Date: Sat, 31 Jan 2026 15:22:54 +0900 Subject: [PATCH 15/15] chore: remove an extraneous brace --- .../react-query/src/__tests__/QueryResetErrorBoundary.test.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/react-query/src/__tests__/QueryResetErrorBoundary.test.tsx b/packages/react-query/src/__tests__/QueryResetErrorBoundary.test.tsx index c4437c6da3..2790390737 100644 --- a/packages/react-query/src/__tests__/QueryResetErrorBoundary.test.tsx +++ b/packages/react-query/src/__tests__/QueryResetErrorBoundary.test.tsx @@ -1067,7 +1067,6 @@ describe('QueryErrorResetBoundary', () => { useTrackQueryHash({ queryHash: hash }) return null } - } const rendered = renderWithClient( queryClient,