Skip to content

Conversation

@KyleAMathews
Copy link
Collaborator

This change allows users to specify a custom timeout when returning txids from mutation handlers (onInsert, onUpdate, onDelete).

Previously, users could only customize timeouts when manually calling collection.utils.awaitTxId(), but not when using the automatic txid matching strategy via electricCollectionOptions.

Changes:

  • Updated MatchingStrategy type to include optional timeout property
  • Modified processMatchingStrategy to extract and pass timeout to awaitTxId
  • Added documentation example showing how to use custom timeout
  • Updated JSDoc comments for mutation handlers

This addresses the feature request in GitHub discussion #794.

Default timeout remains 5000ms when not specified.

🎯 Changes

✅ Checklist

  • I have followed the steps in the Contributing guide.
  • I have tested this code locally with pnpm test:pr.

🚀 Release Impact

  • This change affects published code, and I have generated a changeset.
  • This change is docs/CI/dev-only (no release).

This change allows users to specify a custom timeout when returning
txids from mutation handlers (onInsert, onUpdate, onDelete).

Previously, users could only customize timeouts when manually calling
collection.utils.awaitTxId(), but not when using the automatic txid
matching strategy via electricCollectionOptions.

Changes:
- Updated MatchingStrategy type to include optional timeout property
- Modified processMatchingStrategy to extract and pass timeout to awaitTxId
- Added documentation example showing how to use custom timeout
- Updated JSDoc comments for mutation handlers

This addresses the feature request in GitHub discussion #794.

Default timeout remains 5000ms when not specified.
@changeset-bot
Copy link

changeset-bot bot commented Nov 11, 2025

🦋 Changeset detected

Latest commit: fa9c3f3

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 3 packages
Name Type
@tanstack/electric-db-collection Minor
@tanstack/db-collection-e2e Patch
@tanstack/db-example-solid-todo Patch

Not sure what this means? Click here to learn what changesets are.

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

@pkg-pr-new
Copy link

pkg-pr-new bot commented Nov 11, 2025

More templates

@tanstack/angular-db

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

@tanstack/db

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

@tanstack/db-ivm

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

@tanstack/electric-db-collection

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

@tanstack/offline-transactions

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

@tanstack/powersync-db-collection

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

@tanstack/query-db-collection

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

@tanstack/react-db

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

@tanstack/rxdb-db-collection

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

@tanstack/solid-db

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

@tanstack/svelte-db

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

@tanstack/trailbase-db-collection

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

@tanstack/vue-db

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

commit: fa9c3f3

@github-actions
Copy link
Contributor

github-actions bot commented Nov 11, 2025

Size Change: 0 B

Total Size: 86 kB

ℹ️ View Unchanged
Filename Size
./packages/db/dist/esm/collection/change-events.js 1.38 kB
./packages/db/dist/esm/collection/changes.js 977 B
./packages/db/dist/esm/collection/events.js 388 B
./packages/db/dist/esm/collection/index.js 3.24 kB
./packages/db/dist/esm/collection/indexes.js 1.1 kB
./packages/db/dist/esm/collection/lifecycle.js 1.67 kB
./packages/db/dist/esm/collection/mutations.js 2.26 kB
./packages/db/dist/esm/collection/state.js 3.43 kB
./packages/db/dist/esm/collection/subscription.js 2.42 kB
./packages/db/dist/esm/collection/sync.js 2.12 kB
./packages/db/dist/esm/deferred.js 207 B
./packages/db/dist/esm/errors.js 4.11 kB
./packages/db/dist/esm/event-emitter.js 748 B
./packages/db/dist/esm/index.js 2.63 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 1.87 kB
./packages/db/dist/esm/indexes/lazy-index.js 1.1 kB
./packages/db/dist/esm/indexes/reverse-index.js 513 B
./packages/db/dist/esm/local-only.js 837 B
./packages/db/dist/esm/local-storage.js 2.04 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.22 kB
./packages/db/dist/esm/query/builder/functions.js 733 B
./packages/db/dist/esm/query/builder/index.js 3.84 kB
./packages/db/dist/esm/query/builder/ref-proxy.js 917 B
./packages/db/dist/esm/query/compiler/evaluators.js 1.35 kB
./packages/db/dist/esm/query/compiler/expressions.js 691 B
./packages/db/dist/esm/query/compiler/group-by.js 1.8 kB
./packages/db/dist/esm/query/compiler/index.js 1.96 kB
./packages/db/dist/esm/query/compiler/joins.js 2 kB
./packages/db/dist/esm/query/compiler/order-by.js 1.25 kB
./packages/db/dist/esm/query/compiler/select.js 1.07 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.26 kB
./packages/db/dist/esm/query/live/collection-registry.js 264 B
./packages/db/dist/esm/query/live/collection-subscriber.js 1.77 kB
./packages/db/dist/esm/query/live/internal.js 130 B
./packages/db/dist/esm/query/optimizer.js 2.6 kB
./packages/db/dist/esm/query/predicate-utils.js 2.88 kB
./packages/db/dist/esm/query/subset-dedupe.js 921 B
./packages/db/dist/esm/scheduler.js 1.21 kB
./packages/db/dist/esm/SortedMap.js 1.18 kB
./packages/db/dist/esm/strategies/debounceStrategy.js 237 B
./packages/db/dist/esm/strategies/queueStrategy.js 418 B
./packages/db/dist/esm/strategies/throttleStrategy.js 236 B
./packages/db/dist/esm/transactions.js 2.9 kB
./packages/db/dist/esm/utils.js 881 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 852 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

- Add new test to verify custom timeout in matching strategy
- Test ensures timeout is properly passed to awaitTxId and triggers timeout error
- Add changeset documenting the new timeout feature as a minor release

All 60 tests passing including the new timeout test.
@github-actions
Copy link
Contributor

github-actions bot commented Nov 11, 2025

Size Change: 0 B

Total Size: 3.34 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.11 kB
./packages/react-db/dist/esm/useLiveSuspenseQuery.js 431 B
./packages/react-db/dist/esm/usePacedMutations.js 401 B

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

@KyleAMathews KyleAMathews force-pushed the claude/add-timeout-support-electric-db-011CV2N7ZepWGCMTxVTcWR3R branch from b1dc988 to 893acda Compare November 11, 2025 16:19
@KyleAMathews
Copy link
Collaborator Author

docs generation is being odd removing the links @kevin-dp any idea why that would happen? It just popped up in all the PRs today.

Copy link
Collaborator

@samwillis samwillis left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Resolved conflicts:
- packages/electric-db-collection/src/electric.ts: Combined timeout support with arrow function fix for array txids
- packages/electric-db-collection/tests/electric.test.ts: Added both custom timeout test and array txid test

The merge includes PR #795 which fixes array txid handling and is fully
compatible with our timeout support feature. Our implementation passes
the timeout parameter correctly to awaitTxId for both single and array
cases.
@KyleAMathews KyleAMathews merged commit 1afb027 into main Nov 12, 2025
6 of 8 checks passed
@KyleAMathews KyleAMathews deleted the claude/add-timeout-support-electric-db-011CV2N7ZepWGCMTxVTcWR3R branch November 12, 2025 01:27
@github-actions github-actions bot mentioned this pull request Nov 12, 2025
@github-actions
Copy link
Contributor

🎉 This PR has been released!

Thank you for your contribution!

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.

4 participants