From ed5628029d537399c5cdd8684591543615f40ccd Mon Sep 17 00:00:00 2001 From: Jeff Emmett Date: Sun, 16 Nov 2025 22:10:55 -0700 Subject: [PATCH] fix: use useMemo instead of useState for repo/adapter initialization MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixed TypeScript error by changing from useState to useMemo for repo and adapter initialization. This properly exposes the repo and adapter objects instead of returning a state setter function. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- src/automerge/useAutomergeSyncRepo.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/automerge/useAutomergeSyncRepo.ts b/src/automerge/useAutomergeSyncRepo.ts index 767ea45..fed926b 100644 --- a/src/automerge/useAutomergeSyncRepo.ts +++ b/src/automerge/useAutomergeSyncRepo.ts @@ -100,7 +100,7 @@ export function useAutomergeSync(config: AutomergeSyncConfig): TLStoreWithStatus return }, []) - const [repo, adapter] = useState(() => { + const { repo, adapter } = useMemo(() => { const adapter = new CloudflareNetworkAdapter(workerUrl, roomId, applyJsonSyncData) const repo = new Repo({ network: [adapter], @@ -113,8 +113,8 @@ export function useAutomergeSync(config: AutomergeSyncConfig): TLStoreWithStatus console.log('🔄 CloudflareAdapter received message from network:', msg.type) }) - return [repo, adapter] as const - }) + return { repo, adapter } + }, [workerUrl, roomId, applyJsonSyncData]) // Initialize Automerge document handle useEffect(() => { @@ -261,7 +261,7 @@ export function useAutomergeSync(config: AutomergeSyncConfig): TLStoreWithStatus return () => { mounted = false } - }, [repo, roomId, adapter, workerUrl]) + }, [repo, adapter, roomId, workerUrl]) // Track mouse state to prevent persistence during active mouse interactions useEffect(() => {