Skip to content

Conversation

@kevin-dp
Copy link
Contributor

Fixes #1095

Add type tests reproducing issue #1095 where useLiveQuery with findOne()
returns `ComputedRef<Array<T>>` instead of `ComputedRef<T | undefined>`.

This differs from the React implementation which correctly types findOne()
queries to return a single object or undefined.

The tests currently fail, demonstrating the bug.
Update useLiveQuery types to use InferResultType<TContext> which correctly
handles the SingleResult type marker, returning `T | undefined` for findOne()
queries instead of always returning `Array<T>`.

Changes:
- Import InferResultType, SingleResult, NonSingleResult from @tanstack/db
- Update UseLiveQueryReturn interface to use InferResultType<TContext>
- Add UseLiveQueryReturnWithSingleResultCollection for singleResult collections
- Add separate overloads for pre-created collections (NonSingleResult vs SingleResult)
- Update runtime implementation to return first element for singleResult collections

This aligns Vue adapter behavior with the React adapter.

Fixes #1095
@changeset-bot
Copy link

changeset-bot bot commented Jan 14, 2026

🦋 Changeset detected

Latest commit: 30be4dd

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

This PR includes changesets to release 1 package
Name Type
@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 Jan 14, 2026

More templates

@tanstack/angular-db

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

@tanstack/db

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

@tanstack/db-ivm

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

@tanstack/electric-db-collection

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

@tanstack/offline-transactions

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

@tanstack/powersync-db-collection

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

@tanstack/query-db-collection

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

@tanstack/react-db

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

@tanstack/rxdb-db-collection

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

@tanstack/solid-db

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

@tanstack/svelte-db

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

@tanstack/trailbase-db-collection

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

@tanstack/vue-db

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

commit: 30be4dd

@github-actions
Copy link
Contributor

github-actions bot commented Jan 14, 2026

Size Change: 0 B

Total Size: 90.5 kB

ℹ️ View Unchanged
Filename Size
./packages/db/dist/esm/collection/change-events.js 1.39 kB
./packages/db/dist/esm/collection/changes.js 1.19 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.67 kB
./packages/db/dist/esm/collection/mutations.js 2.34 kB
./packages/db/dist/esm/collection/state.js 3.46 kB
./packages/db/dist/esm/collection/subscription.js 3.62 kB
./packages/db/dist/esm/collection/sync.js 2.38 kB
./packages/db/dist/esm/deferred.js 207 B
./packages/db/dist/esm/errors.js 4.49 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 1.93 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.75 kB
./packages/db/dist/esm/query/builder/functions.js 733 B
./packages/db/dist/esm/query/builder/index.js 4.08 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.87 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.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.4 kB
./packages/db/dist/esm/query/live/collection-registry.js 264 B
./packages/db/dist/esm/query/live/collection-subscriber.js 1.93 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 852 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 Jan 14, 2026

Size Change: 0 B

Total Size: 3.47 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.12 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

@kevin-dp kevin-dp changed the base branch from cursor/vue-findone-types-reproduction-4349 to main January 15, 2026 08:41
@kevin-dp kevin-dp requested a review from samwillis January 15, 2026 08:42
@kevin-dp kevin-dp moved this to Ready for review in TanStack DB 1.0.0 release Jan 15, 2026
@kevin-dp kevin-dp merged commit 5e69941 into main Jan 15, 2026
7 checks passed
@kevin-dp kevin-dp deleted the cursor/vue-findone-types-fix-4349 branch January 15, 2026 16:17
@github-actions github-actions bot mentioned this pull request Jan 15, 2026
@github-actions
Copy link
Contributor

🎉 This PR has been released!

Thank you for your contribution!

@KyleAMathews KyleAMathews moved this from Ready for review to Done in TanStack DB 1.0.0 release Jan 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Development

Successfully merging this pull request may close these issues.

[vue-db] useLiveQuery returns array type for data even when using findOne()

4 participants