Skip to content

Conversation

KyleAMathews
Copy link
Collaborator

Add new mutations guide consolidating material & docs & examples.

Fixes #547

Copy link

changeset-bot bot commented Sep 30, 2025

⚠️ No Changeset found

Latest commit: 59ebb8b

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

@KyleAMathews KyleAMathews marked this pull request as draft September 30, 2025 23:21
Copy link

pkg-pr-new bot commented Sep 30, 2025

More templates

@tanstack/angular-db

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

@tanstack/db

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

@tanstack/db-ivm

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

@tanstack/electric-db-collection

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

@tanstack/query-db-collection

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

@tanstack/react-db

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

@tanstack/rxdb-db-collection

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

@tanstack/solid-db

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

@tanstack/svelte-db

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

@tanstack/trailbase-db-collection

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

@tanstack/vue-db

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

commit: 819bf47

Copy link
Contributor

github-actions bot commented Sep 30, 2025

Size Change: 0 B

Total Size: 74.1 kB

ℹ️ View Unchanged
Filename Size
./packages/db/dist/esm/collection/change-events.js 958 B
./packages/db/dist/esm/collection/changes.js 1.01 kB
./packages/db/dist/esm/collection/events.js 683 B
./packages/db/dist/esm/collection/index.js 3.14 kB
./packages/db/dist/esm/collection/indexes.js 1.16 kB
./packages/db/dist/esm/collection/lifecycle.js 1.8 kB
./packages/db/dist/esm/collection/mutations.js 2.59 kB
./packages/db/dist/esm/collection/state.js 3.81 kB
./packages/db/dist/esm/collection/subscription.js 1.69 kB
./packages/db/dist/esm/collection/sync.js 1.32 kB
./packages/db/dist/esm/deferred.js 230 B
./packages/db/dist/esm/errors.js 3.1 kB
./packages/db/dist/esm/index.js 1.56 kB
./packages/db/dist/esm/indexes/auto-index.js 745 B
./packages/db/dist/esm/indexes/base-index.js 605 B
./packages/db/dist/esm/indexes/btree-index.js 1.82 kB
./packages/db/dist/esm/indexes/lazy-index.js 1.25 kB
./packages/db/dist/esm/local-only.js 827 B
./packages/db/dist/esm/local-storage.js 2.02 kB
./packages/db/dist/esm/optimistic-action.js 294 B
./packages/db/dist/esm/proxy.js 3.87 kB
./packages/db/dist/esm/query/builder/functions.js 615 B
./packages/db/dist/esm/query/builder/index.js 3.93 kB
./packages/db/dist/esm/query/builder/ref-proxy.js 938 B
./packages/db/dist/esm/query/compiler/evaluators.js 1.56 kB
./packages/db/dist/esm/query/compiler/expressions.js 631 B
./packages/db/dist/esm/query/compiler/group-by.js 2.11 kB
./packages/db/dist/esm/query/compiler/index.js 2.04 kB
./packages/db/dist/esm/query/compiler/joins.js 2.54 kB
./packages/db/dist/esm/query/compiler/order-by.js 1.23 kB
./packages/db/dist/esm/query/compiler/select.js 1.28 kB
./packages/db/dist/esm/query/ir.js 785 B
./packages/db/dist/esm/query/live-query-collection.js 340 B
./packages/db/dist/esm/query/live/collection-config-builder.js 2.68 kB
./packages/db/dist/esm/query/live/collection-subscriber.js 1.91 kB
./packages/db/dist/esm/query/optimizer.js 3.1 kB
./packages/db/dist/esm/SortedMap.js 1.24 kB
./packages/db/dist/esm/transactions.js 3.03 kB
./packages/db/dist/esm/utils.js 943 B
./packages/db/dist/esm/utils/browser-polyfills.js 365 B
./packages/db/dist/esm/utils/btree.js 6.02 kB
./packages/db/dist/esm/utils/comparison.js 754 B
./packages/db/dist/esm/utils/index-optimization.js 1.62 kB

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

Copy link
Contributor

github-actions bot commented Sep 30, 2025

Size Change: 0 B

Total Size: 1.44 kB

ℹ️ View Unchanged
Filename Size
./packages/react-db/dist/esm/index.js 152 B
./packages/react-db/dist/esm/useLiveQuery.js 1.29 kB

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

KyleAMathews and others added 12 commits October 1, 2025 12:18
- Pull mutation off mutations array for cleaner code
- Add comment explaining collection handlers only receive one mutation at a time
- Apply pattern consistently across all handler examples

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Remove incorrect comment about single mutations
- Update handlers to use Promise.all for multiple mutations
- Fix collection.refetch() -> collection.utils.refetch()
- Update Electric collection pattern to return txids
- Add note about automatic refetch in collection handlers

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Parenthesize the offset to ensure negative IDs: -(Math.floor(...) + 1)
Previously could produce positive 1 when Math.random() returns 0
Use 'Immer-like pattern' instead of 'uses Immer under the hood'
- Correct handler params to { transaction, collection }
- Remove incorrect metadata parameter from signature
- Add metadata to mutation object properties list
- Fix return type to Promise<any> | any
Replace QueryCollection-specific note with general requirement that handlers
must wait for server changes to sync back before resolving
Collection handlers automatically handle refetch, only custom actions need it
- Make mutationFn required (not optional)
- Add missing id and metadata options
- Mark autoCommit as optional
Note that rollback is automatic on error, manual rollback only needed
for user actions like canceling a form
- Replace opening paragraph with bullet points
- Remove worked examples, keep truth table only
- Remove redundant benefits list
@KyleAMathews KyleAMathews marked this pull request as ready for review October 1, 2025 20:43
Copy link
Contributor

@thruflo thruflo left a comment

Choose a reason for hiding this comment

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

Awesome. One thought: will this automatically be added to the Guides section of the left-hand-side nav, or does that need to be configured?


```tsx
// Intent: "like this post"
const likePost = createOptimisticAction<string>({
Copy link
Contributor

Choose a reason for hiding this comment

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

Is it worth showing how to use this, i.e.:

likePost(postId)

@KyleAMathews KyleAMathews merged commit e837256 into main Oct 3, 2025
5 checks passed
@KyleAMathews KyleAMathews deleted the mutation-doc branch October 3, 2025 01:19
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.

Mutations guide (similar/sibling to live queries guide)
2 participants