Skip to content

Conversation

@KyleAMathews
Copy link
Collaborator

Replace @tanstack/pacer with @tanstack/pacer-lite for paced mutations implementation. The lite version provides the same core functionality with minimal overhead and no external dependencies, making it more suitable for library use.

Changes:

  • Update package.json to use @tanstack/pacer-lite ^0.1.0
  • Replace Debouncer with LiteDebouncer in debounceStrategy
  • Replace Throttler with LiteThrottler in throttleStrategy
  • Replace AsyncQueuer with LiteQueuer in queueStrategy
  • Implement manual promise chaining in queueStrategy to maintain async serialization behavior

All tests pass and the build completes successfully.

🎯 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).

Replace @tanstack/pacer with @tanstack/pacer-lite for paced mutations
implementation. The lite version provides the same core functionality with
minimal overhead and no external dependencies, making it more suitable for
library use.

Changes:
- Update package.json to use @tanstack/pacer-lite ^0.1.0
- Replace Debouncer with LiteDebouncer in debounceStrategy
- Replace Throttler with LiteThrottler in throttleStrategy
- Replace AsyncQueuer with LiteQueuer in queueStrategy
- Implement manual promise chaining in queueStrategy to maintain
  async serialization behavior

All tests pass and the build completes successfully.
@changeset-bot
Copy link

changeset-bot bot commented Nov 21, 2025

🦋 Changeset detected

Latest commit: 2a86676

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

This PR includes changesets to release 11 packages
Name Type
@tanstack/db Patch
@tanstack/angular-db Patch
@tanstack/db-collection-e2e Patch
@tanstack/electric-db-collection Patch
@tanstack/powersync-db-collection Patch
@tanstack/react-db Patch
@tanstack/rxdb-db-collection Patch
@tanstack/solid-db Patch
@tanstack/svelte-db Patch
@tanstack/trailbase-db-collection Patch
@tanstack/vue-db 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 21, 2025

More templates

@tanstack/angular-db

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

@tanstack/db

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

@tanstack/db-ivm

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

@tanstack/electric-db-collection

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

@tanstack/offline-transactions

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

@tanstack/powersync-db-collection

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

@tanstack/query-db-collection

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

@tanstack/react-db

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

@tanstack/rxdb-db-collection

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

@tanstack/solid-db

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

@tanstack/svelte-db

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

@tanstack/trailbase-db-collection

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

@tanstack/vue-db

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

commit: 91f0251

@github-actions
Copy link
Contributor

github-actions bot commented Nov 21, 2025

Size Change: +26 B (+0.03%)

Total Size: 86.2 kB

Filename Size Change
./packages/db/dist/esm/strategies/debounceStrategy.js 247 B +10 B (+4.22%)
./packages/db/dist/esm/strategies/queueStrategy.js 428 B +6 B (+1.42%)
./packages/db/dist/esm/strategies/throttleStrategy.js 246 B +10 B (+4.24%)
ℹ️ 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.29 kB
./packages/db/dist/esm/deferred.js 207 B
./packages/db/dist/esm/errors.js 4.19 kB
./packages/db/dist/esm/event-emitter.js 748 B
./packages/db/dist/esm/index.js 2.64 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.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.22 kB
./packages/db/dist/esm/query/builder/functions.js 733 B
./packages/db/dist/esm/query/builder/index.js 3.96 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 430 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.74 kB
./packages/db/dist/esm/query/live/internal.js 130 B
./packages/db/dist/esm/query/optimizer.js 2.56 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/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

The dependency is only needed in @tanstack/db package.
@github-actions
Copy link
Contributor

github-actions bot commented Nov 21, 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

Add comprehensive unit tests for createPacedMutations and all three
strategies (debounce, throttle, queue) that test the core functionality
directly without React dependencies.

Tests cover:
- Debounce strategy with timer reset and leading edge execution
- Throttle strategy with leading/trailing edge behavior
- Queue strategy with sequential processing and serialization
- Error handling for failed transactions
- Transaction batching and merging behavior

These tests verify the pacer-lite migration maintains correct behavior.
Use type assertions to handle vitest mock.calls type inference issues.
Remove redundant strategy behavior tests from React package since those
are now comprehensively tested in the core package.

Kept:
- Simple smoke tests for each strategy (verify React hook wrapper works)
- All memoization tests (React-specific behavior)

Removed:
- Detailed debounce timer reset tests (now in core)
- Detailed throttle leading/trailing tests (now in core)
- Queue serialization tests (now in core)
- Transaction batching tests (now in core)

Reduced test file from 472 to 249 lines with better separation of concerns.
- Add explanatory comments for manual promise chaining in queueStrategy
  explaining why LiteQueuer lacks async queue primitives and how we
  compensate with manual serialization
- Enhance error handling documentation clarifying that errors are
  surfaced via transaction.isPersisted and don't break the chain
- Add test coverage for queue with zero/no wait option
- Extract createReadyCollection helper to reduce test duplication
@KyleAMathews KyleAMathews merged commit 2c2e4db into main Nov 21, 2025
5 of 6 checks passed
@KyleAMathews KyleAMathews deleted the claude/paced-mutations-01Jm8KbaZGKyRxTXj8NkbkcN branch November 21, 2025 16:39
@github-actions github-actions bot mentioned this pull request Nov 21, 2025
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