From f5ad7d34e0a32f152907af1dbee3927dc573ec0e Mon Sep 17 00:00:00 2001 From: dev-rb Date: Thu, 11 Sep 2025 13:14:15 -0400 Subject: [PATCH 1/2] Move mutation sub into effect --- packages/solid-query/src/useIsMutating.ts | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/packages/solid-query/src/useIsMutating.ts b/packages/solid-query/src/useIsMutating.ts index 57ec870e45..1cc88f9b15 100644 --- a/packages/solid-query/src/useIsMutating.ts +++ b/packages/solid-query/src/useIsMutating.ts @@ -1,4 +1,4 @@ -import { createMemo, createSignal, onCleanup } from 'solid-js' +import { createEffect, createMemo, createSignal, onCleanup } from 'solid-js' import { useQueryClient } from './QueryClientProvider' import type { MutationFilters } from '@tanstack/query-core' import type { QueryClient } from './QueryClient' @@ -15,11 +15,13 @@ export function useIsMutating( client().isMutating(filters?.()), ) - const unsubscribe = mutationCache().subscribe((_result) => { - setMutations(client().isMutating(filters?.())) - }) + createEffect(() => { + const unsubscribe = mutationCache().subscribe((_result) => { + setMutations(client().isMutating(filters?.())) + }) - onCleanup(unsubscribe) + onCleanup(unsubscribe) + }) return mutations } From 5c4771199b533a3b0c7d6163ae986c188aabe23e Mon Sep 17 00:00:00 2001 From: dev-rb Date: Thu, 11 Sep 2025 13:14:26 -0400 Subject: [PATCH 2/2] Prevent infinite loop --- packages/solid-query/src/useMutationState.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/solid-query/src/useMutationState.ts b/packages/solid-query/src/useMutationState.ts index 2a405a1ae4..bc4c6946f5 100644 --- a/packages/solid-query/src/useMutationState.ts +++ b/packages/solid-query/src/useMutationState.ts @@ -1,4 +1,4 @@ -import { createEffect, createMemo, createSignal, onCleanup } from 'solid-js' +import { untrack, createEffect, createMemo, createSignal, onCleanup } from 'solid-js' import { replaceEqualDeep } from '@tanstack/query-core' import { useQueryClient } from './QueryClientProvider' import type { @@ -40,11 +40,12 @@ export function useMutationState( createEffect(() => { const unsubscribe = mutationCache().subscribe(() => { + const _result = untrack(result) const nextResult = replaceEqualDeep( - result(), + _result, getResult(mutationCache(), options()), ) - if (result() !== nextResult) { + if (_result !== nextResult) { setResult(nextResult) } })