diff --git a/src/react/tests/QueryResetErrorBoundary.test.tsx b/src/react/tests/QueryResetErrorBoundary.test.tsx
index 50cf97a914..1ee596669e 100644
--- a/src/react/tests/QueryResetErrorBoundary.test.tsx
+++ b/src/react/tests/QueryResetErrorBoundary.test.tsx
@@ -73,6 +73,137 @@ describe('QueryErrorResetBoundary', () => {
consoleMock.mockRestore()
})
+ it('should not throw error if query is disabled', async () => {
+ const key = queryKey()
+
+ let succeed = false
+ const consoleMock = mockConsoleError()
+
+ function Page() {
+ const { data, status } = useQuery(
+ key,
+ async () => {
+ await sleep(10)
+ if (!succeed) {
+ throw new Error('Error')
+ } else {
+ return 'data'
+ }
+ },
+ {
+ retry: false,
+ enabled: !succeed,
+ useErrorBoundary: true,
+ }
+ )
+ return (
+
+
status: {status}
+
{data}
+
+ )
+ }
+
+ const rendered = renderWithClient(
+ queryClient,
+
+ {({ reset }) => (
+ (
+
+
error boundary
+
+
+ )}
+ >
+
+
+ )}
+
+ )
+
+ await waitFor(() => rendered.getByText('error boundary'))
+ await waitFor(() => rendered.getByText('retry'))
+ succeed = true
+ fireEvent.click(rendered.getByText('retry'))
+ await waitFor(() => rendered.getByText('status: error'))
+
+ consoleMock.mockRestore()
+ })
+
+ it('should not throw error if query is disabled, and refetch if query becomes enabled again', async () => {
+ const key = queryKey()
+
+ let succeed = false
+ const consoleMock = mockConsoleError()
+
+ function Page() {
+ const [enabled, setEnabled] = React.useState(false)
+ const { data } = useQuery(
+ key,
+ async () => {
+ await sleep(10)
+ if (!succeed) {
+ throw new Error('Error')
+ } else {
+ return 'data'
+ }
+ },
+ {
+ retry: false,
+ enabled,
+ useErrorBoundary: true,
+ }
+ )
+
+ React.useEffect(() => {
+ setEnabled(true)
+ }, [])
+
+ return {data}
+ }
+
+ const rendered = renderWithClient(
+ queryClient,
+
+ {({ reset }) => (
+ (
+
+
error boundary
+
+
+ )}
+ >
+
+
+ )}
+
+ )
+
+ await waitFor(() => rendered.getByText('error boundary'))
+ await waitFor(() => rendered.getByText('retry'))
+ succeed = true
+ fireEvent.click(rendered.getByText('retry'))
+ await waitFor(() => rendered.getByText('data'))
+
+ consoleMock.mockRestore()
+ })
+
it('should not retry fetch if the reset error boundary has not been reset', async () => {
const key = queryKey()
diff --git a/src/react/useBaseQuery.ts b/src/react/useBaseQuery.ts
index 0736532baa..149d80320c 100644
--- a/src/react/useBaseQuery.ts
+++ b/src/react/useBaseQuery.ts
@@ -131,6 +131,7 @@ export function useBaseQuery<
// Handle error boundary
if (
result.isError &&
+ defaultedOptions.enabled !== false &&
!result.isFetching &&
shouldThrowError(
defaultedOptions.suspense,