From c03d6973619eeba5abab683311356e2757783061 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Thu, 23 Oct 2025 16:20:30 +0200 Subject: [PATCH] Fix --- packages/effect-fc/src/Subscribable.ts | 4 ++-- packages/effect-fc/src/SubscriptionRef.ts | 20 ++++++++++++-------- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/packages/effect-fc/src/Subscribable.ts b/packages/effect-fc/src/Subscribable.ts index e1d2d7f..707b0fd 100644 --- a/packages/effect-fc/src/Subscribable.ts +++ b/packages/effect-fc/src/Subscribable.ts @@ -33,13 +33,13 @@ export const useSubscribables: { yield* Component.useOnMount(() => Effect.all(elements.map(v => v.get))) ) - yield* Component.useOnChange(() => Effect.forkScoped(pipe( + yield* Component.useReactEffect(() => Effect.forkScoped(pipe( elements.map(ref => Stream.changesWith(ref.changes, Equivalence.strict())), streams => Stream.zipLatestAll(...streams), Stream.runForEach(v => Effect.sync(() => setReactStateValue(v)) ), - )), elements) + )), elements, { finalizerExecutionMode: "fork" }) return reactStateValue as any }) diff --git a/packages/effect-fc/src/SubscriptionRef.ts b/packages/effect-fc/src/SubscriptionRef.ts index 7fb7604..6a28b02 100644 --- a/packages/effect-fc/src/SubscriptionRef.ts +++ b/packages/effect-fc/src/SubscriptionRef.ts @@ -11,10 +11,12 @@ export const useSubscriptionRefState: { } = Effect.fnUntraced(function* (ref: SubscriptionRef.SubscriptionRef) { const [reactStateValue, setReactStateValue] = React.useState(yield* Component.useOnMount(() => ref)) - yield* Component.useOnChange(() => Effect.forkScoped(Stream.runForEach( - Stream.changesWith(ref.changes, Equivalence.strict()), - v => Effect.sync(() => setReactStateValue(v)), - )), [ref]) + yield* Component.useReactEffect(() => Effect.forkScoped( + Stream.runForEach( + Stream.changesWith(ref.changes, Equivalence.strict()), + v => Effect.sync(() => setReactStateValue(v)), + ) + ), [ref], { finalizerExecutionMode: "fork" }) const setValue = yield* Component.useCallbackSync((setStateAction: React.SetStateAction) => Effect.andThen( @@ -31,10 +33,12 @@ export const useSubscriptionRefFromState: { } = Effect.fnUntraced(function*([value, setValue]) { const ref = yield* Component.useOnMount(() => SubscriptionRef.make(value)) - yield* Component.useOnChange(() => Effect.forkScoped(Stream.runForEach( - Stream.changesWith(ref.changes, Equivalence.strict()), - v => Effect.sync(() => setValue(v)), - )), [setValue]) + yield* Component.useReactEffect(() => Effect.forkScoped( + Stream.runForEach( + Stream.changesWith(ref.changes, Equivalence.strict()), + v => Effect.sync(() => setValue(v)), + ) + ), [setValue], { finalizerExecutionMode: "fork" }) yield* Component.useReactEffect(() => Ref.set(ref, value), [value]) return ref