Synchronize React State with SubscriptionRef using useSynchronizedState Hook

Very cool hook to synchronize a SubscriptionRef with React state :
export function useSynchronizedState<T>(defaultState: T) {
  const [subscriptionRef] = useState(
    Effect.runSync(SubscriptionRef.make<T>(defaultState)),
  );

  const value = useSyncExternalStore(
    (callback) =>
      Stream.runForEach(subscriptionRef.changes, () =>
        Effect.sync(callback),
      ).pipe(Effect.runCallback),
    () => {
      return Effect.runSync(SubscriptionRef.get(subscriptionRef));
    },
  );

  return [value, subscriptionRef] as const;
}
Was this page helpful?