From b9c168a1e441ebefc54779d38f439df27be5ff8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20C=2E=20For=C3=A9s?= Date: Mon, 11 May 2026 00:05:43 +0200 Subject: [PATCH] fix: defer synchronous emit() calls to prevent React render-phase violations Both emit() calls for the 'refetching' event fired synchronously during React's render phase, triggering useEffectEvent errors. Wrapping in queueMicrotask() defers them to after render completes. --- src/query/query.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/query/query.ts b/src/query/query.ts index 349bf51..43a35e5 100644 --- a/src/query/query.ts +++ b/src/query/query.ts @@ -167,7 +167,7 @@ export function createQuery(instanceOptions?: Configuration): Query { // For the refetching event, we want to immediately return if there's // a pending resolver. if (event === 'refetching' && value !== undefined) { - emit(key, event, value.item) + queueMicrotask(() => emit(key, event, value.item)) } return function () { @@ -426,7 +426,7 @@ export function createQuery(instanceOptions?: Configuration): Query { // Adds the resolver to the cache. resolversCache.set(key, { item: result, controller }) - emit(key, 'refetching', result) + queueMicrotask(() => emit(key, 'refetching', result)) // The promise executor runs synchronously, // so trigger is guaranteed to be defined here.