Last surveyed through: pending
This is a signal inventory, not design analysis. It gathers and organizes open-source project signals so maintainers can dispatch follow-up investigation work. Clusters are probable descriptive groupings, not conclusions. Historical related items are bounded context only, not claims that current behavior is broken. Use this memo by pointing a follow-up human or agent at one cluster or standalone item for focused investigation.
Inferred from repository documentation and maintainer-correctable.
TanStack DB presents itself as “the reactive client store for your API” and, in the launch blog, as “a client-side database layer powered by differential dataflow that plugs straight into your existing useQuery calls.” It is aimed at fast modern applications that want to avoid view-specific endpoint sprawl and network waterfalls by loading data into normalized client collections, querying them locally, and applying instant optimistic writes. It extends TanStack Query with collections, live queries, optimistic mutations, and a “missing reactive, relational layer on top,” while supporting REST APIs, GraphQL/tRPC-style APIs, sync engines, local-only data, and persisted/offline stores.
- Collections as the loading/storage boundary: typed object sets decouple data loading/syncing from component binding and can be backed by APIs, sync engines, local storage, in-memory state, or derived live-query collections.
- Live queries as the read model: a SQL-like, type-safe fluent query API provides reactive results over collections, including filtering, sorting, joins, subqueries, projections, aggregations, and derived collections. Docs promise incremental updates via differential dataflow, usually sub-millisecond even for complex queries.
- Optimistic mutations as the write model: collection writes apply local optimistic state immediately, then run persistence handlers and roll back on error or are superseded by confirmed synced state. The documented model is optimistic mutation → backend persistence → sync back → confirmed state.
- Query-driven sync/loading: query collections integrate with TanStack Query and can push query predicates/sort/pagination into
queryFnmetadata for on-demand loading, with duplicate request collapsing, delta loading, join optimization, and TanStack Query cache-policy respect described in docs. The 0.5 blog frames this as “the component’s query is the API call” and states that a collection defines schema/security boundaries while live queries define which subset loads now. - Persistence and local-first-capable runtime model: the 0.6 blog says persistence was the “missing piece” for durable local-first flows, with SQLite-backed adapters across browser, React Native/Expo, Node, Electron, Tauri, Capacitor, and Cloudflare Durable Objects. It also explicitly says local-first is one configuration; server-authoritative apps with fast optimistic updates are another.
- Hierarchical UI projection over normalized data: the 0.6 blog introduces
includesas a way to project normalized data into UI-shaped hierarchies “similar to GraphQL, but without the need for new infrastructure,” while preserving fine-grained incremental updates through child collections by default. - Reactive effects / workflow layer: the 0.6 blog positions
createEffectas a database-trigger-like layer over arbitrary live query results, useful for reactive workflows and agent-style automation without materializing full query results. - Framework and source adapters: core
@tanstack/dbis wrapped/re-exported by framework packages for React, Solid, Svelte, Vue, and Angular, with collection packages for Query, Electric, TrailBase, PowerSync, RxDB, and SQLite persistence variants across browser, node, electron, expo/react-native, tauri, capacitor, and Cloudflare Durable Objects. - TypeScript-first API surface: docs emphasize type-safe query results, schema validation, typed mutation handlers, typed query meta, generated API reference pages, and more accurate nullable join typing in the query-builder API.
- Issue template asks reporters to validate bugs against the latest DB package version.
- Feature requests and questions are routed to GitHub Discussions rather than blank issues.
- PR template asks contributors to run
pnpm testlocally and add a changeset when published code changes. - Repository scripts define package-wide
build,lint,test, docs link verification, dependency consistency viasherif, and generated docs. - CI runs build/test, package preview publishing, compressed-size checks for DB and React DB, example builds, E2E tests for several collection/persistence adapters, and GitHub Actions security analysis.
- Release workflow uses Changesets and regenerates API docs after publish.
- Collections require stable item keys (
getKeyor stream/composite keys) for identity and mutation/query correctness. - Live query outputs include virtual properties such as
$synced,$origin,$key, and$collectionId; these are query-visible but should not be persisted back to storage. - Optimistic state is separate from synced data and is resolved by handler success, rollback on handler failure, and eventual synced server state.
- On-demand Query Collection metadata uses
loadSubsetOptions; query key functions must preserve a base-prefix convention. - Query builders compose into an optimized incremental pipeline rather than executing in chain-call order.
- Components are intended to query through a common DB interface rather than depend directly on the loading strategy; the launch blog says TanStack Query owns “how do I fetch?” while TanStack DB owns coherence and speed once data is local.
- For synced persisted collections, persistence does not change the source of truth: the server remains authoritative, with persistence providing a durable local base for startup, offline work, and reconciliation.
schemaVersionseparates persisted-mode behavior: synced collections clear local persisted copies and re-sync on version changes; unsynced local-only collections require explicit migration handling.includespreserve fine-grained reactivity by materializing included fields as child collections by default; usingtoArray()intentionally re-emits the parent row when child data changes.- Mutation handlers use an explicit model in 0.6: when the handler promise resolves, optimistic state is removed; sync coordination should be explicit rather than relying on implicit return behavior.
- The repo favors a local normalized data model and local query engine over view-specific backend APIs, trading added client-side collection/query machinery for simpler backends and fewer waterfalls.
- Sync modes expose a documented loading tradeoff: eager mode for small/static data, on-demand mode for large/search/catalog datasets, and progressive mode for instant subset paint plus eventual full local querying.
- The package architecture favors broad adapter/framework coverage, which increases integration surface and CI/E2E complexity while supporting multiple app/runtime environments.
- The blog framing explicitly positions TanStack DB as an “Option C” between view-specific APIs and load-everything-and-filter: accepting client-side database/query machinery to reduce endpoint proliferation and avoid slow broad client filtering.
- Query-driven sync trades magical backend inference for a per-collection predicate-mapping boundary: APIs can start broad and push down more filters over time without changing component queries.
- SQLite-backed persistence favors a consistent cross-runtime persistence/query model over minimizing browser initial payload size or maintaining divergent IndexedDB-specific behavior.
- Indexing is opt-in in 0.6, trading smaller bundles/no indexing machinery by default against possible local scans until users choose auto or manual indexes.
- SSR remains explicitly unsettled on the path to v1; the 0.6 blog says the SSR story differs from TanStack Query and involves different tradeoffs around hydration, persistence, and live updates.
Last surveyed through: 2026-06-24T00:22:02Z for GitHub open-item enumeration.
- GitHub open issues for
TanStack/db: 137 items enumerated into 6 deterministic batches. - GitHub open PRs for
TanStack/db: 152 items enumerated into 7 deterministic batches. - Repository docs/source and TanStack DB blog posts were used for Phase 1 repo framing only.
- Discord/community chat bulk export: unavailable in this run; no maintainer-approved bot/export credentials or scoped channel export were provided.
- Closed issues and merged/closed PRs: intentionally not collected in Phase 2; reserved for bounded Phase 4 historical enrichment after open-item clusters exist.
- Reddit/general web/social discovery: not collected in this Phase 2 pass; GitHub open items are the coverage anchor.
- Sharding manifest:
/tmp/TanStack-db-open-items/manifest.json possiblyCapped:falsefor issues and PRs.- Issue coverage: 137 enumerated, 137 assigned, 137 ledger rows, 137 attribute records, 137 unique item numbers.
- PR coverage: 152 enumerated, 152 assigned, 152 ledger rows, 152 attribute records, 152 unique item numbers.
- Batch output directories:
- Issues:
/tmp/TanStack-db-open-items/analysis/issues/ - PRs:
/tmp/TanStack-db-open-items/analysis/prs/
- Issues:
Each batch wrote:
batch-NNN-ledger.md— one coverage ledger row per assigned item.batch-NNN-attributes.jsonl— one normalized attribute object per assigned item using the worker reference schema.batch-NNN-snippets.md— representative snippets where useful.
The attribute JSONL schema records mechanical metadata, reactions/comment counts, signal-strength flags, repo area/package/API/workflow/runtime fields, reported condition, desired outcome, observed friction, artifact type, form touched, context demand, related issue/PR links, possible cluster keywords, staleness/duplicate hints, representative quotes, factual summary, and uncertainty notes.
Grouping attributes: repoArea=db, query builder, collections, query; packagesOrAdapters=db, @tanstack/db, @tanstack/db-ivm, @tanstack/react-db; apisSymbolsDocsExamples=Collection, useLiveQuery, union, queryCollectionOptions; userFacingWorkflow=query builder, collections, aggregates, schema.
Open items:
| Item | Title | Status | Labels | Reactions/upvotes | Comments | Updated |
|---|---|---|---|---|---|---|
| #23 | Allow Direct Collection Addition to Queries Without Prior Registration | OPEN | none | 0 | 0 | 2025-04-28T17:17:45Z |
| #58 | Query builder needs a union method to combine similar collections into one |
OPEN | none | 3 | 10 | 2025-11-07T16:45:32Z |
| #172 | Aggregates only work with groupBy | OPEN | none | 0 | 0 | 2025-06-16T11:43:09Z |
| #237 | Add support for derived fields | OPEN | none | 0 | 0 | 2025-07-07T21:59:54Z |
| #843 | Deprecate magic return APIs from collection handlers | OPEN | none | 1 | 9 | 2026-01-29T09:39:40Z |
| #1150 | Add union collections and live query unions | OPEN | none | 0 | 1 | 2026-02-02T19:41:43Z |
| #1225 | feat(db): add type-level queryable field constraints | OPEN | none | 0 | 2 | 2026-02-11T11:59:42Z |
| #1245 | Add synced state introspection APIs for conflict detection | OPEN | none | 0 | 1 | 2026-02-12T22:06:24Z |
| #1258 | Remove Uint8Array content-based equality comparison | OPEN | none | 0 | 4 | 2026-02-18T08:38:20Z |
| #1278 | Add runtime validation for collection config with helpful error messages | OPEN | none | 0 | 4 | 2026-02-19T23:46:18Z |
| #1375 | feat: Add meta in queries | OPEN | none | 0 | 4 | 2026-03-26T23:15:10Z |
| #1500 | feat(db): expose tracked source record subscriptions | OPEN | none | 0 | 3 | 2026-05-06T08:59:29Z |
| #1515 | [DB] feat: add keyed collection subscriptions | OPEN | none | 0 | 0 | 2026-05-05T01:37:02Z |
Representative snippets:
- #23: “Currently, queries must reference collections that have been explicitly registered and assigned an ID.”
- #58: “We want a way to union two or more collections so that they can be used as a single source within a live query.”
- #172: “Currently, aggregates only work with
groupBywhich means we can't write collection-wide aggregates like in this snippet:” - #237: “Add support for collection schema to calculate a derived value which cannot be set by a user”
- #843: “## Summary Deprecates "magic" mutation handler return values in favor of explicit utility calls. Instead of returning
{ txid }or relying on auto-refetch, developers now explicitly callcollection.utils.awaitTxId()o”
| Item | Title | State | Reactions/upvotes | Comments | Closed/Merged | Why related |
|---|---|---|---|---|---|---|
| #185 | feat: new query syntax | MERGED | n/a | 32 | 2025-07-07T13:46:01Z | Matched bounded cluster terms: groupBy aggregate, derived fields, collection validation |
| #209 | Ensure schemas can apply defaults when inserting | MERGED | n/a | 24 | 2025-07-15T13:46:38Z | Matched bounded cluster terms: schema queryable |
| #1183 | Fix: Enable $selected access in orderBy after fn.select | MERGED | n/a | 7 | 2026-01-27T16:17:54Z | Matched bounded cluster terms: groupBy aggregate, derived fields |
| #1537 | feat(db): unionAll operator | MERGED | n/a | 5 | 2026-05-21T08:50:44Z | Matched bounded cluster terms: union, groupBy aggregate, derived fields |
| #1262 | fix(db): use Ref<T, Nullable> for left join select refs instead of Ref | undefined | MERGED | n/a | 7 | 2026-03-10T15:15:06Z | Matched bounded cluster terms: union, derived fields |
| #1342 | fix(db): infer non-nullable return type from first arg in coalesce() | MERGED | n/a | 9 | 2026-03-19T12:09:07Z | Matched bounded cluster terms: |
| #1274 | fix(db): support aggregates nested inside expressions (#720) | MERGED | n/a | 6 | 2026-02-23T09:27:43Z | Matched bounded cluster terms: groupBy aggregate |
| #1324 | fix(db): throw error when fn.select() is used with groupBy() | MERGED | n/a | 5 | 2026-03-09T12:48:58Z | Matched bounded cluster terms: groupBy aggregate, derived fields |
| #1213 | Virtual props implementation | MERGED | n/a | 7 | 2026-03-16T11:18:14Z | Matched bounded cluster terms: derived fields, collection validation |
| #1536 | feat(db): add caseWhen query operator | MERGED | n/a | 4 | 2026-05-19T16:32:13Z | Matched bounded cluster terms: groupBy aggregate, collection validation |
- #185: “Implements the new query syntax from #170 todo: - [x] new intermedia representation - [x] query builder that outputs the intermedia representation - [x] compiler that compiles the ir to a D2 pipeline - [x] test - and it works... features: -”
- #209: “see TanStack/db#207 (comment) for details”
- #1183: “## Summary Fixed
$selectednamespace availability inorderBy(),having(), andfn.having()clauses when using functional select (fn.select()). Users can now order and filter by computed/derived fields from functional selects. ## Ro”
- Historical related items are context only; no current-bug claim is made.
- More historical items found; capped at 10.
- GitHub search results were bounded to factual cluster terms and may omit artifacts not matching those terms.
Grouping attributes: repoArea=docs, sync, useLiveQuery, collection.preload; packagesOrAdapters=@tanstack/db, TanStack Start, @tanstack/react-db, Electric; apisSymbolsDocsExamples=useLiveQuery, collection.preload, electricCollectionOptions, Collection; userFacingWorkflow=react, TanStack DB, documentation, Added explanation and examples for using codecs in Zod..
Open items:
| Item | Title | Status | Labels | Reactions/upvotes | Comments | Updated |
|---|---|---|---|---|---|---|
| #196 | Things to document | OPEN | none | 0 | 0 | 2025-07-19T15:44:33Z |
| #355 | Add Migration Guide | OPEN | none | 2 | 2 | 2025-08-01T17:48:33Z |
| #923 | The "recovery pattern" in the docs incompatible with live queries | OPEN | none | 0 | 3 | 2026-01-08T10:56:21Z |
| #1041 | Add queryClient to overview and quick-start docs, along with a few other things that feel like they should be there. | OPEN | none | 0 | 1 | 2025-12-17T22:09:44Z |
| #1080 | Enhance documentation on Zod codecs | OPEN | none | 0 | 2 | 2025-12-30T16:41:42Z |
| #1206 | feat: add @tanstack/db-playbook package for AI agent documentation | OPEN | none | 0 | 4 | 2026-02-18T02:53:36Z |
| #1293 | feat: add playbook skills for AI coding agents | OPEN | none | 0 | 4 | 2026-02-25T21:09:37Z |
| #1296 | feat: add react action-enforcement example with custom lint rule | OPEN | none | 0 | 1 | 2026-02-25T12:26:41Z |
| #1313 | Fix React projects example | OPEN | none | 0 | 1 | 2026-03-01T14:13:22Z |
| #1332 | Skill Feedback: meta-framework (good) | OPEN | none | 0 | 0 | 2026-03-06T16:46:04Z |
| #1333 | Skill Feedback: db-core collection-setup + mutations + react-db (mixed) | OPEN | none | 0 | 0 | 2026-03-06T18:03:30Z |
| #1334 | Skill Feedback: react-db (mixed) | OPEN | none | 0 | 0 | 2026-03-06T20:58:17Z |
| #1335 | Skill Feedback: db-core/collection-setup (mixed) | OPEN | none | 0 | 0 | 2026-03-06T21:09:32Z |
| #1336 | Skill Feedback: meta-framework (mixed) | OPEN | none | 0 | 0 | 2026-03-06T21:09:33Z |
| #1355 | Docs: Add pagination approaches for query collections | OPEN | none | 0 | 5 | 2026-05-05T04:27:05Z |
| #1389 | docs: add comprehensive testing guide for TanStack DB | OPEN | none | 0 | 3 | 2026-03-19T14:01:05Z |
| #1474 | docs(react-db): add CRITICAL common mistakes to skill | OPEN | none | 0 | 1 | 2026-04-14T13:10:19Z |
| #1477 | docs: regenerate API documentation | OPEN | none | 0 | 0 | 2026-06-23T19:17:12Z |
| #1508 | Delete CONTRIBUTING.md reference from README | OPEN | none | 0 | 0 | 2026-05-02T10:11:42Z |
| #1518 | docs(browser-db-sqlite-persistence): document multi-tab coordinator usage | OPEN | none | 0 | 1 | 2026-05-07T08:09:42Z |
Representative snippets:
- #196: “A placeholder for us to add stuff that need documented as they come up:”
- #355: “Just dropping this gist as a draft for whoever might work on a migration guide in the future. Happy to help but as a learner, I'd probably get a lot wrong here 😅 https://gist.github.com/alavkx/b93808587ebc62cc2fe7b1eb2bd”
- #923: “`ts > > if (todoCollection.status === "error") { > // Cleanup will stop sync and reset the collection > await todoCollection.cleanup() > > // Collection will automatically restart on next access > todoCollect”
- #1041: “## 🎯 Changes TanStack/db#1039 (comment) Experiences of a first time user being a bit confused by some of the documentation, does this look any use? + Affects examples in overview a”
- #1080: “Added explanation and examples for using codecs in Zod.”
| Item | Title | State | Reactions/upvotes | Comments | Closed/Merged | Why related |
|---|---|---|---|---|---|---|
| #1329 | feat(examples): add wa-sqlite OPFS persistence demo | MERGED | n/a | 10 | 2026-03-19T14:16:10Z | Matched bounded cluster terms: examples useLiveQuery |
| #386 | Refactor Ref System with Nested Optional Properties | MERGED | n/a | 6 | 2025-09-08T16:59:49Z | Matched bounded cluster terms: documentation migration |
| #326 | docs: enhance installation and add comprehensive quick-start guide | MERGED | n/a | 5 | 2025-07-28T23:19:15Z | Matched bounded cluster terms: docs quick-start |
| #297 | feat: replace string-based errors with named error classes for better error handling | MERGED | n/a | 5 | 2025-07-21T20:22:38Z | Matched bounded cluster terms: documentation migration |
| #1357 | React Native Shopping List demo app | MERGED | n/a | 5 | 2026-03-25T16:23:53Z | Matched bounded cluster terms: examples useLiveQuery |
| #581 | chore(deps): update all non-major dependencies | MERGED | n/a | 4 | 2025-09-22T13:28:44Z | Matched bounded cluster terms: docs quick-start, documentation migration, Zod codecs |
| #599 | chore(deps): update all non-major dependencies | MERGED | n/a | 4 | 2025-09-29T22:14:33Z | Matched bounded cluster terms: docs quick-start, documentation migration, Zod codecs |
| #700 | chore(deps): update dependency vite to v6.4.1 [security] | MERGED | n/a | 4 | 2025-10-21T09:55:14Z | Matched bounded cluster terms: docs quick-start, documentation migration, examples useLiveQuery |
| #1257 | Add default 404 page and loading state to project example | MERGED | n/a | 4 | 2026-02-18T16:57:24Z | Matched bounded cluster terms: examples useLiveQuery |
| #1351 | feat(examples): add op-sqlite persistence to React Native offline-transactions demo | MERGED | n/a | 6 | 2026-03-19T14:17:20Z | Matched bounded cluster terms: examples useLiveQuery |
- #1329: “## Summary - add the persisted sync metadata RFC and phased implementation plan covering core metadata transactions, SQLite persistence, query collection ownership/retention, and Electric resume state - implement transactional row and colle”
- #386: “## 🎯 Overview This PR introduces a comprehensive refactor of the ref system to properly support nested structures and optionality, bringing the type system in line with JavaScript's optional chaining behavior. ## ✨ Key Improvements - **🔗 Ne”
- #326: “- Extended installation.md with details about all collection packages - Added new sections for Query Collection, Local Collections, and Sync Engines - Created complete quick-start.md with end-to-end React example - Includes installation, co”
- Historical related items are context only; no current-bug claim is made.
- More historical items found; capped at 10.
- GitHub search results were bounded to factual cluster terms and may omit artifacts not matching those terms.
Grouping attributes: repoArea=durable; packagesOrAdapters=durable; environmentRuntimeFrameworkBackend=durable; artifactType=docs confusion, design/API proposal.
Open items:
| Item | Title | Status | Labels | Reactions/upvotes | Comments | Updated |
|---|---|---|---|---|---|---|
| #975 | Implement TanStack durable stream DB collection | OPEN | none | 0 | 1 | 2025-12-05T21:11:28Z |
| #1019 | Durable sessions changes (for reference). | OPEN | none | 0 | 1 | 2025-12-14T21:19:21Z |
Representative snippets:
- #975: “…ms sync Implement @tanstack/durable-stream-db-collection, a TanStack DB collection that syncs data from Durable Streams servers in JSON mode. Key features: - Offset-resumable sync with automatic persistence - Batch-leve”
- #1019: “These are my local changes, including adding a
durable-stream-db-collectionpackage,collect,minStrandmaxStraggregation functions. This is not meant to be merged but is meant to be branch you can use to run t”
| Item | Title | State | Reactions/upvotes | Comments | Closed/Merged | Why related |
|---|---|---|---|---|---|---|
| #1019 | Durable sessions changes (for reference). | ABANDONED/REFERENCE BRANCH | n/a | 1 | not merged | Explicitly linked cluster artifact; PR body says local changes are for reference and “not meant to be merged”; includes durable-stream-db-collection, collect, minStr, maxStr. |
| #975 | Implement TanStack durable stream DB collection | WIP/UNMERGED | n/a | 1 | not merged | Explicitly linked cluster artifact for @tanstack/durable-stream-db-collection, Durable Streams JSON mode, offset-resumable sync, batch-level handling. |
- #1019: “These are my local changes, including adding a
durable-stream-db-collectionpackage,collect,minStrandmaxStraggregation functions. This is not meant to be merged...” - #975: “Implement @tanstack/durable-stream-db-collection, a TanStack DB collection that syncs data from Durable Streams servers in JSON mode.”
- Historical related items are context only; no current-bug claim is made.
- No cap reached. Durable-specific history appears sparse in the available Phase 2/3 corpus.
- GitHub search became rate-limited during follow-up, so this file uses cluster-linked abandoned/WIP artifacts rather than broader search results.
Grouping attributes: repoArea=sync, electric, docs, sorting; packagesOrAdapters=electric-db-collection, Electric, query-db-collection, @tanstack/db; apisSymbolsDocsExamples=Collection, onInsert, electric-db-collection, query-db-collection; userFacingWorkflow=ElectricCollection, sync metadata, mutation handler, memory management.
Open items:
| Item | Title | Status | Labels | Reactions/upvotes | Comments | Updated |
|---|---|---|---|---|---|---|
| #96 | Expose the original streamOptions in getSyncMetadata? | OPEN | none | 0 | 1 | 2025-05-21T18:06:17Z |
| #103 | Identifying the table/schema on the backend when ingesting from a generic mutation handler. | OPEN | none | 0 | 0 | 2025-05-21T17:17:26Z |
| #223 | GC stored txids from electric collections | OPEN | none | 0 | 0 | 2025-07-02T14:08:58Z |
| #368 | Create rss collection with feed syncing | OPEN | none | 1 | 2 | 2025-11-04T13:50:42Z |
| #399 | electric-db-collection, sync breaks after change | OPEN | none | 0 | 0 | 2025-08-11T10:02:16Z |
| #402 | Add flexible transaction matching strategies to electric-db-collection | OPEN | none | 0 | 0 | 2025-09-03T19:54:57Z |
| #611 | Case Sensitive Sorting | OPEN | bug | 0 | 2 | 2026-03-23T06:41:21Z |
| #772 | E2E Tests for Query-Driven Sync with Predicate Push-Down | OPEN | enhancement | 0 | 0 | 2025-11-06T17:45:47Z |
| #810 | Query-driven sync fails with HTTP 431 for large IN clauses | OPEN | none | 0 | 0 | 2025-11-13T18:11:21Z |
| #878 | Supabase x Tanstack DB: How to use it and collection helper explorations | OPEN | none | 0 | 3 | 2025-11-24T14:45:11Z |
| #947 | feat(electric): add offline persistence adapter for collections | OPEN | none | 0 | 1 | 2025-12-29T12:57:46Z |
| #1006 | feat(trailbase-db-collection): add syncMode support with comprehensive test coverage | OPEN | none | 0 | 9 | 2026-01-07T09:03:30Z |
| #1058 | feat: add writeUpsert util to localstorage collection | OPEN | none | 0 | 3 | 2026-01-27T20:15:27Z |
| #1090 | feat: trailbase syncMode support & e2e test suite | OPEN | none | 0 | 6 | 2026-01-07T19:32:59Z |
| #1176 | Add debug logging and tests for columnMapper.encode in loadSubset | OPEN | none | 0 | 5 | 2026-01-23T20:43:58Z |
| #1179 | Add IndexedDB-backed collection for TanStack DB | OPEN | none | 0 | 1 | 2026-01-25T08:44:46Z |
| #1184 | fix(query-db-collection): forward structuralSharing to QueryObserver | OPEN | none | 0 | 1 | 2026-01-27T00:41:45Z |
| #1185 | feat(query-db-collection): refetch and network options to QueryObserver | OPEN | none | 0 | 1 | 2026-01-27T10:07:55Z |
| #1194 | docs: Add investigation of ElectricSQL freeze after shape handle expiration | OPEN | none | 0 | 4 | 2026-01-28T23:59:19Z |
| #1277 | fix(powersync-db-collection): additional export to make type definitions portable | OPEN | none | 0 | 1 | 2026-02-19T21:41:16Z |
| #1514 | feat(electric-db-collection): support nested property references in SQL queries | OPEN | none | 0 | 0 | 2026-05-04T22:16:40Z |
| #1540 | fix(query-db-collection, trailbase-db-collection): add electric path alias for typecheck | OPEN | none | 0 | 1 | 2026-05-19T06:30:45Z |
Representative snippets:
- #96: “The ElectricCollection exposes primary key and relation in its sync metadata, set from the streamOptions: https://github.com/TanStack/db/blob/1c318955d7fff533988663863701c95896c3b7”
- #103: “I have an app with a generic mutation handler as per https://github.com/TanStack/db/blob/main/docs/index.md#2-electricsql-sync”
- #223: “Right now they store every txid they see synced so that
awaitTxIdworks to match against them. This is a (very) slow memory leak. So we should probably GC these eventually. One a” - #368: “This PR introduces comprehensive RSS and Atom feed collection capabilities to TanStack DB, enabling seamless integration of external feed data with automatic polling, deduplication, and full TypeScript support. **note th”
- #399: “Hi, I'm having an issue with this collection. The setup is a pretty barebones. In this scenario: - There are A and B clients - A makes a change, B gets the update - A makes another (doesn't matter how many), B gets the u”
| Item | Title | State | Reactions/upvotes | Comments | Closed/Merged | Why related |
|---|---|---|---|---|---|---|
| #1547 | fix(db): drop stale direct optimistic rows after txid sync | MERGED | n/a | 4 | 2026-05-23T13:30:14Z | Matched bounded cluster terms: electric-db-collection, awaitTxId, sync metadata |
| #1596 | ci: Version Packages | MERGED | n/a | 3 | 2026-06-18T21:31:28Z | Matched bounded cluster terms: electric-db-collection, sync metadata, trailbase-db-collection |
| #1612 | ci: Version Packages | MERGED | n/a | 0 | 2026-06-23T19:07:46Z | Matched bounded cluster terms: electric-db-collection, sync metadata, trailbase-db-collection |
| #1570 | ci: Version Packages | MERGED | n/a | 0 | 2026-06-05T18:12:23Z | Matched bounded cluster terms: electric-db-collection, sync metadata, trailbase-db-collection |
| #1548 | ci: Version Packages | MERGED | n/a | 0 | 2026-05-23T14:00:39Z | Matched bounded cluster terms: electric-db-collection, sync metadata, trailbase-db-collection |
| #1568 | fix(query-db-collection): forward gcTime from queryCollectionOptions to the underlying query | MERGED | n/a | 4 | 2026-06-09T07:29:40Z | Matched bounded cluster terms: query-db-collection |
| #1606 | fix: preload hangs forever after cleanup (#1576) | MERGED | n/a | 3 | 2026-06-23T16:58:42Z | Matched bounded cluster terms: sync metadata |
| #1593 | fix: safe randomUUID helper for non-secure browser contexts | MERGED | n/a | 2 | 2026-06-17T20:42:33Z | Matched bounded cluster terms: |
- #1547: “## Summary Fix stale optimistic rows persisting when sync confirms a different server-generated key (e.g., Postgres
GENERATED ALWAYS AS IDENTITY). After a directcollection.insert()with a temporary client ID, the server-assigned row wo” - #1596: “This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a r”
- #1612: “This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a r”
- Historical related items are context only; no current-bug claim is made.
- No cap reached within bounded searches.
- GitHub search results were bounded to factual cluster terms and may omit artifacts not matching those terms.
Grouping attributes: repoArea=firebase, @tanstack/react-db, react, @tanstack/db; packagesOrAdapters=firebase, @tanstack/react-db, react, @tanstack/db; apisSymbolsDocsExamples=useLiveQuery, createCollection, firebaseCollectionOptions, getKey; environmentRuntimeFrameworkBackend=firebase, react.
Open items:
| Item | Title | Status | Labels | Reactions/upvotes | Comments | Updated |
|---|---|---|---|---|---|---|
| #323 | [WIP]: Add Firebase integration | OPEN | none | 1 | 7 | 2025-11-13T05:19:47Z |
| #1020 | Firebase collection | OPEN | none | 0 | 1 | 2025-12-15T01:28:04Z |
Representative snippets:
- #323: “https://github.com/TanStack/db/blob/8296f8ec0668ccf49e801394226ed1570b696b00/packages/firebase-db-collection/src/firestore.ts#L108 @KyleAMathews What are your thoughts about changing this parameter to
collectionPath? I” - #1020: “## 🎯 Changes ## ✅ Checklist - [ ] I have followed the steps in the [Contributing guide](https://github.com/TanStack/db/blob/main/CONTRIBU”
| Item | Title | State | Reactions/upvotes | Comments | Closed/Merged | Why related |
|---|---|---|---|---|---|---|
| #876 | Finish Firestore integration | CLOSED | n/a | 2 | 2025-12-02T21:42:49Z | Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster. |
| #328 | docs: improve collection options creator documentation | MERGED | n/a | 4 | 2025-07-29T13:52:04Z | Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster. |
| #273 | ci: Version Packages | MERGED | n/a | 0 | 2025-07-16T20:09:28Z | Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster. |
- #876: “## 🎯 Changes
- I have followed the steps in the [Contributing guide](https://github.com/TanStack/db/blob/main”
- #328: “## Summary
This PR significantly enhances the collection-options-creator documentation based on real-world implementation experience building Firebase/Firestore and other integrations. The improvements address critica”
- #273: “This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're”
- Historical items are context only; no claim is made that closed/merged work represents a current bug.
- GitHub search result reaction counts were not available via the bounded CLI fields used; comments are recorded where available.
- Capped: no.
Grouping attributes: repoArea=react, vue, query, docs; packagesOrAdapters=React, Svelte, vue, svelte; apisSymbolsDocsExamples=useLiveQuery, pnpm test, useLiveInfiniteQuery, SSR; userFacingWorkflow=React, Svelte, framework integrations, Added useLiveInfiniteQuery for vue-db based on the react-db implementation..
Open items:
| Item | Title | Status | Labels | Reactions/upvotes | Comments | Updated |
|---|---|---|---|---|---|---|
| #5 | Port tanstack/db to other frameworks | OPEN | help wanted | 0 | 1 | 2025-07-18T13:43:42Z |
| #283 | refactor: vue | OPEN | none | 0 | 13 | 2025-07-24T03:25:19Z |
| #643 | Vue implementation | OPEN | none | 0 | 1 | 2026-03-12T06:47:44Z |
| #709 | feat: Add SSR/RSC support for live queries in @tanstack/react-db | OPEN | none | 7 | 5 | 2025-11-04T22:26:17Z |
| #985 | Prevent Svelte unsafe state mutation in subscription | OPEN | none | 0 | 1 | 2025-12-08T14:50:57Z |
| #1105 | feat(vue-db): add useLiveInfiniteQuery | OPEN | none | 0 | 1 | 2026-01-08T14:19:36Z |
| #1195 | Fix: Handle nullable collection getters in svelte-db useLiveQuery | OPEN | none | 0 | 2 | 2026-01-29T05:00:30Z |
| #1196 | fix(svelte-db): initialize useLiveQuery data synchronously for SSR | OPEN | none | 0 | 2 | 2026-01-29T05:42:33Z |
| #1256 | draft designs for SSR | OPEN | none | 0 | 4 | 2026-03-16T11:01:49Z |
| #1272 | [repro] findOne returns array instead of single object in angular-db (issue #1261) | OPEN | none | 0 | 4 | 2026-02-19T14:38:35Z |
| #1302 | refactor(vue-db): modernize useLiveQuery reactivity and lifecycle patterns | OPEN | none | 0 | 1 | 2026-03-01T06:48:44Z |
| #1447 | feat(svelte-db): implement useLiveInfiniteQuery for svelte 5 | OPEN | none | 0 | 0 | 2026-04-03T13:19:02Z |
| #1513 | feat(vue-db): implement useLiveInfiniteQuery for vue 3 | OPEN | none | 0 | 0 | 2026-05-04T22:08:31Z |
| #1553 | fix(react-db): let setWindow control limit/offset in useLiveInfiniteQuery | OPEN | none | 0 | 1 | 2026-05-25T07:15:27Z |
| #1598 | fix(solid-db): set key option to $key when calling reconcile | OPEN | none | 0 | 1 | 2026-06-18T16:15:44Z |
| #1608 | FIX solid-db, db: bug with solid not remounting with current data due to proxy issues | OPEN | none | 0 | 1 | 2026-06-22T16:20:40Z |
| #1609 | Solid renderer rework - huge performance gains | OPEN | none | 0 | 1 | 2026-06-22T16:38:15Z |
Representative snippets:
- #5: “This should be pretty straightforward as we just use tanstack/store for data & we can copy their framework integrations.”
- #283: “It makes sense to reduce the possible props options.”
- #643: “the vue implementation must match the solid implementation, not the react implementation”
- #709: “Implements SSR (Server-Side Rendering) and RSC (React Server Components) support for live queries, following TanStack Query's hydration patterns. ## Key Features - Server-side query execution:
prefetchLiveQuery()e” - #985: “On initial load when a query collection tries to start up, AND there's local data to hydrate from the queryPersister, it would throw https://svelte.dev/docs/svelte/runtime-errors#Client-errors-state_unsafe_mutation. ## 🎯”
| Item | Title | State | Reactions/upvotes | Comments | Closed/Merged | Why related |
|---|---|---|---|---|---|---|
| #1463 | feat(vue-db): implement useLiveInfiniteQuery for vue 3 |
CLOSED | n/a | 0 | 2026-05-04T22:04:08Z | Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster. |
| #666 | feat: implement useLiveInfiniteQuery hook for React | MERGED | n/a | 8 | 2025-10-15T17:48:26Z | Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster. |
| #1314 | [repro] useLiveInfiniteQuery throws unhelpful error for circular deps (issue #1242) | CLOSED | n/a | 4 | 2026-03-02T10:58:39Z | Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster. |
| #1315 | [fix] descriptive error for non-serializable deps in useLiveInfiniteQuery (issue #1242) | MERGED | n/a | 4 | 2026-03-02T10:58:24Z | Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster. |
| #1268 | fix(react-db): make getNextPageParam optional in useLiveInfiniteQuery | MERGED | n/a | 7 | 2026-03-02T14:39:33Z | Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster. |
| #1269 | fix(react-db): handle rejected/stale setWindow promises in useLiveInfiniteQuery | MERGED | n/a | 3 | 2026-03-02T15:56:47Z | Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster. |
| #1210 | fix(react-db): improve useLiveInfiniteQuery pagination and types | CLOSED | n/a | 1 | 2026-02-02T09:55:40Z | Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster. |
| #1209 | fix(db): useLiveInfiniteQuery pagination with async on-demand loadSubset | MERGED | n/a | 5 | 2026-02-12T21:43:00Z | Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster. |
| #985 | Prevent Svelte unsafe state mutation in subscription | OPEN | n/a | 1 | Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster. | |
| #1593 | fix: safe randomUUID helper for non-secure browser contexts | MERGED | n/a | 2 | 2026-06-17T20:42:33Z | Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster. |
- #1463: “UPDATE: superceeded by TanStack/db#1513
This PR implements useLiveInfiniteQuery for Vue 3. This reference implementation followed is React (https://github.com/TanStack/db/”
- #666: “stacked on #669
Implements useLiveInfiniteQuery hook for React, providing infinite scrolling/pagination with live updates and async loading state tracking.
This PR adds a new useLiveInfiniteQuery”
- #1314: “## Linked issue Closes partially: TanStack/db#1242 ## What the test asserts When
useLiveInfiniteQueryreceives a dependency array containing an object with circular references, it should thro”
- Historical items are context only; no claim is made that closed/merged work represents a current bug.
- GitHub search result reaction counts were not available via the bounded CLI fields used; comments are recorded where available.
- Capped: yes.
Grouping attributes: repoArea=query engine, includes, types, query; packagesOrAdapters=@tanstack/db, @tanstack/react-db, db, @tanstack/electric-db-collection; apisSymbolsDocsExamples=where, useLiveQuery, toArray, and; userFacingWorkflow=live query, optimistic update, include subquery, docs: document materialize() helper for includes subqueries.
Open items:
| Item | Title | Status | Labels | Reactions/upvotes | Comments | Updated |
|---|---|---|---|---|---|---|
| #1444 | TanStack DB "includes" ignores orderBy after optimistic update | OPEN | none | 0 | 0 | 2026-04-02T12:28:35Z |
| #1454 | Duplicate alias in sibling includes silently breaks nested children | OPEN | none | 0 | 0 | 2026-04-04T19:33:51Z |
| #1455 | fix: duplicate alias in sibling includes silently breaks nested children | OPEN | none | 0 | 0 | 2026-04-06T12:19:45Z |
| #1488 | on-demand store entries are removed while queries still use them when reusing an existing observer | OPEN | none | 0 | 0 | 2026-04-21T16:47:00Z |
| #1495 | Nested include flush misclassifies sync-confirmed child updates as inserts, crashing duplicate-key diagnostics | OPEN | none | 0 | 0 | 2026-04-24T12:48:04Z |
| #1496 | fix(db): includes orderBy ignored after optimistic update on child collection | OPEN | none | 0 | 1 | 2026-06-12T12:32:54Z |
| #1501 | 3-level nested toArray: shared buffer in createPerEntryIncludesStates drops children when correlation keys overlap across parent groups | OPEN | none | 0 | 0 | 2026-04-29T07:44:42Z |
| #1505 | "include" query returning empty array when accessing field | OPEN | none | 0 | 1 | 2026-05-02T10:52:38Z |
| #1510 | fix(db): live query stuck loading when subquery-in-select inner is cold on-demand | OPEN | none | 0 | 2 | 2026-05-24T17:35:51Z |
| #1532 | Test/progressive nested fastpath bug | OPEN | none | 0 | 1 | 2026-05-17T21:01:27Z |
| #1533 | Progressive sync: nested toArray subqueries skip the fast-path snapshot | OPEN | none | 0 | 0 | 2026-05-17T17:48:13Z |
| #1571 | Include value updates break with solidjs | OPEN | none | 0 | 0 | 2026-06-04T13:03:34Z |
| #1580 | docs: document materialize() helper for includes subqueries | OPEN | none | 0 | 2 | 2026-06-10T08:00:54Z |
| #1600 | fix: reconcile duplicate live query child inserts | OPEN | none | 0 | 5 | 2026-06-22T07:43:50Z |
| #1604 | fix(solid-db): clone rows in syncDataFromCollection so reconcile sees in-place mutations | OPEN | none | 0 | 6 | 2026-06-23T13:30:27Z |
| #1607 | test(db): failing repro for nested toArray dropped children (#1501) | OPEN | none | 0 | 2 | 2026-06-22T14:08:30Z |
Representative snippets:
- #1444: “If I perform an optimistic update on the parent collection (status), everything works as expected - sorting is applied immediately.”
- #1454: “[x] I've validated the bug against the latest version of DB packages”
- #1455: “Give each includes subquery its own independent D2 graph input:”
- #1488: “[x] I've validated the bug against the latest version of DB packages”
- #1495: “[x] I've validated the bug against the latest version of DB packages”
| Item | Title | State | Reactions/upvotes | Comments | Closed/Merged | Why related |
|---|---|---|---|---|---|---|
| #1504 | feat: add materialize() helper for includes subqueries | MERGED | n/a | 6 | 2026-06-04T12:01:23Z | Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster. |
| #1361 | Docs for includes | MERGED | n/a | 4 | 2026-04-07T17:36:42Z | Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster. |
| #1312 | Recursive includes exploration | CLOSED | n/a | 6 | 2026-03-24T13:21:50Z | Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster. |
| #1472 | fix: pass child where clauses to loadSubset in includes | MERGED | n/a | 3 | 2026-04-14T09:24:16Z | Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster. |
| #1471 | fix: lazy load includes child collections in on-demand sync mode | MERGED | n/a | 3 | 2026-04-14T09:35:50Z | Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster. |
| #1384 | feat: support concat(toArray(...)) scalar includes | MERGED | n/a | 4 | 2026-03-25T12:59:19Z | Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster. |
| #1457 | fix(db): propagate changes through nested toArray includes at depth 3+ | MERGED | n/a | 5 | 2026-04-07T14:26:06Z | Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster. |
| #1430 | fix: disable GC on child collections created by includes system | MERGED | n/a | 1 | 2026-03-30T11:22:48Z | Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster. |
| #1295 | feat: add toArray() for includes subqueries | MERGED | n/a | 6 | 2026-03-12T12:06:22Z | Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster. |
| #1569 | chore: add changeset for materialize() helper (#1504) | MERGED | n/a | 4 | 2026-06-04T12:10:16Z | Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster. |
- #1504: “Closes #1481. ## Summary - Adds
materialize()— a single helper for materializing includes subqueries onto parent rows. It resolves toArray<T>when the wrapped subquery returns multiple rows, and to `T / undefined” - #1361: “Reverts TanStack/db#1317”
- #1312: “## 🎯 Changes Adds a design exploration document (
docs/guides/recursive-includes-exploration.md) outlining potential approaches for implementing recursive subqueries (recursive includes). This document details the curr”
- Historical items are context only; no claim is made that closed/merged work represents a current bug.
- GitHub search result reaction counts were not available via the bounded CLI fields used; comments are recorded where available.
- Capped: yes.
Grouping attributes: repoArea=collection, docs, tests, query; packagesOrAdapters=pnpm, @tanstack/electric-db-collection, Electric, React Native; apisSymbolsDocsExamples=loadSubset, @coderabbitai help, orderBy, queryCollection; userFacingWorkflow=live queries, pagination, collections, sync partitioning.
Open items:
| Item | Title | Status | Labels | Reactions/upvotes | Comments | Updated |
|---|---|---|---|---|---|---|
| #21 | Support Stable Pagination and Deferred Update Handling for Large Query Results | OPEN | none | 1 | 1 | 2025-05-22T16:08:37Z |
| #315 | Partitioned collections | OPEN | none | 12 | 16 | 2026-02-22T19:29:11Z |
| #836 | Support loadSubset deduplication in query collection |
OPEN | none | 0 | 4 | 2026-02-09T10:39:15Z |
| #863 | Add collection-level pagination metadata support to avoid wasteful peek-ahead pattern | OPEN | none | 0 | 3 | 2025-11-20T16:54:30Z |
| #968 | useLiveInfiniteQuery doesn't fetch more data when collection has no more items | OPEN | none | 0 | 0 | 2025-12-04T16:02:57Z |
| #1250 | bug [upstream]: queryCollection does not refetch in non-windowed environments (Chrome extension, vscode extension) | OPEN | wontfix | 0 | 1 | 2026-02-23T13:02:24Z |
| #1260 | Live collection error status not working | OPEN | none | 0 | 1 | 2026-02-19T15:19:35Z |
| #1426 | chore: Rewrite the tests for the loadSubset to cover more clauses and operators | OPEN | none | 0 | 0 | 2026-03-28T11:02:03Z |
| #1493 | fix(electric-db-collection): preserve persisted rows on progressive resume | OPEN | none | 0 | 1 | 2026-06-06T18:08:24Z |
| #1520 | fix(db): avoid passing computed orderBy aliases to loadSubset | OPEN | none | 0 | 0 | 2026-05-07T22:33:14Z |
| #1521 | fix(trailbase-db-collection): handle 403 on subscribe/* with polling fallback | OPEN | none | 0 | 0 | 2026-05-08T13:19:05Z |
| #1554 | fix(db): deduplicate loadedSubsets and join key requests | OPEN | none | 0 | 1 | 2026-05-25T08:17:43Z |
| #1555 | fix(db): filter out-of-window SSE inserts in collection-subscriber | OPEN | none | 0 | 1 | 2026-05-25T07:44:22Z |
| #1556 | fix(db): boundary expansion for multi-column orderBy pagination | OPEN | none | 0 | 1 | 2026-05-25T08:17:38Z |
| #1573 | fix(query-db-collection): cancel idle on-demand queries | OPEN | none | 0 | 1 | 2026-06-07T08:05:52Z |
| #1575 | fix(electric): bound refresh wait for on-demand subsets | OPEN | none | 0 | 4 | 2026-06-08T21:24:20Z |
| #1576 | preload after cleanup on a collection hangs forever |
OPEN | none | 0 | 0 | 2026-06-08T23:49:50Z |
| #1585 | fix(powersync): Don't flush records when diff trigger isn't setup yet when using on-demand mode. |
OPEN | none | 0 | 1 | 2026-06-11T08:32:22Z |
Representative snippets:
- #21: “In real-time systems, large query results can drift over time as new data arrives or existing data is modified.”
- #315: “A very common use case, and question, is how to handle collections where you don't want to download all of it. Such as issues in an issue tracker, downloading by project/status/cre”
- #836: “
loadSubsetcalls inside the query collection because there were some problems with garbage collection of queries which would lead” - #863: “
useLiveInfiniteQueryuses a "peek ahead" pattern to determine if there's a next page:” - #968: “Describe the bug”
| Item | Title | State | Reactions/upvotes | Comments | Closed/Merged | Why related |
|---|---|---|---|---|---|---|
| #1243 | Pass orderBy and limit to lazy collection loadSubset in joins | CLOSED | n/a | 5 | 2026-06-23T19:49:56Z | Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster. |
| #1352 | fix(db): complete DeduplicatedLoadSubset follow-up coverage | MERGED | n/a | 4 | 2026-03-16T09:30:51Z | Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster. |
| #1348 | Fix unbounded expression growth in DeduplicatedLoadSubset | MERGED | n/a | 5 | 2026-03-10T22:08:12Z | Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster. |
| #1379 | feat: persisted query metadata for warm-start consistency | CLOSED | n/a | 4 | 2026-03-18T10:51:15Z | Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster. |
| #1192 | fix(db): track loadSubset promise for on-demand live queries | MERGED | n/a | 6 | 2026-01-29T16:47:44Z | Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster. |
| #1209 | fix(db): useLiveInfiniteQuery pagination with async on-demand loadSubset | MERGED | n/a | 5 | 2026-02-12T21:43:00Z | Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster. |
| #1268 | fix(react-db): make getNextPageParam optional in useLiveInfiniteQuery | MERGED | n/a | 7 | 2026-03-02T14:39:33Z | Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster. |
| #666 | feat: implement useLiveInfiniteQuery hook for React | MERGED | n/a | 8 | 2025-10-15T17:48:26Z | Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster. |
| #1101 | Add a wider range of subset queries for TrailBase integation: pagination, ordering, and some where. | MERGED | n/a | 5 | 2026-03-16T11:35:30Z | Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster. |
| #412 | add support for electric must-refetch | MERGED | n/a | 9 | 2025-08-18T08:41:08Z | Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster. |
- #1243: “## 🎯 Changes This PR enables the sync layer to optimize data fetching for lazy-loaded collections in join queries by passing
orderByandlimitinformation to theloadSubsetmethod. ### Key Changes: 1. **New `com” - #1352: “## Summary This is a follow-up to #1348, which fixed the main unbounded
WHEREgrowth bug by separating the request sent to the backend from the predicate recorded for trackin” - #1348: “Fix unbounded WHERE expression growth in
DeduplicatedLoadSubsetwhen loading all data after accumulating specific predicates — prevents production 500 errors from oversized query bodies. ## How the bug happens When m”
- Historical items are context only; no claim is made that closed/merged work represents a current bug.
- GitHub search result reaction counts were not available via the bounded CLI fields used; comments are recorded where available.
- Capped: yes.
Grouping attributes: repoArea=performance, collection, docs, tests; packagesOrAdapters=@tanstack/db, SortedMap, pnpm, Redux; apisSymbolsDocsExamples=Collection, React, useLiveQuery, orderBy; userFacingWorkflow=performance, reactivity, benchmark.
Open items:
| Item | Title | Status | Labels | Reactions/upvotes | Comments | Updated |
|---|---|---|---|---|---|---|
| #24 | Implement Throttled Update Notifications for Query Reactivity | OPEN | none | 0 | 2 | 2025-04-30T18:31:29Z |
| #43 | Implement js-framework-benchmark | OPEN | none | 0 | 0 | 2025-05-05T16:50:14Z |
| #445 | Seeing 40%+ slowness in simple useLiveQuery vs redux selectors when rendering many items | OPEN | none | 0 | 2 | 2025-11-05T18:00:57Z |
| #1542 | perf: optimize hot paths in persistence, scheduling, and React hooks | OPEN | none | 0 | 4 | 2026-05-20T17:09:14Z |
| #1543 | fix: O(N^2) insert in SortedMap.set due to Array.splice | OPEN | none | 0 | 1 | 2026-05-21T02:40:19Z |
Representative snippets:
- #24: “Currently, every mutation or sync triggers immediate reactivity and query invalidation.”
- #43: “https://github.com/krausest/js-framework-benchmark?tab=readme-ov-file”
- #445: “We have a React app that uses redux/re-reselect to render many items on the screen at a time. Switching the code to use tanstack db/useLiveQuery causes 40% or more speed reduction. A simple runnable example is attached..”
- #1542: “## Summary Optimize hot paths across three packages to reduce unnecessary allocations and improve algorithmic complexity. The headline win is in
useLiveQuery— status-only consumers (isReady,isLoading,status) n” - #1543: “## Summary - replace
SortedMap's array-backed ordered key store with the existing internalBTree- preserve existing ordering semantics: key order by default, or comparator order with key tie-breaking when values com”
| Item | Title | State | Reactions/upvotes | Comments | Closed/Merged | Why related |
|---|---|---|---|---|---|---|
| #1325 Issue | Performance issues when unmounting useLiveQuery due to excessive setTimeout and clearTimeout calls | closed | n/a | 3 | 2026-03-18T13:36:07Z | Closed artifact matched bounded cluster terms (performance, settimeout). |
| #1029 PR | Fix slow onInsert awaitMatch performance issue | closed | n/a | 4 | 2025-12-22T18:05:21Z | Closed artifact matched bounded cluster terms (performance, batch). |
| #755 Issue | localStorageCollectionOptions performance issues | closed | n/a | 2 | 2025-11-05T14:02:41Z | Closed artifact matched bounded cluster terms (performance, rendering). |
| #628 PR | Add a scheduler that ensures single batch of changes from live query due to a transaction that touches multiple source collections | closed | n/a | 6 | 2025-10-13T11:40:42Z | Closed artifact matched bounded cluster terms (batch). |
| #1114 PR | fix(db): batch D2 output callbacks to prevent duplicate key errors in joins | closed | n/a | 5 | 2026-01-12T18:59:43Z | Closed artifact matched bounded cluster terms (batch). |
| #430 PR | fix performance regression when introducing truncate | closed | n/a | 4 | 2025-08-21T07:28:06Z | Closed artifact matched bounded cluster terms (performance). |
| #378 PR | feat: improve writeBatch API to use callback pattern | closed | n/a | 4 | 2025-08-04T21:57:43Z | Closed artifact matched bounded cluster terms (batch). |
| #155 PR | refactor collection for fine grained reactivity | closed | n/a | 4 | 2025-06-12T16:56:02Z | Closed artifact matched bounded cluster terms (reactivity). |
| #1326 PR | Use in-memory queue for faster GC registration | closed | n/a | 2 | 2026-03-16T12:20:22Z | Closed artifact matched bounded cluster terms (performance, batch, settimeout). |
| #87 PR | rollback batching of transaction commit | closed | n/a | 2 | 2025-05-20T13:56:50Z | Closed artifact matched bounded cluster terms (batch). |
- #1325: “Apps with large numbers of live queries, when unmounting them, trigger deferred garbage collection via
setTimeout.setTimeouthas a considerable performance impact and looking at the profiler, about half of the entire time spent for a r…” - #1029: “The buffer was being cleared at the start of each new batch, which caused messages to be lost when multiple batches arrived before awaitMatch was called. This led to:…”
- #755: “I have an app with three collections, all using local storage, and I have massive performance issues.…”
- Historical items are context only; closed/merged items are not evidence that current behavior is broken.
- Source was the repository closed issues/PRs endpoint, locally filtered by bounded cluster terms; reactions were unavailable in this payload and marked n/a.
- More historical items found; capped at 10.
Grouping attributes: repoArea=persistence, sqlite persistence, sync, electric collection; packagesOrAdapters=@tanstack/browser-db-sqlite-persistence, @tanstack/db, @tanstack/electric-db-collection, @tanstack/db-sqlite-persistence-core; apisSymbolsDocsExamples=createCollection, electricCollectionOptions, persistedCollectionOptions, useLiveQuery; userFacingWorkflow=persistence, sqlite, vitest, multi-tab.
Open items:
| Item | Title | Status | Labels | Reactions/upvotes | Comments | Updated |
|---|---|---|---|---|---|---|
| #82 | Offline-First Support | OPEN | none | 42 | 23 | 2025-11-20T13:16:56Z |
| #865 | Persistence of synced data | OPEN | none | 0 | 6 | 2026-04-28T06:41:03Z |
| #1415 | fix: normalize schema generic in PersistedSyncOptionsResult | OPEN | none | 0 | 0 | 2026-03-26T19:23:28Z |
| #1416 | useLiveQuery blocks rendering of locally persisted collection when Electric is unavailable | OPEN | none | 0 | 0 | 2026-03-27T11:19:00Z |
| #1443 | BrowserCollectionCoordinator + Electric adapter: collections never reach ready state | OPEN | none | 0 | 1 | 2026-06-09T04:17:32Z |
| #1453 | fix(db-sqlite-persistence-core): add schema-aware overloads to persistedCollectionOptions | OPEN | none | 0 | 1 | 2026-04-13T14:02:53Z |
| #1456 | Data not persisted locally when using @tanstack/browser-db-sqlite-persistence + @tanstack/electric-db-collection doesn't persists data locally | OPEN | none | 0 | 0 | 2026-06-04T12:50:54Z |
| #1478 | Persisted collection with progressive sync mode wiped on reconnect | OPEN | none | 0 | 2 | 2026-06-02T06:26:44Z |
| #1486 | BrowserCollectionCoordinator: secondary tabs fail to acquire leadership in multi-tab sessions | OPEN | none | 0 | 1 | 2026-06-02T16:37:56Z |
| #1487 | fix(sqlite): inline JSON paths for expression indexes | OPEN | none | 0 | 0 | 2026-04-30T20:36:04Z |
| #1498 | Console flooded with "Function object could not be cloned" with multiple persisted tabs | OPEN | none | 0 | 0 | 2026-04-28T03:42:49Z |
| #1499 | OpSQLiteDriver: executeAsync result format not handled by extractRowsFromStatementResult, causing silent data loss on SELECT queries | OPEN | none | 0 | 0 | 2026-04-28T16:52:02Z |
| #1560 | fix(expo-db-sqlite-persistence): resolve TS2322 when passing SQLiteDatabase to createExpoSQLitePersistence | OPEN | none | 0 | 1 | 2026-05-27T06:53:35Z |
| #1567 | SQLite persistence: recover or provide helper for corrupt local DB files | OPEN | none | 0 | 0 | 2026-06-04T04:15:37Z |
| #1589 | Persisted Electric collection ends up permanently empty: diverging schemaVersions wipe rows, schema reset leaves the resume point behind | OPEN | none | 0 | 0 | 2026-06-12T17:39:32Z |
Representative snippets:
- #82: “I've been loving TanStack DB so far - the reactive collections and optimistic mutations are exactly what I need. I'm wondering if you have any plans to support offline-first functi”
- #865: “
@tanstack/offline-transactions:” - #1415: “Also, there seems to be no contribution docs for this repo? I would like to keep contributing as I find things in my prototype but dont want to be burdensom”
- #1416: “Disclaimer: I'm new to TanStack DB and not very familiar with the codebase. The following analysis and most of the writing were done by GPT-5.4. Feel free to consider this a feature request rather than a bug report.”
- #1443: “# BrowserCollectionCoordinator + Electric adapter: collections never reach "ready" state”
| Item | Title | State | Reactions/upvotes | Comments | Closed/Merged | Why related |
|---|---|---|---|---|---|---|
| #1436 PR | fix(browser-db-sqlite-persistence): use relative path for OPFS worker in bundled output | closed | n/a | 3 | 2026-03-31T14:51:36Z | Closed artifact matched bounded cluster terms (persistence, sqlite, browser-db-sqlite-persistence, offline). |
| #1351 PR | feat(examples): add op-sqlite persistence to React Native offline-transactions demo | closed | n/a | 6 | 2026-03-19T14:17:20Z | Closed artifact matched bounded cluster terms (persistence, sqlite, offline). |
| #1345 PR | feat(examples): Electron offline-first todo app with SQLite persistence | closed | n/a | 4 | 2026-03-19T14:17:30Z | Closed artifact matched bounded cluster terms (persistence, sqlite, offline). |
| #1413 Issue | browser-db-sqlite-persistence@0.1.4: absolute path for Worker in bundled code |
closed | n/a | 0 | 2026-03-31T14:51:38Z | Closed artifact matched bounded cluster terms (persistence, sqlite, browser-db-sqlite-persistence). |
| #1329 PR | feat(examples): add wa-sqlite OPFS persistence demo | closed | n/a | 10 | 2026-03-19T14:16:10Z | Closed artifact matched bounded cluster terms (persistence, sqlite, electric, schema). |
| #1421 PR | docs: Add db-core/persistence skill and update library version to 0.6.0 | closed | n/a | 3 | 2026-03-27T21:26:10Z | Closed artifact matched bounded cluster terms (persistence, sqlite, electric, offline). |
| #1358 PR | feat: SQLite persistence core | closed | n/a | 4 | 2026-03-16T12:48:20Z | Closed artifact matched bounded cluster terms (persistence, sqlite, multi-tab). |
| #1572 PR | feat(sqlite-persistence): prune applied_tx by default with safe replay recovery | closed | n/a | 2 | 2026-06-05T17:58:43Z | Closed artifact matched bounded cluster terms (persistence, sqlite, browser-db-sqlite-persistence). |
| #1376 PR | feat(expo-persistence): add official expo sqlite persistence adapter | closed | n/a | 4 | 2026-03-19T16:28:07Z | Closed artifact matched bounded cluster terms (persistence, sqlite). |
| #1396 PR | chore: consolidate SQLite persistence changesets | closed | n/a | 3 | 2026-03-20T16:43:11Z | Closed artifact matched bounded cluster terms (persistence, sqlite). |
- #1436: “Fixes the
?workerVite import generating a hardcoded absolute path (/assets/opfs-worker-*.js) in the bundled output of@tanstack/browser-db-sqlite-persistence. This path breaks for library consumers unless they manually copy the worke…” - #1351: “Adds op-sqlite persistence to the React Native offline-transactions example app, wiring it up with the persistence layer so todos survive app restarts…”
- #1345: “Adds a complete Electron example app demonstrating offline-first architecture with TanStack DB…”
- Historical items are context only; closed/merged items are not evidence that current behavior is broken.
- Source was the repository closed issues/PRs endpoint, locally filtered by bounded cluster terms; reactions were unavailable in this payload and marked n/a.
- More historical items found; capped at 10.
Grouping attributes: repoArea=query collection, docs, types, transactions; packagesOrAdapters=query-db-collection, TanStack Query, localOnlyCollection, @tanstack/react-db; apisSymbolsDocsExamples=queryCollection, query-db-collection, QueryClient, AND; userFacingWorkflow=queryCollectionOptions, TanStack Query integration.
Open items:
| Item | Title | Status | Labels | Reactions/upvotes | Comments | Updated |
|---|---|---|---|---|---|---|
| #183 | Deepen the integration with Query | OPEN | none | 0 | 3 | 2025-07-31T12:25:03Z |
| #344 | Add Query Invalidation Support to query-db-collection | OPEN | good first issue, query-collection | 1 | 4 | 2026-05-19T06:08:59Z |
| #345 | Add select Option to query-db-collection | OPEN | good first issue, query-collection | 5 | 2 | 2026-05-19T06:09:00Z |
| #346 | Add Initial Data and Query Options Support to query-db-collection | OPEN | good first issue, query-collection | 0 | 1 | 2026-05-19T06:13:00Z |
| #350 | Expose QueryFunctionContext properties (signal, meta) in query-db-collection | OPEN | good first issue, query-collection | 0 | 0 | 2026-05-19T06:09:02Z |
| #436 | Error [QueryCollection] queryClient must be provided. on Tanstack Start's beforeLoad |
OPEN | none | 0 | 2 | 2025-12-26T01:17:31Z |
| #652 | Ability to create collections with parameterized query functions | OPEN | none | 0 | 9 | 2025-11-12T17:31:48Z |
| #901 | Using a syncMode: "on-demand" collection breaks @tanstack/react-query-persist-client persister |
OPEN | none | 0 | 0 | 2025-11-24T22:15:21Z |
Representative snippets:
- #183: “There's a number of options we need to evaluate how to support e.g. refreshing on mount/window focus, etc.”
- #344: “### Background TanStack Query provides
invalidateQueriesto refresh multiple queries by pattern matching. Currently,query-db-collectiononly supports manual refetch per collection. This requires developers to import” - #345: “### Background Many APIs return data wrapped in metadata (pagination info, timestamps, etc.). Currently,
query-db-collectionexpectsqueryFnto return just the array of items. This forces developers to transform data” - #346: “### Background TanStack Query provides several options for data initialization and transformation that are not currently exposed in
query-db-collection. While TanStack DB has its own patterns (like live queries with `.” - #350: “### Background TanStack Query provides a
QueryFunctionContextto query functions with useful properties likesignalfor cancellation andmetafor passing additional context. Currently, query-db-collection passes th”
| Item | Title | State | Reactions/upvotes | Comments | Closed/Merged | Why related |
|---|---|---|---|---|---|---|
| #1568 PR | fix(query-db-collection): forward gcTime from queryCollectionOptions to the underlying query | closed | n/a | 4 | 2026-06-09T07:29:40Z | Closed artifact matched bounded cluster terms (query-db-collection, querycollectionoptions, queryobserver, queryclient). |
| #707 PR | fix(query-db-collection): respect QueryClient defaultOptions when not overriden | closed | n/a | 5 | 2025-10-23T13:36:18Z | Closed artifact matched bounded cluster terms (query-db-collection, querycollectionoptions, queryclient, tanstack query). |
| #870 PR | fix(query-db-collection): implement reference counting for QueryObserver lifecycle | closed | n/a | 6 | 2025-11-22T00:43:28Z | Closed artifact matched bounded cluster terms (query-db-collection, queryobserver, tanstack query, refetch). |
| #712 PR | feat(query-db-collection): expose query state from QueryObserver | closed | n/a | 5 | 2025-10-31T20:04:27Z | Closed artifact matched bounded cluster terms (query-db-collection, queryobserver, tanstack query, refetch). |
| #294 Issue | Add Manual Sync Updates API to @tanstack/query-db-collection | closed | n/a | 5 | 2025-07-31T13:02:48Z | Closed artifact matched bounded cluster terms (query-db-collection, querycollectionoptions, queryclient, tanstack query). |
| #347 Issue | Enhanced Error Handling and Reporting for query-db-collection | closed | n/a | 0 | 2025-09-11T21:21:49Z | Closed artifact matched bounded cluster terms (query-db-collection, querycollectionoptions, queryclient, tanstack query). |
| #1287 PR | fix(query-db-collection): align queryOptions interop types | closed | n/a | 4 | 2026-02-23T13:54:22Z | Closed artifact matched bounded cluster terms (query-db-collection, querycollectionoptions, queryobserver, tanstack query). |
| #821 Issue | Bug: Mutation refetch in on-demand mode re-runs entire query instead of targeting changed items | closed | n/a | 3 | 2025-11-18T14:05:18Z | Closed artifact matched bounded cluster terms (query-db-collection, querycollectionoptions, queryclient, refetch). |
| #381 PR | feat(query-db-collection): support automatic refetch on query invalidation | closed | n/a | 2 | 2025-08-08T05:09:55Z | Closed artifact matched bounded cluster terms (query-db-collection, queryclient, refetch). |
| #998 Issue | staleTime is ignored for syncMode: "on-demand" collections — queries are reused instead of refetched | closed | n/a | 1 | 2026-01-19T08:59:38Z | Closed artifact matched bounded cluster terms (query-db-collection, querycollectionoptions, queryclient, tanstack query). |
- #1568: “The
queryCollectionOptionsconfig exposes agcTimeknob in its type, but the value never reaches the underlying TanStack Query observer. As @fehmer noted on #1546, the devtools panel shows the query falling back to thequeryClientdef…” - #707: “Previously, queryCollectionOptions would set query options (staleTime, retry, retryDelay, refetchInterval, enabled, meta) to undefined even when not provided in the config. This prevented QueryClient's defaultOptions from being used as fall…”
- #870: “Fixes data loss on component remount by implementing reference counting infrastructure for QueryObserver lifecycle management.…”
- Historical items are context only; closed/merged items are not evidence that current behavior is broken.
- Source was the repository closed issues/PRs endpoint, locally filtered by bounded cluster terms; reactions were unavailable in this payload and marked n/a.
- More historical items found; capped at 10.
Grouping attributes: repoArea=query engine, types, react, @tanstack/react-db; packagesOrAdapters=@tanstack/db, @tanstack/query-db-collection, @tanstack/react-db, @tanstack/electric-db-collection; apisSymbolsDocsExamples=useLiveQuery, orderBy, where, and; userFacingWorkflow=Svelte, Solid, live query, docs.
Open items:
| Item | Title | Status | Labels | Reactions/upvotes | Comments | Updated |
|---|---|---|---|---|---|---|
| #316 | Order of method calls matters for orderBy. |
OPEN | documentation, question | 0 | 2 | 2025-07-28T09:11:42Z |
| #317 | Qu: is it correct to assume implicit order preservation? | OPEN | documentation, question | 0 | 3 | 2025-08-25T04:31:51Z |
| #319 | Order by an optional column | OPEN | none | 0 | 2 | 2025-07-28T17:59:19Z |
| #409 | orderBy with nulls on an optional field regression. | OPEN | none | 0 | 2 | 2025-08-14T10:00:20Z |
| #416 | Also optimize ordered queries with composite ordering | OPEN | none | 0 | 0 | 2025-08-18T14:58:18Z |
| #422 | SQL STRING_AGG function in groupBy | OPEN | none | 0 | 1 | 2025-08-19T20:04:28Z |
| #506 | Should AND and OR operators support 0 or more arguments (instead of 2 or more) | OPEN | none | 0 | 5 | 2025-09-08T14:01:54Z |
| #593 | Allow joins with an and() condition |
OPEN | none | 0 | 2 | 2025-09-29T14:58:02Z |
| #799 | Add generic expression helpers to help collection implementors handle ASTs | OPEN | none | 0 | 0 | 2025-11-11T21:14:39Z |
| #809 | Expose the full response from queryFn on utils.queryData | OPEN | none | 1 | 5 | 2025-11-17T18:55:29Z |
| #861 | feat: support compound join conditions with and() (issue #593) | OPEN | none | 6 | 4 | 2026-04-09T23:54:56Z |
| #891 | Add linearlarge example app for syncModes | OPEN | none | 0 | 4 | 2025-11-25T08:24:57Z |
| #944 | Implement auto-registering operators for live queries | OPEN | none | 0 | 6 | 2026-01-19T16:55:33Z |
| #995 | fix: deduplicate joins keys when syncMode: 'on-demand' | OPEN | none | 0 | 4 | 2026-02-10T16:05:03Z |
| #1021 | Prevent JavaScript in query selections | OPEN | none | 0 | 8 | 2026-01-21T11:30:46Z |
| #1106 | Public API for Custom Operators with Factory Helpers | OPEN | none | 0 | 5 | 2026-01-08T23:48:04Z |
| #1128 | Pass in join information into queryFn for on-demand syncMode | OPEN | none | 0 | 5 | 2026-01-19T16:58:15Z |
| #1173 | Add safety limits and diagnostics for ORDER BY + LIMIT infinite loops | OPEN | none | 0 | 5 | 2026-01-27T17:00:59Z |
| #1191 | test: Add regression tests for BTreeIndex infinite loop with undefined keys | OPEN | none | 0 | 4 | 2026-01-29T10:54:49Z |
| #1193 | test: Add regression test for OR queries with mixed indexed/non-indexed fields | OPEN | none | 0 | 5 | 2026-01-28T19:46:02Z |
| #1205 | fix(db): prevent JOIN lazy loading from accumulating duplicate loadedSubsets | OPEN | none | 0 | 1 | 2026-01-30T10:25:13Z |
| #1208 | solid-db useLiveQuery breaks with where + orderBy | OPEN | none | 0 | 3 | 2026-04-08T15:35:12Z |
| #1214 | fix(db): prevent cross-query data contamination in useLiveInfiniteQuery | OPEN | none | 0 | 2 | 2026-02-11T14:40:43Z |
| #1226 | [repro] Test multiple useLiveQuery instances with where + orderBy (issue #1208) | OPEN | none | 0 | 4 | 2026-02-09T10:59:20Z |
| #1397 | queryOnce should preserve SingleResult type from source collection | OPEN | none | 0 | 0 | 2026-03-22T03:07:23Z |
| #1450 | Feature: Compile-time field guards for collection CRUD operations | OPEN | none | 0 | 0 | 2026-04-03T17:43:53Z |
| #1451 | findOne returning Collection in subquery |
OPEN | none | 0 | 1 | 2026-04-23T15:28:37Z |
| #1467 | leftJoin: whole-object Ref extraction loses nullable type (ResultTypeFromSelect missing IsNullableRef check) | OPEN | none | 1 | 1 | 2026-04-14T23:47:50Z |
| #1484 | @tanstack/electric-db-collection SQL compiler loses precedence on 2-arg and/or of nested binary ops |
OPEN | none | 0 | 0 | 2026-04-17T17:22:40Z |
| #1489 | Chained live-query with orderBy misses same-key value updates (TopKState.processElement) |
OPEN | none | 0 | 1 | 2026-06-12T04:36:58Z |
| #1491 | Svelte: toArray sub-queries returning null values when inspected | OPEN | none | 0 | 0 | 2026-04-22T11:24:53Z |
| #1494 | Lazy-join Join requires an index warning blames the wrong collection when a subquery's select field traces across an inner join |
OPEN | none | 1 | 1 | 2026-06-12T04:37:16Z |
| #1502 | optimizeOrExpression silently drops items when one OR branch references an unindexed field | OPEN | none | 1 | 2 | 2026-05-20T11:02:16Z |
| #1511 | types: .select() collapses discriminated union types on object fields |
OPEN | none | 0 | 0 | 2026-05-04T21:13:33Z |
| #1517 | fix(db): a key in BasicIndex/BTreeIndex lives in at most one bucket | OPEN | none | 0 | 3 | 2026-05-05T12:48:29Z |
| #1519 | fix(db): support Temporal values in query comparison operators | OPEN | none | 0 | 1 | 2026-06-16T08:09:20Z |
| #1524 | solid-db rendering issues when not using key named id |
OPEN | none | 0 | 2 | 2026-06-21T06:53:09Z |
| #1550 | fix(db): require all or() branches to be index-optimizable | OPEN | none | 0 | 2 | 2026-05-28T08:03:57Z |
| #1552 | fix(db): avoid undefined enumerable keys in compare options | OPEN | none | 0 | 1 | 2026-05-25T07:42:30Z |
| #1562 | feat(db): partial AND index optimization via residual predicate | OPEN | none | 0 | 2 | 2026-05-28T10:04:14Z |
| #1566 | fix(db): canonicalize inArray value order in normalizeExpressionPaths | OPEN | none | 0 | 3 | 2026-06-02T12:57:15Z |
| #1574 | fix(db): ASCII case fold in upper/lower/ilike | OPEN | none | 0 | 1 | 2026-06-07T08:56:00Z |
| #1581 | test: failing tests for AND/OR queries mixing indexed and non-indexed conditions | OPEN | none | 0 | 2 | 2026-06-22T08:14:43Z |
| #1582 | fix: enforce all where conditions when index optimization is partial | OPEN | none | 0 | 7 | 2026-06-22T15:17:21Z |
| #1583 | perf(electric-db-collection): compile array-column membership to @> (GIN-eligible) | OPEN | none | 0 | 1 | 2026-06-11T11:26:41Z |
| #1590 | leftJoin onto a subquery that itself contains a join returns 0 / undefined join key at initial materialization when the subquery source is indexed and its inner join has an unmatched row (incomplete #501) | OPEN | none | 0 | 0 | 2026-06-14T19:56:14Z |
| #1595 | fix(db): prevent prototype pollution via select() alias paths (#1584) | OPEN | none | 0 | 2 | 2026-06-22T08:07:58Z |
| #1597 | fix(db): preserve discriminated union types through .select() (#1511) | OPEN | none | 0 | 3 | 2026-06-22T15:54:26Z |
Representative snippets:
- #316: “To order by multiple columns, you currently make multiple
orderBycalls. As per https://tanstack.com/db/latest/docs/live-queries#multiple-column-ordering” - #317: “Two questions relating to implicit ordering. I can obviously verify in code but I;m asking about this from a let's document the guarantee POV, partly so we don't accidentally change the behaviour: 1. Is there an implicit”
- #319: “We can currently order by a nullable column but not by an optional column. More details in https://github.com/TanStack/db/pull/314#pullrequestreview-3052698714”
- #409: “I have a component that's ordering with nulls first on an optional
inserted_atfield: ```tsx const { data: threads } = useLiveQuery( (query) => query .from({ thread: threadCollection }) .innerJoin( { membership: member” - #416: “TanStack/db#410 optimizes ordered queries that order on a single field, e.g.
orderBy(({ user }) => user.age). However, we currently do not optimize queries that order on composite fields, e.g. `”
| Item | Title | State | Reactions/upvotes | Comments | Closed/Merged | Why related |
|---|---|---|---|---|---|---|
| #1186 Issue | Infinite loop in BTreeIndex.takeInternal when using orderBy and limit with undefined indexed values |
closed | n/a | 3 | 2026-01-29T16:29:17Z | Closed artifact matched bounded cluster terms (orderby, where, btreeindex, index). |
| #685 Issue | leftJoin + where isUndefined on right field filters out relation but not the row | closed | n/a | 0 | 2026-02-17T13:33:00Z | Closed artifact matched bounded cluster terms (where, join, leftjoin, predicate). |
| #442 PR | keep residual where clause in join predicate pushdown | closed | n/a | 4 | 2025-08-26T10:25:19Z | Closed artifact matched bounded cluster terms (where, join, predicate). |
| #494 Issue | Subquery doesn't work in leftJoin clause with auto indexing | closed | n/a | 2 | 2025-09-04T18:30:58Z | Closed artifact matched bounded cluster terms (join, leftjoin, index). |
| #1187 PR | [repro] BTreeIndex infinite loop with undefined indexed values (issue #1186) | closed | n/a | 9 | 2026-01-29T16:21:44Z | Closed artifact matched bounded cluster terms (orderby, btreeindex, index). |
| #549 PR | Implement prefixed index to remove hashing from joins initial load | closed | n/a | 8 | 2025-09-23T13:48:00Z | Closed artifact matched bounded cluster terms (where, join, index). |
| #668 PR | Predicate Comparison and Merging Utilities for Predicate Push-Down | closed | n/a | 7 | 2025-11-05T11:15:47Z | Closed artifact matched bounded cluster terms (orderby, where, predicate, index). |
| #1254 PR | fix(db): left join where filter on right-side field incorrectly includes unmatched rows | closed | n/a | 6 | 2026-02-17T13:32:59Z | Closed artifact matched bounded cluster terms (where, join, leftjoin). |
| #1243 PR | Pass orderBy and limit to lazy collection loadSubset in joins | closed | n/a | 5 | 2026-06-23T19:49:56Z | Closed artifact matched bounded cluster terms (orderby, where, join). |
| #1536 PR | feat(db): add caseWhen query operator | closed | n/a | 4 | 2026-05-19T16:32:13Z | Closed artifact matched bounded cluster terms (orderby, where, join, leftjoin). |
- #1186: “When a collection contains items where an indexed field (used in
orderBy) evaluates toundefined, and the query uses both.orderBy()and.limit(), theBTreeIndex.takeInternalmethod enters an infinite loop. This happens because `n…” - #685: “When using a left join, applying a
wherepredicate on a right-side field withisUndefined(right?.payload)removes the right side only (setsrighttoundefined) but still returns the left rows. The filter does not exclude the entire …” - #442: “This modifies the optimiser to keep a residual copy of the where clause in place when pushing a predicate down into a left/right/full join ensuring that the semantics of the query are maintained.…”
- Historical items are context only; closed/merged items are not evidence that current behavior is broken.
- Source was the repository closed issues/PRs endpoint, locally filtered by bounded cluster terms; reactions were unavailable in this payload and marked n/a.
- More historical items found; capped at 10.
Grouping attributes: repoArea=query collection, sync, react, vue; packagesOrAdapters=query-db-collection, electric-db-collection, Electric; apisSymbolsDocsExamples=clearError(), isRecovering(), errorCount, QueryCollection.utils.clearError(); environmentRuntimeFrameworkBackend=query-db-collection, electric-db-collection, Electric.
Open items:
| Item | Title | Status | Labels | Reactions/upvotes | Comments | Updated |
|---|---|---|---|---|---|---|
| #538 | Document QueryCollection clearError() throwing behavior | OPEN | query-collection | 0 | 0 | 2025-09-11T23:41:36Z |
| #539 | Clarify QueryCollection clearError() timing semantics | OPEN | query-collection | 0 | 0 | 2025-09-11T23:43:54Z |
| #540 | Add comprehensive tests for QueryCollection error handling edge cases | OPEN | query-collection | 0 | 0 | 2025-09-11T23:45:35Z |
| #672 | Add first-class error tracking to base Collection class | OPEN | none | 0 | 1 | 2025-10-14T10:41:16Z |
Representative snippets:
- #538: “
QueryCollection.utils.clearError()can throw errors when the refetch fails, but this behavior is not documented” - #539: “
clearError()currently resets error state before refetch (optimistic behavior), creating a transient window whereisError()re” - #540: “
clearError()throwing behavior” - #672: “
lastErroranderrorCountin closure variables, exposing them via utility functions (`collection”
| Item | Title | State | Reactions/upvotes | Comments | Closed/Merged | Why related |
|---|---|---|---|---|---|---|
| #1104 | The error is not being cleared properly when a collection returns an empty list | CLOSED issue | not captured | 2 | Closed 2026-01-08 | Directly matches error state clearing behavior around empty query results. |
| #552 | feat: add exact refetch targeting and improve utils.refetch() behavior | CLOSED PR | not captured | 6 | Closed 2025-10-27 | Related to QueryCollection/utils.refetch() behavior, which appears in current cluster terms. |
| #441 | feat: add error tracking and retry methods to query collection utils | CLOSED PR | not captured | 6 | Closed 2025-09-11 | Directly related to QueryCollection error tracking utilities such as lastError, errorCount, retry/clear flows. |
| #537 | Make QueryCollection refetch() target exact query only | CLOSED issue | not captured | 0 | Closed 2025-10-27 | Related through QueryCollection refetch() targeting semantics. |
| #347 | Enhanced Error Handling and Reporting for query-db-collection | CLOSED issue | not captured | 0 | Closed 2025-09-11 | Direct match for query-db-collection error handling/reporting API surface. |
| #742 | Add QueryObserver state utility methods to QueryCollectionUtils | CLOSED PR | not captured | 4 | Closed 2025-11-05 | Related utility-state methods on QueryCollectionUtils; search hit for errorCount lastError. |
| #767 | ci: Version Packages | CLOSED PR | not captured | 0 | Closed 2025-11-05 | Versioning PR found with errorCount lastError; included as release-context only. |
- #1104: “The error is not being cleared properly when a collection returns an empty list.”
- #441: “feat: add error tracking and retry methods to query collection utils.”
- #742: “Add QueryObserver state utility methods to QueryCollectionUtils.”
- GitHub search rate limiting prevented deeper linked-comment expansion and reaction capture.
- Items are historical context only; closed work is not evidence that any current open item is still broken.
- Not capped; 7 related closed items recorded.
Grouping attributes: repoArea=useLiveQuery, query collection, live query, react; packagesOrAdapters=@tanstack/react-db, @tanstack/db, react-db, @tanstack/query-db-collection; apisSymbolsDocsExamples=useLiveQuery, OR, AND, orderBy; userFacingWorkflow=useLiveQuery, React rendering, React reactivity, "Missing getServerSnapshot" Error in NextJS apps.
Open items:
| Item | Title | Status | Labels | Reactions/upvotes | Comments | Updated |
|---|---|---|---|---|---|---|
| #50 | Optional lazy results for the useLiveQuery hook | OPEN | none | 0 | 0 | 2025-05-06T09:47:28Z |
| #126 | Add helpers for fine grained reactivity in React from useLiveQuery | OPEN | none | 0 | 2 | 2025-07-23T19:07:16Z |
| #439 | useLiveQuery with localOnlyCollection does not show changes applied during component mount | OPEN | none | 0 | 1 | 2025-10-04T10:08:06Z |
| #471 | useLiveQuery returning stale results when querying local storage collection | OPEN | none | 0 | 2 | 2025-10-16T07:01:33Z |
| #478 | 🐛 Bug: queryCollection stops re-rendering after rapid inserts with delayed onInsert | OPEN | none | 0 | 0 | 2025-09-01T11:33:45Z |
| #493 | Add Playwright tests for react-db useLiveQuery | OPEN | none | 0 | 0 | 2025-09-03T15:46:28Z |
| #616 | Queries on date has a mutating impact on other queries | OPEN | none | 0 | 0 | 2025-10-01T08:16:29Z |
| #690 | useLiveQuery (react) triggers extra mount re-render when collection is already ready | OPEN | none | 0 | 2 | 2025-10-17T15:42:00Z |
| #1016 | "Missing getServerSnapshot" Error in NextJS apps | OPEN | none | 0 | 1 | 2025-12-14T14:54:39Z |
| #1024 | Nextjs electricsql double rerender | OPEN | none | 0 | 1 | 2025-12-17T00:05:00Z |
| #1178 | react-db's useLiveQuery seems to leave an extra subscriber in StrictMode | OPEN | none | 0 | 2 | 2026-05-04T09:26:24Z |
| #1343 | useLiveSuspenseQuery doesn't work with ErrorBoundary |
OPEN | none | 0 | 0 | 2026-03-08T20:55:42Z |
| #1516 | fix(react-db): refresh live query snapshot after subscribe | OPEN | none | 0 | 2 | 2026-05-05T12:52:05Z |
| #1534 | Title: fix(react-db): add getServerSnapshot to useSyncExternalStore for React 19 SSR | OPEN | none | 0 | 1 | 2026-05-19T06:52:19Z |
| #1564 | Add SSR DbClient and live query identity | OPEN | none | 0 | 6 | 2026-06-19T05:08:15Z |
| #1587 | react-db useLiveQuery can notify React before mount when collection is already ready | OPEN | none | 0 | 0 | 2026-06-12T13:14:43Z |
| #1594 | fix(react-db): defer eager onStoreChange to a microtask in useLiveQuery + regression test (closes #1587) | OPEN | none | 0 | 2 | 2026-06-18T08:23:20Z |
| #1601 | fix(db): emit change on order-only reorder in ordered live queries | OPEN | none | 0 | 6 | 2026-06-22T07:16:35Z |
Representative snippets:
- #50: “Like the non-lazy version, but only triggers a re-render when the length of the results change, or a key moves/changes.”
- #126: “custom component”
- #439: “When inserting into a localOnlyCollection inside a useEffect, useLiveQuery does not return the expected data immediately. However, if the insert/delete calls are wrapped in a setTimeout, the query works as expected. This”
- #471: “Changes to a local storage collection are successfully being persisted to local storage and
useLiveQuerywill return the updated data, but then revert back to the pre-modified data. Refreshing the window/tab then refle” - #478: “When adding artificial latency to onInsert and inserting two items in quick succession, the UI stops re-rendering further updates. A
setIntervallog of the collection state confirms it is correct in memory (but not b”
| Item | Title | State | Reactions/upvotes | Comments | Closed/Merged | Why related |
|---|---|---|---|---|---|---|
| #1414 | createLiveQueryCollection generic type inference lost in 0.6 — useLiveQuery returns {} | CLOSED issue | not captured | 1 | Closed 2026-03-28 | Historical createLiveQueryCollection / useLiveQuery behavior report. |
| #1408 | fix: bump persistence packages to 0.1.3 (fix workspace links) | CLOSED PR | not captured | 2 | Closed 2026-03-25 | Search hit for useLiveQuery react-db; adjacent packaging/release context, lower specificity. |
| #1243 | Pass orderBy and limit to lazy collection loadSubset in joins | CLOSED PR | not captured | 5 | Closed 2026-06-23 | Related to live query ordering/windowed loading behavior that can surface in React render results. |
| #1538 | docs(db): clarify mutate callback is sync-only | CLOSED PR | not captured | 4 | Closed 2026-05-18 | Search hit for useLiveQuery react-db; docs context only, lower specificity. |
| #1544 | docs(db): clarify caseWhen, coalesce, manual transactions, and multi-endpoint behavior | CLOSED PR | not captured | 4 | Closed 2026-05-23 | Docs context touching query behavior; lower-specificity historical artifact. |
| #1569 | chore: add changeset for materialize() helper (#1504) | CLOSED PR | not captured | 4 | Closed 2026-06-04 | Changeset/release context for live query materialization helper; lower specificity. |
| #1596 | ci: Version Packages | CLOSED PR | not captured | 3 | Closed 2026-06-18 | Versioning PR found by useLiveQuery react-db; release-context only. |
- #1414: “createLiveQueryCollection generic type inference lost in 0.6 — useLiveQuery returns {}.”
- #1243: “Pass orderBy and limit to lazy collection loadSubset in joins.”
- #1569: “chore: add changeset for materialize() helper (#1504).”
- GitHub search rate limiting blocked the more targeted follow-up searches for
onStoreChange,queueMicrotask, andgetServerSnapshot; representative coverage is therefore shallow and includes several lower-specificity search hits. - Open Phase 3 items mention abandoned/open PRs such as
#1516,#1534,#1588,#1594, and#1601; those were not counted here because the requested enrichment is closed/merged/abandoned historical context only and their state in the local Phase 2 data is open. - Not capped; 7 related closed items recorded.
Grouping attributes: repoArea=docs, persistence, sync, collection; packagesOrAdapters=@tanstack/db, @tanstack/angular-db, @tanstack/browser-db-sqlite-persistence, @tanstack/capacitor-db-sqlite-persistence; apisSymbolsDocsExamples=AND, OR, Collection, awaitTxId; userFacingWorkflow=transactions, @tanstack/query-db-collection, query-db-collection, offline-first UI.
Open items:
| Item | Title | Status | Labels | Reactions/upvotes | Comments | Updated |
|---|---|---|---|---|---|---|
| #19 | Support for Stable ViewKeys to Prevent UI Re-renders on ID Mapping | OPEN | none | 6 | 4 | 2025-12-18T14:47:11Z |
| #20 | Track Optimistic Status Per Record for Local-Only Query Differentiation | OPEN | none | 0 | 1 | 2025-10-08T20:49:14Z |
| #22 | Support Recoverable Validation Flow for Explicit Transactions | OPEN | none | 0 | 1 | 2025-04-28T17:13:35Z |
| #25 | Handle Shape Evolution Conflicts Across Transactions | OPEN | none | 0 | 0 | 2025-04-28T17:40:37Z |
| #35 | 🧩 Feature Proposal: Add Serialized Transaction Queuing Utility with Strategy Support | OPEN | none | 4 | 1 | 2025-08-28T15:07:27Z |
| #146 | Support for Nested Transactions | OPEN | none | 0 | 1 | 2025-06-07T01:14:09Z |
| #337 | Awaiting txid across multiple collections. | OPEN | documentation, question | 0 | 2 | 2025-07-30T20:47:56Z |
| #456 | Adding server-generated properties to transaction in Collection.onInsert etc. | OPEN | none | 3 | 2 | 2025-08-28T06:21:12Z |
| #465 | Feature Request: Allow default values / computed fields on Persistence Handlers for QueryCollections | OPEN | none | 0 | 2 | 2026-01-03T08:33:19Z |
| #487 | Declaring custom rollback behavior | OPEN | none | 0 | 4 | 2025-09-03T13:08:41Z |
| #661 | Add awaitPersisted() method to wait for record sync | OPEN | none | 0 | 1 | 2026-03-03T00:43:22Z |
| #900 | [PowerSync]: Replacing optimistic state after insert | OPEN | none | 0 | 7 | 2025-11-27T06:16:05Z |
| #996 | Add a way to enforce collection mutations via actions disallowing inline mutations | OPEN | enhancement | 0 | 5 | 2026-02-26T12:39:26Z |
| #1017 | Synced data does not appear in a derived (live query) collection while there is a pending optimistic mutation. | OPEN | none | 0 | 3 | 2026-01-20T09:33:17Z |
| #1048 | collection: option to sync while persisting. | OPEN | none | 0 | 4 | 2025-12-19T07:19:29Z |
| #1060 | usePacedMutations value regression while persisting | OPEN | none | 0 | 0 | 2025-12-21T22:44:20Z |
| #1064 | Fix beforeRetry hook: scheduler not cleared after filtering transactions | OPEN | none | 0 | 1 | 2025-12-30T12:34:38Z |
| #1065 | Expose onlineDetector and add check online status before executing transactions | OPEN | none | 0 | 1 | 2026-01-26T15:50:50Z |
| #1068 | feat: handle delete-insert in transaction merging | OPEN | none | 0 | 5 | 2026-02-15T20:48:35Z |
| #1092 | Add dependencyQueueStrategy to paced mutations | OPEN | none | 0 | 4 | 2026-01-05T21:54:21Z |
| #1122 | @tanstack/electric-db-collection: The pending sync transaction is already committed, you can't commit it again | OPEN | none | 0 | 4 | 2026-02-10T11:57:34Z |
| #1166 | [repro] synced data not appearing in derived collection during pending optimistic mutation (issue #1017) | OPEN | none | 0 | 4 | 2026-01-20T09:23:00Z |
| #1175 | Improve awaitTxId timeout error with diagnostic info | OPEN | none | 0 | 4 | 2026-01-22T23:20:03Z |
| #1215 | docs: Add guide for multiple pending transactions | OPEN | none | 0 | 4 | 2026-02-04T13:11:26Z |
| #1219 | docs: Add transaction submission status tracking guide | OPEN | none | 0 | 4 | 2026-02-06T15:17:54Z |
| #1322 | docs: warn about isPersisted vs isPersisted.promise footgun | OPEN | none | 0 | 1 | 2026-03-03T01:08:02Z |
| #1394 | Feature: effect cursor / startAfter for durable replay | OPEN | none | 0 | 1 | 2026-03-21T15:32:06Z |
| #1405 | feat: cursor-aware effect replay with startAfter gating | OPEN | none | 0 | 5 | 2026-03-26T13:15:23Z |
| #1431 | feat: $pendingOperation virtual prop | OPEN | none | 0 | 3 | 2026-06-23T11:07:56Z |
| #1445 | feat(db): allow externally-provided previousValue in sync update chan… | OPEN | none | 0 | 0 | 2026-05-01T17:53:45Z |
| #1465 | fix(db): clean up optimistic state when server returns a different key | OPEN | none | 0 | 1 | 2026-04-08T23:09:34Z |
| #1476 | Optimistic update transaction failed | OPEN | none | 0 | 0 | 2026-04-14T10:08:54Z |
| #1483 | fix(query-db-collection): preserve in-memory row ownership when hydrating from persisted metadata | OPEN | none | 0 | 1 | 2026-04-16T22:54:57Z |
| #1490 | ReactNativeOnlineDetector sometimes never fires after offline -> online transition | OPEN | none | 0 | 0 | 2026-04-21T21:40:29Z |
| #1497 | fix: invalidate stale predicate-scoped cache entries on manual-sync writes | OPEN | none | 0 | 2 | 2026-06-12T14:31:18Z |
| #1522 | test(transactions): demonstrate ambient tx loss across await in mutate() | OPEN | none | 0 | 0 | 2026-05-11T10:19:04Z |
| #1526 | [PowerSync]: $synced reflects local SQLite persistence, not backend upload status | OPEN | none | 0 | 1 | 2026-06-09T08:28:52Z |
| #1551 | fix(db): skip deletes for unsent keys in filterDuplicateInserts | OPEN | none | 0 | 1 | 2026-05-25T07:40:58Z |
| #1579 | fix: preserve Temporal values in offline transactions | OPEN | none | 0 | 7 | 2026-06-09T22:28:37Z |
| #1592 | feat(offline-transactions): allow overriding the retry policy via config | OPEN | none | 0 | 1 | 2026-06-17T13:35:08Z |
| #1602 | offline-transactions: confirm writes off the serial drain (hold optimistic state through the post-commit sync window) | OPEN | none | 0 | 0 | 2026-06-19T09:05:40Z |
| #1603 | feat(offline-transactions): confirm writes off the serial drain path (confirmWrite hook) | OPEN | none | 0 | 1 | 2026-06-19T09:12:41Z |
Representative snippets:
- #19: “Currently, optimistic inserts use temporary IDs (
tempid) until the server responds with the authoritative ID (realid). When the ID changes, React re-renders the keyed element, ” - #20: “Currently, there is no explicit way to distinguish between records that exist optimistically on the client and those that have been confirmed by the server.”
- #22: “Currently, transaction failures are terminal: if a transaction fails during persistence, it is marked as
failedand rolled back immediately.” - #25: “Optimistic transactions can modify data shape freely:”
- #35: “Introduce a
useSerializedTransactionhook that abstracts common queuing and batching patterns for optimistic transactions in@tanstack/optimistic. This hook simplifies manageme”
| Item | Title | State | Reactions/upvotes | Comments | Closed/Merged | Why related |
|---|---|---|---|---|---|---|
| #817 | exclude 'persisting' transactions from having their optimistic state re-applied during commitPendingTransactions() | CLOSED PR | not captured | 13 | Closed 2025-11-21 | Direct match for transaction commit/optimistic state re-application. |
| #29 | RFC: Explicit Cross-Collection Transactions for TanStack Optimistic | CLOSED issue | not captured | 7 | Closed 2025-05-08 | Historical design discussion for explicit transactions and optimistic workflows. |
| #230 | fix transaction sorting order and enforce them having an id | CLOSED PR | not captured | 4 | Closed 2025-07-06 | Related to transaction ordering/id semantics. |
| #37 | Don't wait for transaction to finish before applying synced transactions | CLOSED PR | not captured | 2 | Closed 2025-05-02 | Directly references applying synced transactions around active transactions. |
| #34 | Remove unnecessary queuing/locking behavior | CLOSED issue | not captured | 2 | Closed 2025-05-02 | Related to transaction queueing/locking behavior. |
| #45 | Lock collections while mutationFn is active | CLOSED issue | not captured | 0 | Closed 2025-05-05 | Related to mutation transaction locking and collection write lifecycle. |
| #1549 | Change events dropped for optimistic→synced transition when Pattern B handler calls writeUpsert | CLOSED issue | not captured | 1 | Closed 2026-05-24 | Direct match for optimistic-to-synced transition, change events, and writeUpsert. |
| #1469 | fix(db): item disappears during optimistic-to-synced transition | CLOSED PR | not captured | 0 | Closed 2026-04-17 | Directly related to optimistic-to-synced item lifecycle. |
| #1464 | Optimistic entities not cleared after insert | CLOSED issue | not captured | 7 | Closed 2026-05-24 | Direct optimistic write cleanup report. |
| #1442 | Optimistic insert not removed when server returns a different key | CLOSED issue | not captured | 3 | Closed 2026-05-24 | Direct optimistic insert/synced server-key transition report. |
- #817: “exclude 'persisting' transactions from having their optimistic state re-applied during commitPendingTransactions().”
- #1549: “Change events dropped for optimistic→synced transition when Pattern B handler calls writeUpsert.”
- #1464: “Optimistic entities not cleared after insert.”
- More historical items were found for
$synced/optimistic writes (#1440,#1561, and adjacent persistence reports); results capped at 10. - GitHub rate limiting prevented reaction capture and merge-vs-closed verification for PRs beyond the closed-state search result.
- Historical items are context only; they do not establish that old fixed behavior is a current bug.
| Item | Title | Status | Labels | Reactions/upvotes | Comments | Updated |
|---|---|---|---|---|---|---|
| #42 | Devtools | OPEN | none | 0 | 0 | 2025-07-16T13:32:22Z |
| #357 | RFC: Simplified Single-Value State Management API for TanStack DB | OPEN | RFC | 13 | 6 | 2025-12-23T15:55:45Z |
| #734 | Add stable viewKey API to prevent UI re-renders during ID transitions | OPEN | none | 1 | 7 | 2026-03-23T06:42:50Z |
| #971 | Allow access ShapeStream for electric collections | OPEN | none | 0 | 7 | 2025-12-05T18:43:10Z |
| #1115 | [Feature Request] Split schema into selectSchema, insertSchema, updateSchema for granular control | OPEN | none | 0 | 8 | 2026-04-18T12:12:17Z |
| #1346 | fix(db): reject preload() promise when collection errors so ErrorBoundary is reached | OPEN | none | 0 | 3 | 2026-04-07T08:48:59Z |
| #1417 | Cannot read properties of undefined (reading 'constructor') at memoizedCreateChangeProxy when reading new nested property | OPEN | none | 0 | 0 | 2026-03-27T12:13:05Z |
| #1452 | persistedCollectionOptions: schema type parameter not inferred, result incompatible with createCollection | OPEN | none | 0 | 1 | 2026-06-22T16:52:41Z |
| #1458 | sqlite-compiler: bare "id" in trigger WHEN clauses breaks DELETE for on-demand PowerSync collections | OPEN | none | 2 | 3 | 2026-05-05T14:28:28Z |
| #1509 | Angular input signals and compiled test setup | OPEN | none | 0 | 0 | 2026-05-02T21:51:27Z |
| #1584 | Prototype Pollution via queryOnce().select() Alias Handling |
OPEN | none | 0 | 1 | 2026-06-19T06:33:53Z |
| #1591 | Unbounded recursion in minusWherePredicates / isWhereSubsetInternal overflows the stack under rapid on-demand subset churn |
OPEN | none | 0 | 1 | 2026-06-18T09:45:34Z |
| #1599 | TypeError: Cannot read properties of undefined (reading 'Symbol(liveQueryInternal)') when calling .update() on a queryCollection | OPEN | none | 0 | 0 | 2026-06-18T17:37:57Z |
Representative snippets:
- #42: “Thinking through the devtools a bit:”
- #357: “## Summary Introduce a slimmed-down API built on top of TanStack DB's collection system that can replace useState, Redux, Zustand, and other state management solutions. Each "item" would be stored as a single value insid”
- #734: “## Summary Fixes #19 Adds built-in support for stable view keys that prevent UI flicker when optimistic inserts transition from temporary IDs to real server-generated IDs. ## The Problem When inserting items with tempora”
- #971: “Add
shapeStreamgetter to ElectricCollectionUtils that allows users to access the underlying ShapeStream instance from an electric collection. This enables access to ShapeStream properties like the shape handle & offse” - #1115: “Currently, the
schemaproperty is used for both validation (on mutations) and type inference, but transformations are not applied to data coming from sync (e.g., ElectricSQL).” - #1346: “useLiveSuspenseQuery”
- #1417: “Describe the bug”
- #1452: “[x] I've validated the bug against the latest version of DB packages”
- #1458: “[x] I've validated the bug against the latest version of DB packages (
@tanstack/powersync-db-collection@0.1.40,@tanstack/db@0.6.2)” - #1509: “[X] I have tested this code locally with
pnpm test.” - #1584: “The query result construction should not modify
Object.prototype.” - #1591: “throws
RangeError: Maximum call stack size exceeded.” - #1599: “Calling .update() on a collection created with createCollection(queryCollectionOptions(...)) throws a TypeError”
| Item | Title | Status | Labels | Reactions/upvotes | Comments | Updated |
|---|---|---|---|---|---|---|
| #411 | wip devtools | OPEN | none | 2 | 3 | 2025-08-28T04:40:03Z |
| #413 | Working with discriminated unions inside of collection causes TS troubles | OPEN | none | 0 | 2 | 2026-02-26T12:46:27Z |
| #545 | Add SSR & RSC Support for @tanstack/react-db | OPEN | none | 0 | 16 | 2026-03-28T10:21:08Z |
| #619 | Deduplicate queries by id |
OPEN | none | 0 | 3 | 2025-10-20T21:10:22Z |
| #634 | refactor the reconciliation process to be simpler and more maintainable | OPEN | none | 0 | 1 | 2025-10-04T02:09:13Z |
| #899 | Also use compare small Uint8Array by content logic for joins | OPEN | none | 0 | 4 | 2025-11-25T13:07:54Z |
| #918 | Automatically start sync when there's any mutations | OPEN | none | 0 | 6 | 2026-04-09T20:38:29Z |
| #1047 | Debugging | OPEN | none | 0 | 4 | 2025-12-19T20:39:35Z |
| #1087 | Learn from Cheng Huang's modernization article | OPEN | none | 0 | 4 | 2026-01-02T16:48:26Z |
| Item | Title | Status | Labels | Reactions/upvotes | Comments | Updated |
|---|---|---|---|---|---|---|
| #544 | Dependency Dashboard | OPEN | none | 0 | 0 | 2026-05-11T16:46:10Z |
| #752 | chore(deps): update dependency vite to v6.4.1 [security] - abandoned | OPEN | dependencies | 0 | 3 | 2026-04-27T18:21:55Z |
| #990 | Please add the project to localfirst landscape | OPEN | none | 0 | 1 | 2025-12-09T10:28:37Z |
| #1089 | merge: Claude/remove redundant unit tests | OPEN | none | 0 | 3 | 2026-01-07T09:02:42Z |
| #1170 | Update baseline-browser-mapping dependency | OPEN | none | 0 | 4 | 2026-01-20T20:11:27Z |
| #1228 | chore(deps): update dependency better-auth to ^1.3.4 [security] | OPEN | dependencies | 0 | 2 | 2026-05-12T11:56:59Z |
| #1248 | chore(deps): update all non-major dependencies | OPEN | dependencies | 0 | 5 | 2026-05-12T12:11:00Z |
| #1319 | Remove deprecated features for the first RC | OPEN | none | 0 | 0 | 2026-03-02T14:45:21Z |
| #1480 | chore(deps): update dependency svelte to v5.53.5 [security] | OPEN | dependencies | 0 | 3 | 2026-05-12T12:02:32Z |
| #1482 | Update RxDB to the latest version | OPEN | none | 0 | 2 | 2026-04-20T12:54:39Z |
| #1506 | chore(deps): lock file maintenance | OPEN | dependencies | 0 | 3 | 2026-05-01T02:12:45Z |
| #1528 | chore: add codeowners | OPEN | none | 0 | 3 | 2026-05-13T20:15:52Z |
| #1530 | security: stricter pnpm config blockExoticSubdeps & trustPolicy | OPEN | none | 0 | 2 | 2026-05-17T14:12:59Z |
| #1545 | chore: enforce pnpm 11 | OPEN | none | 0 | 2 | 2026-05-23T14:04:01Z |
| #1559 | chore: migrate changesets changelog generator | OPEN | none | 0 | 3 | 2026-05-26T18:17:21Z |
| #1613 | chore: update pnpm to 11.9.0 | OPEN | none | 0 | 2 | 2026-06-23T21:56:04Z |
| Item | Title | Status | Labels | Reactions/upvotes | Comments | Updated |
|---|---|---|---|---|---|---|
| #1588 | fix(react-db): defer eager onStoreChange to a microtask in useLiveQuery | OPEN | none | 0 | 1 | 2026-06-12T15:32:25Z |
- GitHub sharding manifest:
/tmp/TanStack-db-open-items/manifest.json - Phase 2 issue ledgers/attributes/snippets:
/tmp/TanStack-db-open-items/analysis/issues/ - Phase 2 PR ledgers/attributes/snippets:
/tmp/TanStack-db-open-items/analysis/prs/ - Phase 3 coverage summary:
/tmp/TanStack-db-open-items/clustering/coverage-summary.md - Phase 3 open item assignments:
/tmp/TanStack-db-open-items/clustering/open-item-cluster-assignments.md - Phase 3 probable clusters:
/tmp/TanStack-db-open-items/clustering/probable-clusters.md - Phase 3 standalone high-signal items:
/tmp/TanStack-db-open-items/clustering/standalone-high-signal-items.md - Phase 3 unclustered/maintenance/unclear buckets:
/tmp/TanStack-db-open-items/clustering/unclustered-maintenance-unclear.md - Phase 3 cluster keywords for historical enrichment:
/tmp/TanStack-db-open-items/clustering/cluster-keywords.json - Phase 3 cluster attribute basis:
/tmp/TanStack-db-open-items/clustering/cluster-attribute-basis.json - Phase 4 historical enrichment directory:
/tmp/TanStack-db-open-items/historical-enrichment/
Historical enrichment files:
/tmp/TanStack-db-open-items/historical-enrichment/collections-schema-derived-data.md/tmp/TanStack-db-open-items/historical-enrichment/docs-examples-onboarding.md/tmp/TanStack-db-open-items/historical-enrichment/durable-session-collection-work.md/tmp/TanStack-db-open-items/historical-enrichment/electric-backend-adapters-sync-metadata.md/tmp/TanStack-db-open-items/historical-enrichment/firebase-collection-integration.md/tmp/TanStack-db-open-items/historical-enrichment/framework-bindings-non-react-adapters.md/tmp/TanStack-db-open-items/historical-enrichment/includes-nested-materialization.md/tmp/TanStack-db-open-items/historical-enrichment/pagination-partitioning-load-subsets.md/tmp/TanStack-db-open-items/historical-enrichment/performance-benchmarks-update-batching.md/tmp/TanStack-db-open-items/historical-enrichment/persistence-electric-sqlite-browser-storage.md/tmp/TanStack-db-open-items/historical-enrichment/query-collection-tanstack-query-option-surface.md/tmp/TanStack-db-open-items/historical-enrichment/query-engine-joins-ordering-predicates.md/tmp/TanStack-db-open-items/historical-enrichment/querycollection-error-state-clearerror.md/tmp/TanStack-db-open-items/historical-enrichment/react-live-query-rendering-lifecycle.md/tmp/TanStack-db-open-items/historical-enrichment/transactions-optimistic-writes-sync-state.md