Skip to content

Conversation

@KyleAMathews
Copy link
Collaborator

Previously, the QueryCollectionConfig interface extended BaseCollectionConfig, but TypeScript failed to resolve inherited properties like getKey, onInsert, onUpdate, etc. when the interface contained a conditional type for the queryFn property. This caused type errors when trying to use queryCollectionOptions without a schema.

See this discussion https://discord.com/channels/719702312431386674/1438802082382483496/1438802082382483496

@changeset-bot
Copy link

changeset-bot bot commented Nov 19, 2025

🦋 Changeset detected

Latest commit: 0be0c9a

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

This PR includes changesets to release 2 packages
Name Type
@tanstack/query-db-collection Patch
@tanstack/db-collection-e2e 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 19, 2025

More templates

@tanstack/angular-db

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

@tanstack/db

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

@tanstack/db-ivm

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

@tanstack/electric-db-collection

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

@tanstack/offline-transactions

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

@tanstack/powersync-db-collection

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

@tanstack/query-db-collection

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

@tanstack/react-db

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

@tanstack/rxdb-db-collection

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

@tanstack/solid-db

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

@tanstack/svelte-db

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

@tanstack/trailbase-db-collection

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

@tanstack/vue-db

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

commit: 0be0c9a

…ectionConfig

Fixed TypeScript type resolution issue where QueryCollectionConfig failed to recognize
inherited properties (getKey, onInsert, onUpdate, etc.) when using queryCollectionOptions
without a schema.

The issue was caused by QueryCollectionConfig extending BaseCollectionConfig while also
having a conditional type for the queryFn property. TypeScript couldn't properly resolve
the inherited properties in this scenario.

Solution: Changed QueryCollectionConfig to use Omit<BaseCollectionConfig, ...> pattern,
consistent with ElectricCollectionConfig and PowerSyncCollectionConfig.

Changes:
- Refactored QueryCollectionConfig to use Omit pattern for consistency
- Explicitly declares mutation handlers with custom return type { refetch?: boolean }
- Removed unused imports (StringCollationConfig, SyncMode)
- Added test cases to verify no-schema usage works correctly
@KyleAMathews KyleAMathews force-pushed the claude/debug-collection-config-type-01NBgHjsUa6E2RxrovE67ixk branch from 52fe64e to 0be0c9a Compare November 19, 2025 18:50
@github-actions
Copy link
Contributor

github-actions bot commented Nov 19, 2025

Size Change: 0 B

Total Size: 85.8 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.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.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 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/strategies/debounceStrategy.js 237 B
./packages/db/dist/esm/strategies/queueStrategy.js 422 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

@github-actions
Copy link
Contributor

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

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.

3 participants