Skip to content

[repro] Progressive mode avoids requestSnapshot in joins (issue #811)#1232

Closed
claude[bot] wants to merge 2 commits intomainfrom
ai/issue-811-repro
Closed

[repro] Progressive mode avoids requestSnapshot in joins (issue #811)#1232
claude[bot] wants to merge 2 commits intomainfrom
ai/issue-811-repro

Conversation

@claude
Copy link
Contributor

@claude claude bot commented Feb 11, 2026

Summary

This PR adds regression tests verifying that progressive mode collections properly avoid calling requestSnapshot() after initial sync completes. This addresses the scenario described in issue #811 where joins between progressive collections would throw "Snapshot requests are not supported in full mode".

What the tests verify

The tests confirm that the current code handles these scenarios correctly:

  1. Joins between two progressive collections after initial sync - When both collections have finished their initial sync, the join should work without calling requestSnapshot() on either collection.

  2. Joins when joined collection is still in buffering phase - When the lazy (joined) collection is still in the buffering phase, it should use fetchSnapshot() instead of requestSnapshot().

  3. Ordered queries on progressive collections - Simple ordered queries (like the useLiveSuspenseQuery example in issue comment) work correctly without calling requestSnapshot().

  4. Ordered queries with limit - Same behavior with limit clause.

Analysis

Based on investigation, the issue appears to have been already fixed by PR #852 (released in v0.2.4). That PR:

  • Changed progressive mode to use fetchSnapshot() during the buffering phase instead of requestSnapshot()
  • Added a guard at line 428-430 that returns early after initial sync completes, preventing any requestSnapshot() calls

All tests pass, confirming the current code handles these scenarios correctly.

How to run

pnpm --filter "@tanstack/electric-db-collection" exec vitest run tests/electric-progressive-join.test.ts --typecheck=false

Related

🤖 Generated with Claude Code

…ries (issue #811)

Add regression tests to verify that progressive mode collections properly
avoid calling requestSnapshot() after initial sync completes. This ensures
joins between progressive collections and ordered queries work correctly.

Tests verify:
- Joins between two progressive collections after initial sync
- Joins when joined collection is still in buffering phase
- Ordered queries on progressive collections
- Ordered queries with limit

Co-Authored-By: Claude Opus 4.6 <[email protected]>
@changeset-bot
Copy link

changeset-bot bot commented Feb 11, 2026

⚠️ No Changeset found

Latest commit: 23ec45e

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@pkg-pr-new
Copy link

pkg-pr-new bot commented Feb 11, 2026

More templates

@tanstack/angular-db

npm i https://pkg.pr.new/@tanstack/angular-db@1232

@tanstack/db

npm i https://pkg.pr.new/@tanstack/db@1232

@tanstack/db-ivm

npm i https://pkg.pr.new/@tanstack/db-ivm@1232

@tanstack/electric-db-collection

npm i https://pkg.pr.new/@tanstack/electric-db-collection@1232

@tanstack/offline-transactions

npm i https://pkg.pr.new/@tanstack/offline-transactions@1232

@tanstack/powersync-db-collection

npm i https://pkg.pr.new/@tanstack/powersync-db-collection@1232

@tanstack/query-db-collection

npm i https://pkg.pr.new/@tanstack/query-db-collection@1232

@tanstack/react-db

npm i https://pkg.pr.new/@tanstack/react-db@1232

@tanstack/rxdb-db-collection

npm i https://pkg.pr.new/@tanstack/rxdb-db-collection@1232

@tanstack/solid-db

npm i https://pkg.pr.new/@tanstack/solid-db@1232

@tanstack/svelte-db

npm i https://pkg.pr.new/@tanstack/svelte-db@1232

@tanstack/trailbase-db-collection

npm i https://pkg.pr.new/@tanstack/trailbase-db-collection@1232

@tanstack/vue-db

npm i https://pkg.pr.new/@tanstack/vue-db@1232

commit: 23ec45e

@github-actions
Copy link
Contributor

Size Change: 0 B

Total Size: 92 kB

ℹ️ View Unchanged
Filename Size
./packages/db/dist/esm/collection/change-events.js 1.39 kB
./packages/db/dist/esm/collection/changes.js 1.22 kB
./packages/db/dist/esm/collection/events.js 388 B
./packages/db/dist/esm/collection/index.js 3.32 kB
./packages/db/dist/esm/collection/indexes.js 1.1 kB
./packages/db/dist/esm/collection/lifecycle.js 1.75 kB
./packages/db/dist/esm/collection/mutations.js 2.34 kB
./packages/db/dist/esm/collection/state.js 3.49 kB
./packages/db/dist/esm/collection/subscription.js 3.71 kB
./packages/db/dist/esm/collection/sync.js 2.41 kB
./packages/db/dist/esm/deferred.js 207 B
./packages/db/dist/esm/errors.js 4.7 kB
./packages/db/dist/esm/event-emitter.js 748 B
./packages/db/dist/esm/index.js 2.69 kB
./packages/db/dist/esm/indexes/auto-index.js 742 B
./packages/db/dist/esm/indexes/base-index.js 766 B
./packages/db/dist/esm/indexes/btree-index.js 2.17 kB
./packages/db/dist/esm/indexes/lazy-index.js 1.1 kB
./packages/db/dist/esm/indexes/reverse-index.js 538 B
./packages/db/dist/esm/local-only.js 837 B
./packages/db/dist/esm/local-storage.js 2.1 kB
./packages/db/dist/esm/optimistic-action.js 359 B
./packages/db/dist/esm/paced-mutations.js 496 B
./packages/db/dist/esm/proxy.js 3.75 kB
./packages/db/dist/esm/query/builder/functions.js 733 B
./packages/db/dist/esm/query/builder/index.js 4.09 kB
./packages/db/dist/esm/query/builder/ref-proxy.js 1.05 kB
./packages/db/dist/esm/query/compiler/evaluators.js 1.42 kB
./packages/db/dist/esm/query/compiler/expressions.js 430 B
./packages/db/dist/esm/query/compiler/group-by.js 1.81 kB
./packages/db/dist/esm/query/compiler/index.js 2.02 kB
./packages/db/dist/esm/query/compiler/joins.js 2.07 kB
./packages/db/dist/esm/query/compiler/order-by.js 1.45 kB
./packages/db/dist/esm/query/compiler/select.js 1.06 kB
./packages/db/dist/esm/query/expression-helpers.js 1.43 kB
./packages/db/dist/esm/query/ir.js 673 B
./packages/db/dist/esm/query/live-query-collection.js 360 B
./packages/db/dist/esm/query/live/collection-config-builder.js 5.43 kB
./packages/db/dist/esm/query/live/collection-registry.js 264 B
./packages/db/dist/esm/query/live/collection-subscriber.js 2.42 kB
./packages/db/dist/esm/query/live/internal.js 145 B
./packages/db/dist/esm/query/optimizer.js 2.56 kB
./packages/db/dist/esm/query/predicate-utils.js 2.97 kB
./packages/db/dist/esm/query/subset-dedupe.js 921 B
./packages/db/dist/esm/scheduler.js 1.3 kB
./packages/db/dist/esm/SortedMap.js 1.3 kB
./packages/db/dist/esm/strategies/debounceStrategy.js 247 B
./packages/db/dist/esm/strategies/queueStrategy.js 428 B
./packages/db/dist/esm/strategies/throttleStrategy.js 246 B
./packages/db/dist/esm/transactions.js 2.9 kB
./packages/db/dist/esm/utils.js 924 B
./packages/db/dist/esm/utils/browser-polyfills.js 304 B
./packages/db/dist/esm/utils/btree.js 5.61 kB
./packages/db/dist/esm/utils/comparison.js 952 B
./packages/db/dist/esm/utils/cursor.js 457 B
./packages/db/dist/esm/utils/index-optimization.js 1.51 kB
./packages/db/dist/esm/utils/type-guards.js 157 B

compressed-size-action::db-package-size

@github-actions
Copy link
Contributor

Size Change: 0 B

Total Size: 3.7 kB

ℹ️ View Unchanged
Filename Size
./packages/react-db/dist/esm/index.js 225 B
./packages/react-db/dist/esm/useLiveInfiniteQuery.js 1.17 kB
./packages/react-db/dist/esm/useLiveQuery.js 1.34 kB
./packages/react-db/dist/esm/useLiveSuspenseQuery.js 559 B
./packages/react-db/dist/esm/usePacedMutations.js 401 B

compressed-size-action::react-db-package-size

@kevin-dp
Copy link
Contributor

Closing this as it was meant as a test to check if a certain issue was solved or not.

@kevin-dp kevin-dp closed this Feb 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant