Skip to content

docs: Add guide for multiple pending transactions#1215

Open
KyleAMathews wants to merge 2 commits intomainfrom
claude/optimistic-updates-sync-HqZcc
Open

docs: Add guide for multiple pending transactions#1215
KyleAMathews wants to merge 2 commits intomainfrom
claude/optimistic-updates-sync-HqZcc

Conversation

@KyleAMathews
Copy link
Collaborator

🎯 Changes

Added documentation explaining how multiple pending transactions work in the mutations guide. This section clarifies the layering behavior when users make rapid sequential mutations to the same item before earlier ones have synced back from the server.

The new section includes:

  • An explanation of how transactions are layered with the most recent taking priority
  • A concrete code example showing rapid updates (A → B → C)
  • A detailed walkthrough of how the optimistic state is recomputed as each transaction syncs back
  • Context on why this behavior provides a good user experience for rapid sequential updates

✅ Checklist

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

🚀 Release Impact

  • This change is docs/CI/dev-only (no release).

https://claude.ai/code/session_01HruHi63EH2HhdQy86tWteX

Adds a subsection to Mutation Lifecycle explaining how multiple
optimistic updates to the same item are layered, with the most
recent transaction taking priority for display state.

https://claude.ai/code/session_01HruHi63EH2HhdQy86tWteX
Clarifies that:
- Optimistic layering operates at the item level, not individual fields
- The draft in update() reflects all pending optimistic changes from
  all transactions, enabling mutations to build on each other

https://claude.ai/code/session_01HruHi63EH2HhdQy86tWteX
@changeset-bot
Copy link

changeset-bot bot commented Feb 4, 2026

⚠️ No Changeset found

Latest commit: 1bd5cc1

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 4, 2026

More templates

@tanstack/angular-db

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

@tanstack/db

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

@tanstack/db-ivm

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

@tanstack/electric-db-collection

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

@tanstack/offline-transactions

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

@tanstack/powersync-db-collection

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

@tanstack/query-db-collection

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

@tanstack/react-db

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

@tanstack/rxdb-db-collection

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

@tanstack/solid-db

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

@tanstack/svelte-db

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

@tanstack/trailbase-db-collection

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

@tanstack/vue-db

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

commit: 1bd5cc1

@github-actions
Copy link
Contributor

github-actions bot commented Feb 4, 2026

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

github-actions bot commented Feb 4, 2026

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Ready for review

Development

Successfully merging this pull request may close these issues.

2 participants