From 68d4830dd7592aacfb5726fb18e35c6fab742021 Mon Sep 17 00:00:00 2001 From: Simon Binder Date: Wed, 1 Oct 2025 14:44:47 +0200 Subject: [PATCH] Allow using syncStream instances with hooks --- .changeset/ninety-bears-own.md | 5 +++++ packages/react/src/hooks/streams.ts | 2 +- packages/react/tests/streams.test.tsx | 9 +++++++++ 3 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 .changeset/ninety-bears-own.md diff --git a/.changeset/ninety-bears-own.md b/.changeset/ninety-bears-own.md new file mode 100644 index 000000000..960e2b172 --- /dev/null +++ b/.changeset/ninety-bears-own.md @@ -0,0 +1,5 @@ +--- +'@powersync/react': patch +--- + +Allow using `db.syncStream()` instances in `useQuery` hooks. diff --git a/packages/react/src/hooks/streams.ts b/packages/react/src/hooks/streams.ts index 8616cd76a..ddc747bba 100644 --- a/packages/react/src/hooks/streams.ts +++ b/packages/react/src/hooks/streams.ts @@ -24,7 +24,7 @@ export interface UseSyncStreamOptions extends SyncStreamSubscribeOptions { * Parameters for the stream subscription. A single stream can have multiple subscriptions with different parameter * sets. */ - parameters?: Record; + parameters?: Record | null; } /** diff --git a/packages/react/tests/streams.test.tsx b/packages/react/tests/streams.test.tsx index cd70871bb..8298f0c9b 100644 --- a/packages/react/tests/streams.test.tsx +++ b/packages/react/tests/streams.test.tsx @@ -52,6 +52,15 @@ describe('stream hooks', () => { expect(currentStreams()).toStrictEqual([]); }); + it('useQuery can take syncStream instance', async () => { + const { result } = renderHook(() => useQuery('SELECT 1', [], { streams: [db.syncStream('a')] }), { + wrapper: testWrapper + }); + + // Not resolving the subscription. + await waitFor(() => expect(result.current.data).toHaveLength(1), { timeout: 1000, interval: 100 }); + }); + it('useQuery waiting on stream', async () => { const { result } = renderHook( () => useQuery('SELECT 1', [], { streams: [{ name: 'a', waitForStream: true }] }),