diff --git a/packages/effect-fc/src/Component.ts b/packages/effect-fc/src/Component.ts
index c216237..9f0e1e5 100644
--- a/packages/effect-fc/src/Component.ts
+++ b/packages/effect-fc/src/Component.ts
@@ -415,7 +415,21 @@ export const useOnMount: {
} = Effect.fnUntraced(function* (
f: () => Effect.Effect
) {
- const runtime = yield* Effect.runtime()
+ const runtime = yield* Effect.runtime()
// biome-ignore lint/correctness/useExhaustiveDependencies: only computed on mount
return yield* React.useMemo(() => Runtime.runSync(runtime)(Effect.cached(f())), [])
})
+
+export const useOnChange: {
+ (
+ f: () => Effect.Effect,
+ deps: React.DependencyList,
+ ): Effect.Effect
+} = Effect.fnUntraced(function* (
+ f: () => Effect.Effect,
+ deps: React.DependencyList,
+) {
+ const runtime = yield* Effect.runtime()
+ // biome-ignore lint/correctness/useExhaustiveDependencies: "f" is non-reactive
+ return yield* React.useMemo(() => Runtime.runSync(runtime)(Effect.cached(f())), deps)
+})