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 }] }),