Created
June 24, 2026 02:53
-
-
Save KyleAMathews/266a6e0c17a7363bd993b0cc14337405 to your computer and use it in GitHub Desktop.
TanStack DB Misfits Survey Signal Observatory
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <!doctype html> | |
| <html lang="en"> | |
| <head> | |
| <meta charset="utf-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1"> | |
| <title>TanStack DB Signal Observatory</title> | |
| <style> | |
| :root{ | |
| --ink:#f3ead7; --muted:#b9ac91; --dim:#726a5b; --bg:#090b0f; --panel:#11151d; --panel2:#17120d; | |
| --amber:#ffb84d; --blue:#72d7ff; --green:#8dffb2; --red:#ff6f61; --line:rgba(255,220,160,.18); | |
| --shadow: 0 24px 80px rgba(0,0,0,.55); | |
| } | |
| *{box-sizing:border-box} html{scroll-behavior:smooth} body{margin:0; background:radial-gradient(circle at 20% 0%, rgba(114,215,255,.14), transparent 32rem), radial-gradient(circle at 90% 12%, rgba(255,184,77,.13), transparent 28rem), linear-gradient(135deg,#090b0f 0%,#11100d 42%,#08090c 100%); color:var(--ink); font:15px/1.45 ui-serif, Georgia, Cambria, serif; min-height:100vh; overflow-x:hidden} | |
| body:before{content:"";position:fixed;inset:0;pointer-events:none;background-image:linear-gradient(rgba(255,255,255,.025) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.02) 1px,transparent 1px);background-size:44px 44px;mask-image:radial-gradient(circle at center,black,transparent 78%)} | |
| body:after{content:"";position:fixed;inset:0;pointer-events:none;opacity:.12;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 160 160' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.55'/%3E%3C/svg%3E")} | |
| button,input{font:inherit} a{color:var(--blue)} | |
| .shell{max-width:1500px;margin:0 auto;padding:28px clamp(16px,3vw,42px) 60px;position:relative;z-index:1}.hero{display:grid;grid-template-columns:minmax(320px,1.1fr) minmax(300px,.9fr);gap:26px;align-items:end;margin-bottom:26px}.eyebrow{color:var(--amber);letter-spacing:.18em;text-transform:uppercase;font:700 12px/1.2 ui-monospace,SFMono-Regular,Menlo,monospace}.title{font-family:Didot,Bodoni 72,Georgia,serif;font-size:clamp(44px,8vw,116px);line-height:.82;letter-spacing:-.07em;margin:12px 0 18px;text-wrap:balance}.title span{color:transparent;background:linear-gradient(100deg,var(--ink),var(--amber) 48%,var(--blue));-webkit-background-clip:text;background-clip:text}.lede{font-size:clamp(16px,1.5vw,22px);color:var(--muted);max-width:820px}.metaCard{border:1px solid var(--line);background:linear-gradient(145deg,rgba(255,255,255,.07),rgba(255,255,255,.025));box-shadow:var(--shadow);border-radius:28px;padding:22px;backdrop-filter:blur(12px)} | |
| .stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.stat{border:1px solid rgba(255,255,255,.09);border-radius:18px;padding:14px;background:rgba(0,0,0,.18)}.stat b{display:block;font:800 30px/1 ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--ink)}.stat small{display:block;color:var(--muted);text-transform:uppercase;letter-spacing:.09em;font:700 10px/1.2 ui-monospace,SFMono-Regular,Menlo,monospace;margin-top:8px}.toolbar{display:flex;gap:10px;flex-wrap:wrap;margin:22px 0}.toolbar input,.toolbar button{border:1px solid var(--line);background:rgba(10,12,16,.72);color:var(--ink);border-radius:999px;padding:10px 14px}.toolbar input{min-width:min(430px,100%);flex:1}.toolbar button{cursor:pointer}.toolbar button.active{background:var(--amber);color:#1b1205;border-color:var(--amber)} | |
| .observatory{display:grid;grid-template-columns:minmax(420px,1fr) 380px;gap:24px;align-items:start}.map{position:relative;min-height:760px;border:1px solid var(--line);border-radius:34px;overflow:hidden;background:radial-gradient(circle at 50% 50%,rgba(255,184,77,.12),transparent 9rem),radial-gradient(circle at 40% 35%,rgba(114,215,255,.11),transparent 18rem),rgba(8,10,13,.72);box-shadow:var(--shadow)}.map svg{position:absolute;inset:0;width:100%;height:100%;opacity:.55}.node{position:absolute;transform:translate(-50%,-50%);width:clamp(150px,14vw,230px);border:1px solid rgba(255,255,255,.13);background:linear-gradient(160deg,rgba(22,28,38,.92),rgba(22,16,10,.88));border-radius:22px;padding:13px;cursor:pointer;text-align:left;color:var(--ink);transition:transform .22s ease,border-color .22s ease,box-shadow .22s ease,opacity .2s}.node:hover,.node:focus{transform:translate(-50%,-50%) scale(1.045);border-color:rgba(255,184,77,.8);box-shadow:0 0 0 1px rgba(255,184,77,.25),0 18px 60px rgba(255,184,77,.14);outline:none}.node.hidden{opacity:.12;pointer-events:none}.node .count{font:900 34px/.9 ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--amber);float:right;margin-left:8px}.node h3{font:700 15px/1.05 ui-serif,Georgia,serif;margin:0 0 10px}.node p{clear:both;margin:0;color:var(--muted);font:11px/1.3 ui-monospace,SFMono-Regular,Menlo,monospace}.node .cap{display:inline-block;margin-top:9px;color:var(--blue)}.side{position:sticky;top:18px}.bucket{margin-bottom:14px;border:1px solid var(--line);background:rgba(0,0,0,.24);border-radius:24px;padding:18px}.bucket h2{font-size:18px;margin:0 0 10px}.bucket ul{margin:0;padding-left:18px;color:var(--muted)} | |
| .drawer{position:fixed;inset:0;z-index:20;display:none}.drawer.open{display:block}.scrim{position:absolute;inset:0;background:rgba(3,4,6,.72);backdrop-filter:blur(10px)}.panel{position:absolute;right:0;top:0;bottom:0;width:min(980px,94vw);background:linear-gradient(155deg,#12161e,#0c0d10 60%,#171007);border-left:1px solid var(--line);box-shadow:-40px 0 100px rgba(0,0,0,.7);padding:28px;overflow:auto}.close{position:sticky;top:0;float:right;z-index:3;border:1px solid var(--line);background:#22180c;color:var(--ink);border-radius:999px;padding:10px 14px;cursor:pointer}.panel h1{font-family:Didot,Bodoni 72,Georgia,serif;font-size:clamp(34px,5vw,72px);line-height:.9;letter-spacing:-.05em;margin:16px 50px 16px 0}.pill{display:inline-flex;gap:6px;align-items:center;border:1px solid var(--line);background:rgba(255,255,255,.04);border-radius:999px;padding:7px 10px;color:var(--muted);font:12px/1 ui-monospace,SFMono-Regular,Menlo,monospace;margin:0 6px 6px 0}.section{border-top:1px solid var(--line);padding-top:20px;margin-top:22px}.section h2{font:800 13px/1 ui-monospace,SFMono-Regular,Menlo,monospace;text-transform:uppercase;letter-spacing:.16em;color:var(--amber)}.grouping{color:var(--muted);font-size:17px}.quote{border-left:3px solid var(--amber);margin:12px 0;padding:8px 0 8px 14px;color:#eadcc3;background:linear-gradient(90deg,rgba(255,184,77,.08),transparent)}.tablewrap{overflow:auto;border:1px solid var(--line);border-radius:18px}table{border-collapse:collapse;width:100%;min-width:760px;background:rgba(0,0,0,.18)}th,td{padding:10px 11px;border-bottom:1px solid rgba(255,255,255,.07);vertical-align:top}th{text-align:left;color:var(--amber);font:700 11px/1 ui-monospace,SFMono-Regular,Menlo,monospace;text-transform:uppercase;letter-spacing:.08em}td{color:var(--muted);font-size:13px}td:first-child,td:nth-child(2){color:var(--ink)}.mini{color:var(--dim);font-size:12px;margin-top:18px}.empty{color:var(--dim);font-style:italic}.fadeIn{animation:rise .55s both}@keyframes rise{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}@media(max-width:980px){.hero,.observatory{grid-template-columns:1fr}.map{min-height:940px}.side{position:static}.node{width:185px}.stats{grid-template-columns:repeat(2,1fr)}} | |
| </style> | |
| </head> | |
| <body> | |
| <div class="shell"> | |
| <header class="hero fadeIn"> | |
| <div><div class="eyebrow">TanStack DB / Misfits Survey</div><h1 class="title">Signal <span>Observatory</span></h1><p class="lede">A one-page explorable map of the open issue and PR signal inventory. Clusters are descriptive groupings, not diagnoses; historical items are context, not current-bug claims.</p></div> | |
| <aside class="metaCard"><div class="stats" id="stats"></div><p class="mini">Survey source: GitHub open items, bounded historical enrichment. Discord/social sources were not collected.</p></aside> | |
| </header> | |
| <nav class="toolbar fadeIn"><input id="search" placeholder="Filter clusters by label, item number, API/package word…"><button id="sortCount" class="active">sort by count</button><button id="sortName">sort by name</button><button id="toggleHist" class="active">historical on</button></nav> | |
| <main class="observatory"><section class="map fadeIn" id="map" aria-label="Cluster map"><svg id="links"></svg></section><aside class="side fadeIn" id="side"></aside></main> | |
| </div> | |
| <div class="drawer" id="drawer"><div class="scrim" data-close></div><article class="panel"><button class="close" data-close>Return to map ✕</button><div id="detail"></div></article></div> | |
| <script id="survey-data" type="application/json">{"stats": {"issues": 137, "prs": 152, "total": 289, "clusters": 15, "standalone": 13, "unclustered": 9, "maintenance": 16, "stale": 1}, "clusters": [{"label": "Collections / schema / derived data", "count": 13, "grouping": "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.", "openItems": [{"Item": "#23", "Title": "Allow Direct Collection Addition to Queries Without Prior Registration", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2025-04-28T17:17:45Z"}, {"Item": "#58", "Title": "Query builder needs a `union` method to combine similar collections into one", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "3", "Comments": "10", "Updated": "2025-11-07T16:45:32Z"}, {"Item": "#172", "Title": "Aggregates only work with groupBy", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2025-06-16T11:43:09Z"}, {"Item": "#237", "Title": "Add support for derived fields", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2025-07-07T21:59:54Z"}, {"Item": "#843", "Title": "Deprecate magic return APIs from collection handlers", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "1", "Comments": "9", "Updated": "2026-01-29T09:39:40Z"}, {"Item": "#1150", "Title": "Add union collections and live query unions", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2026-02-02T19:41:43Z"}, {"Item": "#1225", "Title": "feat(db): add type-level queryable field constraints", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "2", "Updated": "2026-02-11T11:59:42Z"}, {"Item": "#1245", "Title": "Add synced state introspection APIs for conflict detection", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2026-02-12T22:06:24Z"}, {"Item": "#1258", "Title": "Remove Uint8Array content-based equality comparison", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "4", "Updated": "2026-02-18T08:38:20Z"}, {"Item": "#1278", "Title": "Add runtime validation for collection config with helpful error messages", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "4", "Updated": "2026-02-19T23:46:18Z"}, {"Item": "#1375", "Title": "feat: Add meta in queries", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "4", "Updated": "2026-03-26T23:15:10Z"}, {"Item": "#1500", "Title": "feat(db): expose tracked source record subscriptions", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "3", "Updated": "2026-05-06T08:59:29Z"}, {"Item": "#1515", "Title": "[DB] feat: add keyed collection subscriptions", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2026-05-05T01:37:02Z"}], "snippets": [{"item": "#23", "url": "https://github.com/TanStack/db/issues/23", "quote": "Currently, queries must reference collections that have been explicitly registered and assigned an ID."}, {"item": "#58", "url": "https://github.com/TanStack/db/issues/58", "quote": "We want a way to union two or more collections so that they can be used as a single source within a live query."}, {"item": "#172", "url": "https://github.com/TanStack/db/issues/172", "quote": "Currently, aggregates only work with `groupBy` which means we can't write collection-wide aggregates like in this snippet:"}, {"item": "#237", "url": "https://github.com/TanStack/db/issues/237", "quote": "Add support for collection schema to calculate a derived value which cannot be set by a user"}, {"item": "#843", "url": "https://github.com/TanStack/db/pull/843", "quote": "## 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 call `collection.utils.awaitTxId()` o"}], "historical": [{"Item": "[#185](https://github.com/TanStack/db/pull/185)", "Title": "feat: new query syntax", "State": "MERGED", "Reactions/upvotes": "n/a", "Comments": "32", "Closed/Merged": "2025-07-07T13:46:01Z", "Why related": "Matched bounded cluster terms: groupBy aggregate, derived fields, collection validation"}, {"Item": "[#209](https://github.com/TanStack/db/pull/209)", "Title": "Ensure schemas can apply defaults when inserting", "State": "MERGED", "Reactions/upvotes": "n/a", "Comments": "24", "Closed/Merged": "2025-07-15T13:46:38Z", "Why related": "Matched bounded cluster terms: schema queryable"}, {"Item": "[#1183](https://github.com/TanStack/db/pull/1183)", "Title": "Fix: Enable $selected access in orderBy after fn.select", "State": "MERGED", "Reactions/upvotes": "n/a", "Comments": "7", "Closed/Merged": "2026-01-27T16:17:54Z", "Why related": "Matched bounded cluster terms: groupBy aggregate, derived fields"}, {"Item": "[#1537](https://github.com/TanStack/db/pull/1537)", "Title": "feat(db): unionAll operator", "State": "MERGED", "Reactions/upvotes": "n/a", "Comments": "5", "Closed/Merged": "2026-05-21T08:50:44Z", "Why related": "Matched bounded cluster terms: union, groupBy aggregate, derived fields"}, {"Item": "[#1262](https://github.com/TanStack/db/pull/1262)", "Title": "fix(db): use Ref<T, Nullable> for left join select refs instead of Ref<T> \\", "State": "undefined", "Reactions/upvotes": "MERGED", "Comments": "n/a", "Closed/Merged": "7", "Why related": "2026-03-10T15:15:06Z"}, {"Item": "[#1342](https://github.com/TanStack/db/pull/1342)", "Title": "fix(db): infer non-nullable return type from first arg in coalesce()", "State": "MERGED", "Reactions/upvotes": "n/a", "Comments": "9", "Closed/Merged": "2026-03-19T12:09:07Z", "Why related": "Matched bounded cluster terms:"}, {"Item": "[#1274](https://github.com/TanStack/db/pull/1274)", "Title": "fix(db): support aggregates nested inside expressions (#720)", "State": "MERGED", "Reactions/upvotes": "n/a", "Comments": "6", "Closed/Merged": "2026-02-23T09:27:43Z", "Why related": "Matched bounded cluster terms: groupBy aggregate"}, {"Item": "[#1324](https://github.com/TanStack/db/pull/1324)", "Title": "fix(db): throw error when fn.select() is used with groupBy()", "State": "MERGED", "Reactions/upvotes": "n/a", "Comments": "5", "Closed/Merged": "2026-03-09T12:48:58Z", "Why related": "Matched bounded cluster terms: groupBy aggregate, derived fields"}, {"Item": "[#1213](https://github.com/TanStack/db/pull/1213)", "Title": "Virtual props implementation", "State": "MERGED", "Reactions/upvotes": "n/a", "Comments": "7", "Closed/Merged": "2026-03-16T11:18:14Z", "Why related": "Matched bounded cluster terms: derived fields, collection validation"}, {"Item": "[#1536](https://github.com/TanStack/db/pull/1536)", "Title": "feat(db): add caseWhen query operator", "State": "MERGED", "Reactions/upvotes": "n/a", "Comments": "4", "Closed/Merged": "2026-05-19T16:32:13Z", "Why related": "Matched bounded cluster terms: groupBy aggregate, collection validation"}], "historicalSnippets": [{"item": "#185", "url": "https://github.com/TanStack/db/pull/185", "quote": "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: -"}, {"item": "#209", "url": "https://github.com/TanStack/db/pull/209", "quote": "see https://github.com/TanStack/db/issues/207#issuecomment-3006456274 for details"}, {"item": "#1183", "url": "https://github.com/TanStack/db/pull/1183", "quote": "## Summary Fixed `$selected` namespace availability in `orderBy()`, `having()`, and `fn.having()` clauses when using functional select (`fn.select()`). Users can now order and filter by computed/derived fields from functional selects. ## Ro"}], "capped": true, "caveats": ["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."], "x": 92.785, "y": 50.0}, {"label": "Docs / examples / onboarding", "count": 20, "grouping": "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..", "openItems": [{"Item": "#196", "Title": "Things to document", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2025-07-19T15:44:33Z"}, {"Item": "#355", "Title": "Add Migration Guide", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "2", "Comments": "2", "Updated": "2025-08-01T17:48:33Z"}, {"Item": "#923", "Title": "The \"recovery pattern\" in the docs incompatible with live queries", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "3", "Updated": "2026-01-08T10:56:21Z"}, {"Item": "#1041", "Title": "Add queryClient to overview and quick-start docs, along with a few other things that feel like they should be there.", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2025-12-17T22:09:44Z"}, {"Item": "#1080", "Title": "Enhance documentation on Zod codecs", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "2", "Updated": "2025-12-30T16:41:42Z"}, {"Item": "#1206", "Title": "feat: add @tanstack/db-playbook package for AI agent documentation", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "4", "Updated": "2026-02-18T02:53:36Z"}, {"Item": "#1293", "Title": "feat: add playbook skills for AI coding agents", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "4", "Updated": "2026-02-25T21:09:37Z"}, {"Item": "#1296", "Title": "feat: add react action-enforcement example with custom lint rule", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2026-02-25T12:26:41Z"}, {"Item": "#1313", "Title": "Fix React projects example", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2026-03-01T14:13:22Z"}, {"Item": "#1332", "Title": "Skill Feedback: meta-framework (good)", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2026-03-06T16:46:04Z"}, {"Item": "#1333", "Title": "Skill Feedback: db-core collection-setup + mutations + react-db (mixed)", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2026-03-06T18:03:30Z"}, {"Item": "#1334", "Title": "Skill Feedback: react-db (mixed)", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2026-03-06T20:58:17Z"}, {"Item": "#1335", "Title": "Skill Feedback: db-core/collection-setup (mixed)", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2026-03-06T21:09:32Z"}, {"Item": "#1336", "Title": "Skill Feedback: meta-framework (mixed)", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2026-03-06T21:09:33Z"}, {"Item": "#1355", "Title": "Docs: Add pagination approaches for query collections", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "5", "Updated": "2026-05-05T04:27:05Z"}, {"Item": "#1389", "Title": "docs: add comprehensive testing guide for TanStack DB", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "3", "Updated": "2026-03-19T14:01:05Z"}, {"Item": "#1474", "Title": "docs(react-db): add CRITICAL common mistakes to skill", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2026-04-14T13:10:19Z"}, {"Item": "#1477", "Title": "docs: regenerate API documentation", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2026-06-23T19:17:12Z"}, {"Item": "#1508", "Title": "Delete CONTRIBUTING.md reference from README", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2026-05-02T10:11:42Z"}, {"Item": "#1518", "Title": "docs(browser-db-sqlite-persistence): document multi-tab coordinator usage", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2026-05-07T08:09:42Z"}], "snippets": [{"item": "#196", "url": "https://github.com/TanStack/db/issues/196", "quote": "A placeholder for us to add stuff that need documented as they come up:"}, {"item": "#355", "url": "https://github.com/TanStack/db/issues/355", "quote": "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 \ud83d\ude05 https://gist.github.com/alavkx/b93808587ebc62cc2fe7b1eb2bd"}, {"item": "#923", "url": "https://github.com/TanStack/db/issues/923", "quote": "`ts > > if (todoCollection.status === \"error\") { > // Cleanup will stop sync and reset the collection > await todoCollection.cleanup() > > // Collection will automatically restart on next access > todoCollect"}, {"item": "#1041", "url": "https://github.com/TanStack/db/pull/1041", "quote": "## \ud83c\udfaf Changes https://github.com/TanStack/db/issues/1039#issuecomment-3666220011 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"}, {"item": "#1080", "url": "https://github.com/TanStack/db/pull/1080", "quote": "Added explanation and examples for using codecs in Zod."}], "historical": [{"Item": "[#1329](https://github.com/TanStack/db/pull/1329)", "Title": "feat(examples): add wa-sqlite OPFS persistence demo", "State": "MERGED", "Reactions/upvotes": "n/a", "Comments": "10", "Closed/Merged": "2026-03-19T14:16:10Z", "Why related": "Matched bounded cluster terms: examples useLiveQuery"}, {"Item": "[#386](https://github.com/TanStack/db/pull/386)", "Title": "Refactor Ref System with Nested Optional Properties", "State": "MERGED", "Reactions/upvotes": "n/a", "Comments": "6", "Closed/Merged": "2025-09-08T16:59:49Z", "Why related": "Matched bounded cluster terms: documentation migration"}, {"Item": "[#326](https://github.com/TanStack/db/pull/326)", "Title": "docs: enhance installation and add comprehensive quick-start guide", "State": "MERGED", "Reactions/upvotes": "n/a", "Comments": "5", "Closed/Merged": "2025-07-28T23:19:15Z", "Why related": "Matched bounded cluster terms: docs quick-start"}, {"Item": "[#297](https://github.com/TanStack/db/pull/297)", "Title": "feat: replace string-based errors with named error classes for better error handling", "State": "MERGED", "Reactions/upvotes": "n/a", "Comments": "5", "Closed/Merged": "2025-07-21T20:22:38Z", "Why related": "Matched bounded cluster terms: documentation migration"}, {"Item": "[#1357](https://github.com/TanStack/db/pull/1357)", "Title": "React Native Shopping List demo app", "State": "MERGED", "Reactions/upvotes": "n/a", "Comments": "5", "Closed/Merged": "2026-03-25T16:23:53Z", "Why related": "Matched bounded cluster terms: examples useLiveQuery"}, {"Item": "[#581](https://github.com/TanStack/db/pull/581)", "Title": "chore(deps): update all non-major dependencies", "State": "MERGED", "Reactions/upvotes": "n/a", "Comments": "4", "Closed/Merged": "2025-09-22T13:28:44Z", "Why related": "Matched bounded cluster terms: docs quick-start, documentation migration, Zod codecs"}, {"Item": "[#599](https://github.com/TanStack/db/pull/599)", "Title": "chore(deps): update all non-major dependencies", "State": "MERGED", "Reactions/upvotes": "n/a", "Comments": "4", "Closed/Merged": "2025-09-29T22:14:33Z", "Why related": "Matched bounded cluster terms: docs quick-start, documentation migration, Zod codecs"}, {"Item": "[#700](https://github.com/TanStack/db/pull/700)", "Title": "chore(deps): update dependency vite to v6.4.1 [security]", "State": "MERGED", "Reactions/upvotes": "n/a", "Comments": "4", "Closed/Merged": "2025-10-21T09:55:14Z", "Why related": "Matched bounded cluster terms: docs quick-start, documentation migration, examples useLiveQuery"}, {"Item": "[#1257](https://github.com/TanStack/db/pull/1257)", "Title": "Add default 404 page and loading state to project example", "State": "MERGED", "Reactions/upvotes": "n/a", "Comments": "4", "Closed/Merged": "2026-02-18T16:57:24Z", "Why related": "Matched bounded cluster terms: examples useLiveQuery"}, {"Item": "[#1351](https://github.com/TanStack/db/pull/1351)", "Title": "feat(examples): add op-sqlite persistence to React Native offline-transactions demo", "State": "MERGED", "Reactions/upvotes": "n/a", "Comments": "6", "Closed/Merged": "2026-03-19T14:17:20Z", "Why related": "Matched bounded cluster terms: examples useLiveQuery"}], "historicalSnippets": [{"item": "#1329", "url": "https://github.com/TanStack/db/pull/1329", "quote": "## 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"}, {"item": "#386", "url": "https://github.com/TanStack/db/pull/386", "quote": "## \ud83c\udfaf 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. ## \u2728 Key Improvements - **\ud83d\udd17 Ne"}, {"item": "#326", "url": "https://github.com/TanStack/db/pull/326", "quote": "- 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"}], "capped": true, "caveats": ["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."], "x": 86.61125352775136, "y": 61.75142575317712}, {"label": "Durable session / collection work", "count": 2, "grouping": "repoArea=durable; packagesOrAdapters=durable; environmentRuntimeFrameworkBackend=durable; artifactType=docs confusion, design/API proposal.", "openItems": [{"Item": "#975", "Title": "Implement TanStack durable stream DB collection", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2025-12-05T21:11:28Z"}, {"Item": "#1019", "Title": "Durable sessions changes (for reference).", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2025-12-14T21:19:21Z"}], "snippets": [{"item": "#975", "url": "https://github.com/TanStack/db/pull/975", "quote": "\u2026ms 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"}, {"item": "#1019", "url": "https://github.com/TanStack/db/pull/1019", "quote": "These are my local changes, including adding a `durable-stream-db-collection` package, `collect`, `minStr` and `maxStr` aggregation functions. This is not meant to be merged but is meant to be branch you can use to run t"}], "historical": [{"Item": "[#1019](https://github.com/TanStack/db/pull/1019)", "Title": "Durable sessions changes (for reference).", "State": "ABANDONED/REFERENCE BRANCH", "Reactions/upvotes": "n/a", "Comments": "1", "Closed/Merged": "not merged", "Why related": "Explicitly linked cluster artifact; PR body says local changes are for reference and \u201cnot meant to be merged\u201d; includes `durable-stream-db-collection`, `collect`, `minStr`, `maxStr`."}, {"Item": "[#975](https://github.com/TanStack/db/pull/975)", "Title": "Implement TanStack durable stream DB collection", "State": "WIP/UNMERGED", "Reactions/upvotes": "n/a", "Comments": "1", "Closed/Merged": "not merged", "Why related": "Explicitly linked cluster artifact for `@tanstack/durable-stream-db-collection`, Durable Streams JSON mode, offset-resumable sync, batch-level handling."}], "historicalSnippets": [{"item": "#1019", "url": "https://github.com/TanStack/db/pull/1019", "quote": "These are my local changes, including adding a `durable-stream-db-collection` package, `collect`, `minStr` and `maxStr` aggregation functions. This is not meant to be merged..."}, {"item": "#975", "url": "https://github.com/TanStack/db/pull/975", "quote": "Implement @tanstack/durable-stream-db-collection, a TanStack DB collection that syncs data from Durable Streams servers in JSON mode."}], "capped": false, "caveats": ["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."], "x": 81.47726672216437, "y": 75.20299755319789}, {"label": "Electric / backend adapters / sync metadata", "count": 22, "grouping": "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.", "openItems": [{"Item": "#96", "Title": "Expose the original streamOptions in getSyncMetadata?", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2025-05-21T18:06:17Z"}, {"Item": "#103", "Title": "Identifying the table/schema on the backend when ingesting from a generic mutation handler.", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2025-05-21T17:17:26Z"}, {"Item": "#223", "Title": "GC stored txids from electric collections", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2025-07-02T14:08:58Z"}, {"Item": "#368", "Title": "Create rss collection with feed syncing", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "1", "Comments": "2", "Updated": "2025-11-04T13:50:42Z"}, {"Item": "#399", "Title": "electric-db-collection, sync breaks after change", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2025-08-11T10:02:16Z"}, {"Item": "#402", "Title": "Add flexible transaction matching strategies to electric-db-collection", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2025-09-03T19:54:57Z"}, {"Item": "#611", "Title": "Case Sensitive Sorting", "Status": "OPEN", "Labels": "bug", "Reactions/upvotes": "0", "Comments": "2", "Updated": "2026-03-23T06:41:21Z"}, {"Item": "#772", "Title": "E2E Tests for Query-Driven Sync with Predicate Push-Down", "Status": "OPEN", "Labels": "enhancement", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2025-11-06T17:45:47Z"}, {"Item": "#810", "Title": "Query-driven sync fails with HTTP 431 for large IN clauses", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2025-11-13T18:11:21Z"}, {"Item": "#878", "Title": "Supabase x Tanstack DB: How to use it and collection helper explorations", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "3", "Updated": "2025-11-24T14:45:11Z"}, {"Item": "#947", "Title": "feat(electric): add offline persistence adapter for collections", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2025-12-29T12:57:46Z"}, {"Item": "#1006", "Title": "feat(trailbase-db-collection): add syncMode support with comprehensive test coverage", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "9", "Updated": "2026-01-07T09:03:30Z"}, {"Item": "#1058", "Title": "feat: add writeUpsert util to localstorage collection", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "3", "Updated": "2026-01-27T20:15:27Z"}, {"Item": "#1090", "Title": "feat: trailbase syncMode support & e2e test suite", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "6", "Updated": "2026-01-07T19:32:59Z"}, {"Item": "#1176", "Title": "Add debug logging and tests for columnMapper.encode in loadSubset", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "5", "Updated": "2026-01-23T20:43:58Z"}, {"Item": "#1179", "Title": "Add IndexedDB-backed collection for TanStack DB", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2026-01-25T08:44:46Z"}, {"Item": "#1184", "Title": "fix(query-db-collection): forward structuralSharing to QueryObserver", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2026-01-27T00:41:45Z"}, {"Item": "#1185", "Title": "feat(query-db-collection): refetch and network options to QueryObserver", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2026-01-27T10:07:55Z"}, {"Item": "#1194", "Title": "docs: Add investigation of ElectricSQL freeze after shape handle expiration", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "4", "Updated": "2026-01-28T23:59:19Z"}, {"Item": "#1277", "Title": "fix(powersync-db-collection): additional export to make type definitions portable", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2026-02-19T21:41:16Z"}, {"Item": "#1514", "Title": "feat(electric-db-collection): support nested property references in SQL queries", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2026-05-04T22:16:40Z"}, {"Item": "#1540", "Title": "fix(query-db-collection, trailbase-db-collection): add electric path alias for typecheck", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2026-05-19T06:30:45Z"}], "snippets": [{"item": "#96", "url": "https://github.com/TanStack/db/issues/96", "quote": "The ElectricCollection exposes primary key and relation in its sync metadata, set from the streamOptions: https://github.com/TanStack/db/blob/1c318955d7fff533988663863701c95896c3b7"}, {"item": "#103", "url": "https://github.com/TanStack/db/issues/103", "quote": "I have an app with a generic mutation handler as per https://github.com/TanStack/db/blob/main/docs/index.md#2-electricsql-sync"}, {"item": "#223", "url": "https://github.com/TanStack/db/issues/223", "quote": "Right now they store every txid they see synced so that `awaitTxId` works to match against them. This is a (very) slow memory leak. So we should probably GC these eventually. One a"}, {"item": "#368", "url": "https://github.com/TanStack/db/pull/368", "quote": "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"}, {"item": "#399", "url": "https://github.com/TanStack/db/issues/399", "quote": "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"}], "historical": [{"Item": "[#1547](https://github.com/TanStack/db/pull/1547)", "Title": "fix(db): drop stale direct optimistic rows after txid sync", "State": "MERGED", "Reactions/upvotes": "n/a", "Comments": "4", "Closed/Merged": "2026-05-23T13:30:14Z", "Why related": "Matched bounded cluster terms: electric-db-collection, awaitTxId, sync metadata"}, {"Item": "[#1596](https://github.com/TanStack/db/pull/1596)", "Title": "ci: Version Packages", "State": "MERGED", "Reactions/upvotes": "n/a", "Comments": "3", "Closed/Merged": "2026-06-18T21:31:28Z", "Why related": "Matched bounded cluster terms: electric-db-collection, sync metadata, trailbase-db-collection"}, {"Item": "[#1612](https://github.com/TanStack/db/pull/1612)", "Title": "ci: Version Packages", "State": "MERGED", "Reactions/upvotes": "n/a", "Comments": "0", "Closed/Merged": "2026-06-23T19:07:46Z", "Why related": "Matched bounded cluster terms: electric-db-collection, sync metadata, trailbase-db-collection"}, {"Item": "[#1570](https://github.com/TanStack/db/pull/1570)", "Title": "ci: Version Packages", "State": "MERGED", "Reactions/upvotes": "n/a", "Comments": "0", "Closed/Merged": "2026-06-05T18:12:23Z", "Why related": "Matched bounded cluster terms: electric-db-collection, sync metadata, trailbase-db-collection"}, {"Item": "[#1548](https://github.com/TanStack/db/pull/1548)", "Title": "ci: Version Packages", "State": "MERGED", "Reactions/upvotes": "n/a", "Comments": "0", "Closed/Merged": "2026-05-23T14:00:39Z", "Why related": "Matched bounded cluster terms: electric-db-collection, sync metadata, trailbase-db-collection"}, {"Item": "[#1568](https://github.com/TanStack/db/pull/1568)", "Title": "fix(query-db-collection): forward gcTime from queryCollectionOptions to the underlying query", "State": "MERGED", "Reactions/upvotes": "n/a", "Comments": "4", "Closed/Merged": "2026-06-09T07:29:40Z", "Why related": "Matched bounded cluster terms: query-db-collection"}, {"Item": "[#1606](https://github.com/TanStack/db/pull/1606)", "Title": "fix: preload hangs forever after cleanup (#1576)", "State": "MERGED", "Reactions/upvotes": "n/a", "Comments": "3", "Closed/Merged": "2026-06-23T16:58:42Z", "Why related": "Matched bounded cluster terms: sync metadata"}, {"Item": "[#1593](https://github.com/TanStack/db/pull/1593)", "Title": "fix: safe randomUUID helper for non-secure browser contexts", "State": "MERGED", "Reactions/upvotes": "n/a", "Comments": "2", "Closed/Merged": "2026-06-17T20:42:33Z", "Why related": "Matched bounded cluster terms:"}], "historicalSnippets": [{"item": "#1547", "url": "https://github.com/TanStack/db/pull/1547", "quote": "## Summary Fix stale optimistic rows persisting when sync confirms a different server-generated key (e.g., Postgres `GENERATED ALWAYS AS IDENTITY`). After a direct `collection.insert()` with a temporary client ID, the server-assigned row wo"}, {"item": "#1596", "url": "https://github.com/TanStack/db/pull/1596", "quote": "This PR was opened by the [Changesets release](https://github.com/changesets/action) 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"}, {"item": "#1612", "url": "https://github.com/TanStack/db/pull/1612", "quote": "This PR was opened by the [Changesets release](https://github.com/changesets/action) 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"}], "capped": false, "caveats": ["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."], "x": 62.145025587718266, "y": 76.94722603909048}, {"label": "Firebase collection integration", "count": 2, "grouping": "repoArea=firebase, @tanstack/react-db, react, @tanstack/db; packagesOrAdapters=firebase, @tanstack/react-db, react, @tanstack/db; apisSymbolsDocsExamples=useLiveQuery, createCollection, firebaseCollectionOptions, getKey; environmentRuntimeFrameworkBackend=firebase, react.", "openItems": [{"Item": "#323", "Title": "[WIP]: Add Firebase integration", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "1", "Comments": "7", "Updated": "2025-11-13T05:19:47Z"}, {"Item": "#1020", "Title": "Firebase collection", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2025-12-15T01:28:04Z"}], "snippets": [{"item": "#323", "url": "https://github.com/TanStack/db/pull/323", "quote": "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"}, {"item": "#1020", "url": "https://github.com/TanStack/db/pull/1020", "quote": "## \ud83c\udfaf Changes <!-- What changes are made in this PR? Describe the change and its motivation. --> ## \u2705 Checklist - [ ] I have followed the steps in the [Contributing guide](https://github.com/TanStack/db/blob/main/CONTRIBU"}], "historical": [{"Item": "[#876](https://github.com/TanStack/db/pull/876)", "Title": "Finish Firestore integration", "State": "CLOSED", "Reactions/upvotes": "n/a", "Comments": "2", "Closed/Merged": "2025-12-02T21:42:49Z", "Why related": "Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster."}, {"Item": "[#328](https://github.com/TanStack/db/pull/328)", "Title": "docs: improve collection options creator documentation", "State": "MERGED", "Reactions/upvotes": "n/a", "Comments": "4", "Closed/Merged": "2025-07-29T13:52:04Z", "Why related": "Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster."}, {"Item": "[#273](https://github.com/TanStack/db/pull/273)", "Title": "ci: Version Packages", "State": "MERGED", "Reactions/upvotes": "n/a", "Comments": "0", "Closed/Merged": "2025-07-16T20:09:28Z", "Why related": "Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster."}], "historicalSnippets": [{"item": "#876", "url": "https://github.com/TanStack/db/pull/876", "quote": "## \ud83c\udfaf Changes"}, {"item": "#328", "url": "https://github.com/TanStack/db/pull/328", "quote": "## Summary"}, {"item": "#273", "url": "https://github.com/TanStack/db/pull/273", "quote": "This PR was opened by the [Changesets release](https://github.com/changesets/action) 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"}], "capped": false, "caveats": ["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."], "x": 45.0828382423484, "y": 83.7282205765089}, {"label": "Framework bindings / non-React adapters", "count": 17, "grouping": "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..", "openItems": [{"Item": "#5", "Title": "Port tanstack/db to other frameworks", "Status": "OPEN", "Labels": "help wanted", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2025-07-18T13:43:42Z"}, {"Item": "#283", "Title": "refactor: vue", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "13", "Updated": "2025-07-24T03:25:19Z"}, {"Item": "#643", "Title": "Vue implementation", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2026-03-12T06:47:44Z"}, {"Item": "#709", "Title": "feat: Add SSR/RSC support for live queries in @tanstack/react-db", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "7", "Comments": "5", "Updated": "2025-11-04T22:26:17Z"}, {"Item": "#985", "Title": "Prevent Svelte unsafe state mutation in subscription", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2025-12-08T14:50:57Z"}, {"Item": "#1105", "Title": "feat(vue-db): add useLiveInfiniteQuery", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2026-01-08T14:19:36Z"}, {"Item": "#1195", "Title": "Fix: Handle nullable collection getters in svelte-db useLiveQuery", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "2", "Updated": "2026-01-29T05:00:30Z"}, {"Item": "#1196", "Title": "fix(svelte-db): initialize useLiveQuery data synchronously for SSR", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "2", "Updated": "2026-01-29T05:42:33Z"}, {"Item": "#1256", "Title": "draft designs for SSR", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "4", "Updated": "2026-03-16T11:01:49Z"}, {"Item": "#1272", "Title": "[repro] findOne returns array instead of single object in angular-db (issue #1261)", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "4", "Updated": "2026-02-19T14:38:35Z"}, {"Item": "#1302", "Title": "refactor(vue-db): modernize useLiveQuery reactivity and lifecycle patterns", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2026-03-01T06:48:44Z"}, {"Item": "#1447", "Title": "feat(svelte-db): implement useLiveInfiniteQuery for svelte 5", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2026-04-03T13:19:02Z"}, {"Item": "#1513", "Title": "feat(vue-db): implement useLiveInfiniteQuery for vue 3", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2026-05-04T22:08:31Z"}, {"Item": "#1553", "Title": "fix(react-db): let setWindow control limit/offset in useLiveInfiniteQuery", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2026-05-25T07:15:27Z"}, {"Item": "#1598", "Title": "fix(solid-db): set key option to $key when calling reconcile", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2026-06-18T16:15:44Z"}, {"Item": "#1608", "Title": "FIX solid-db, db: bug with solid not remounting with current data due to proxy issues", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2026-06-22T16:20:40Z"}, {"Item": "#1609", "Title": "Solid renderer rework - huge performance gains", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2026-06-22T16:38:15Z"}], "snippets": [{"item": "#5", "url": "https://github.com/TanStack/db/issues/5", "quote": "This should be pretty straightforward as we just use tanstack/store for data & we can copy their framework integrations."}, {"item": "#283", "url": "https://github.com/TanStack/db/pull/283", "quote": "It makes sense to reduce the possible props options."}, {"item": "#643", "url": "https://github.com/TanStack/db/issues/643", "quote": "the vue implementation must match the solid implementation, not the react implementation"}, {"item": "#709", "url": "https://github.com/TanStack/db/pull/709", "quote": "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"}, {"item": "#985", "url": "https://github.com/TanStack/db/pull/985", "quote": "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. ## \ud83c\udfaf"}], "historical": [{"Item": "[#1463](https://github.com/TanStack/db/pull/1463)", "Title": "feat(vue-db): implement `useLiveInfiniteQuery` for vue 3", "State": "CLOSED", "Reactions/upvotes": "n/a", "Comments": "0", "Closed/Merged": "2026-05-04T22:04:08Z", "Why related": "Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster."}, {"Item": "[#666](https://github.com/TanStack/db/pull/666)", "Title": "feat: implement useLiveInfiniteQuery hook for React", "State": "MERGED", "Reactions/upvotes": "n/a", "Comments": "8", "Closed/Merged": "2025-10-15T17:48:26Z", "Why related": "Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster."}, {"Item": "[#1314](https://github.com/TanStack/db/pull/1314)", "Title": "[repro] useLiveInfiniteQuery throws unhelpful error for circular deps (issue #1242)", "State": "CLOSED", "Reactions/upvotes": "n/a", "Comments": "4", "Closed/Merged": "2026-03-02T10:58:39Z", "Why related": "Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster."}, {"Item": "[#1315](https://github.com/TanStack/db/pull/1315)", "Title": "[fix] descriptive error for non-serializable deps in useLiveInfiniteQuery (issue #1242)", "State": "MERGED", "Reactions/upvotes": "n/a", "Comments": "4", "Closed/Merged": "2026-03-02T10:58:24Z", "Why related": "Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster."}, {"Item": "[#1268](https://github.com/TanStack/db/pull/1268)", "Title": "fix(react-db): make getNextPageParam optional in useLiveInfiniteQuery", "State": "MERGED", "Reactions/upvotes": "n/a", "Comments": "7", "Closed/Merged": "2026-03-02T14:39:33Z", "Why related": "Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster."}, {"Item": "[#1269](https://github.com/TanStack/db/pull/1269)", "Title": "fix(react-db): handle rejected/stale setWindow promises in useLiveInfiniteQuery", "State": "MERGED", "Reactions/upvotes": "n/a", "Comments": "3", "Closed/Merged": "2026-03-02T15:56:47Z", "Why related": "Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster."}, {"Item": "[#1210](https://github.com/TanStack/db/pull/1210)", "Title": "fix(react-db): improve useLiveInfiniteQuery pagination and types", "State": "CLOSED", "Reactions/upvotes": "n/a", "Comments": "1", "Closed/Merged": "2026-02-02T09:55:40Z", "Why related": "Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster."}, {"Item": "[#1209](https://github.com/TanStack/db/pull/1209)", "Title": "fix(db): useLiveInfiniteQuery pagination with async on-demand loadSubset", "State": "MERGED", "Reactions/upvotes": "n/a", "Comments": "5", "Closed/Merged": "2026-02-12T21:43:00Z", "Why related": "Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster."}, {"Item": "[#985](https://github.com/TanStack/db/pull/985)", "Title": "Prevent Svelte unsafe state mutation in subscription", "State": "OPEN", "Reactions/upvotes": "n/a", "Comments": "1", "Closed/Merged": "", "Why related": "Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster."}, {"Item": "[#1593](https://github.com/TanStack/db/pull/1593)", "Title": "fix: safe randomUUID helper for non-secure browser contexts", "State": "MERGED", "Reactions/upvotes": "n/a", "Comments": "2", "Closed/Merged": "2026-06-17T20:42:33Z", "Why related": "Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster."}], "historicalSnippets": [{"item": "#1463", "url": "https://github.com/TanStack/db/pull/1463", "quote": "**UPDATE**: superceeded by https://github.com/TanStack/db/pull/1513"}, {"item": "#666", "url": "https://github.com/TanStack/db/pull/666", "quote": "stacked on #669"}, {"item": "#1314", "url": "https://github.com/TanStack/db/pull/1314", "quote": "## Linked issue Closes partially: https://github.com/TanStack/db/issues/1242 ## What the test asserts When `useLiveInfiniteQuery` receives a dependency array containing an object with circular references, it should thro"}], "capped": false, "caveats": ["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."], "x": 29.381563177210328, "y": 75.7460955252576}, {"label": "Includes / nested materialization", "count": 16, "grouping": "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.", "openItems": [{"Item": "#1444", "Title": "TanStack DB \"includes\" ignores orderBy after optimistic update", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2026-04-02T12:28:35Z"}, {"Item": "#1454", "Title": "Duplicate alias in sibling includes silently breaks nested children", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2026-04-04T19:33:51Z"}, {"Item": "#1455", "Title": "fix: duplicate alias in sibling includes silently breaks nested children", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2026-04-06T12:19:45Z"}, {"Item": "#1488", "Title": "on-demand store entries are removed while queries still use them when reusing an existing observer", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2026-04-21T16:47:00Z"}, {"Item": "#1495", "Title": "Nested include flush misclassifies sync-confirmed child updates as inserts, crashing duplicate-key diagnostics", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2026-04-24T12:48:04Z"}, {"Item": "#1496", "Title": "fix(db): includes orderBy ignored after optimistic update on child collection", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2026-06-12T12:32:54Z"}, {"Item": "#1501", "Title": "3-level nested toArray: shared buffer in createPerEntryIncludesStates drops children when correlation keys overlap across parent groups", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2026-04-29T07:44:42Z"}, {"Item": "#1505", "Title": "\"include\" query returning empty array when accessing field", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2026-05-02T10:52:38Z"}, {"Item": "#1510", "Title": "fix(db): live query stuck loading when subquery-in-select inner is cold on-demand", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "2", "Updated": "2026-05-24T17:35:51Z"}, {"Item": "#1532", "Title": "Test/progressive nested fastpath bug", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2026-05-17T21:01:27Z"}, {"Item": "#1533", "Title": "Progressive sync: nested toArray subqueries skip the fast-path snapshot", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2026-05-17T17:48:13Z"}, {"Item": "#1571", "Title": "Include value updates break with solidjs", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2026-06-04T13:03:34Z"}, {"Item": "#1580", "Title": "docs: document materialize() helper for includes subqueries", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "2", "Updated": "2026-06-10T08:00:54Z"}, {"Item": "#1600", "Title": "fix: reconcile duplicate live query child inserts", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "5", "Updated": "2026-06-22T07:43:50Z"}, {"Item": "#1604", "Title": "fix(solid-db): clone rows in syncDataFromCollection so reconcile sees in-place mutations", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "6", "Updated": "2026-06-23T13:30:27Z"}, {"Item": "#1607", "Title": "test(db): failing repro for nested toArray dropped children (#1501)", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "2", "Updated": "2026-06-22T14:08:30Z"}], "snippets": [{"item": "#1444", "url": "https://github.com/TanStack/db/issues/1444", "quote": "If I perform an optimistic update on the parent collection (status), everything works as expected - sorting is applied immediately."}, {"item": "#1454", "url": "https://github.com/TanStack/db/issues/1454", "quote": "[x] I've validated the bug against the latest version of DB packages"}, {"item": "#1455", "url": "https://github.com/TanStack/db/pull/1455", "quote": "Give each includes subquery its own independent D2 graph input:"}, {"item": "#1488", "url": "https://github.com/TanStack/db/issues/1488", "quote": "[x] I've validated the bug against the latest version of DB packages"}, {"item": "#1495", "url": "https://github.com/TanStack/db/issues/1495", "quote": "[x] I've validated the bug against the latest version of DB packages"}], "historical": [{"Item": "[#1504](https://github.com/TanStack/db/pull/1504)", "Title": "feat: add materialize() helper for includes subqueries", "State": "MERGED", "Reactions/upvotes": "n/a", "Comments": "6", "Closed/Merged": "2026-06-04T12:01:23Z", "Why related": "Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster."}, {"Item": "[#1361](https://github.com/TanStack/db/pull/1361)", "Title": "Docs for includes", "State": "MERGED", "Reactions/upvotes": "n/a", "Comments": "4", "Closed/Merged": "2026-04-07T17:36:42Z", "Why related": "Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster."}, {"Item": "[#1312](https://github.com/TanStack/db/pull/1312)", "Title": "Recursive includes exploration", "State": "CLOSED", "Reactions/upvotes": "n/a", "Comments": "6", "Closed/Merged": "2026-03-24T13:21:50Z", "Why related": "Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster."}, {"Item": "[#1472](https://github.com/TanStack/db/pull/1472)", "Title": "fix: pass child where clauses to loadSubset in includes", "State": "MERGED", "Reactions/upvotes": "n/a", "Comments": "3", "Closed/Merged": "2026-04-14T09:24:16Z", "Why related": "Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster."}, {"Item": "[#1471](https://github.com/TanStack/db/pull/1471)", "Title": "fix: lazy load includes child collections in on-demand sync mode", "State": "MERGED", "Reactions/upvotes": "n/a", "Comments": "3", "Closed/Merged": "2026-04-14T09:35:50Z", "Why related": "Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster."}, {"Item": "[#1384](https://github.com/TanStack/db/pull/1384)", "Title": "feat: support concat(toArray(...)) scalar includes", "State": "MERGED", "Reactions/upvotes": "n/a", "Comments": "4", "Closed/Merged": "2026-03-25T12:59:19Z", "Why related": "Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster."}, {"Item": "[#1457](https://github.com/TanStack/db/pull/1457)", "Title": "fix(db): propagate changes through nested toArray includes at depth 3+", "State": "MERGED", "Reactions/upvotes": "n/a", "Comments": "5", "Closed/Merged": "2026-04-07T14:26:06Z", "Why related": "Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster."}, {"Item": "[#1430](https://github.com/TanStack/db/pull/1430)", "Title": "fix: disable GC on child collections created by includes system", "State": "MERGED", "Reactions/upvotes": "n/a", "Comments": "1", "Closed/Merged": "2026-03-30T11:22:48Z", "Why related": "Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster."}, {"Item": "[#1295](https://github.com/TanStack/db/pull/1295)", "Title": "feat: add toArray() for includes subqueries", "State": "MERGED", "Reactions/upvotes": "n/a", "Comments": "6", "Closed/Merged": "2026-03-12T12:06:22Z", "Why related": "Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster."}, {"Item": "[#1569](https://github.com/TanStack/db/pull/1569)", "Title": "chore: add changeset for materialize() helper (#1504)", "State": "MERGED", "Reactions/upvotes": "n/a", "Comments": "4", "Closed/Merged": "2026-06-04T12:10:16Z", "Why related": "Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster."}], "historicalSnippets": [{"item": "#1504", "url": "https://github.com/TanStack/db/pull/1504", "quote": "Closes #1481. ## Summary - Adds `materialize()` \u2014 a single helper for materializing includes subqueries onto parent rows. It resolves to `Array<T>` when the wrapped subquery returns multiple rows, and to `T / undefined"}, {"item": "#1361", "url": "https://github.com/TanStack/db/pull/1361", "quote": "Reverts TanStack/db#1317"}, {"item": "#1312", "url": "https://github.com/TanStack/db/pull/1312", "quote": "## \ud83c\udfaf 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"}], "capped": false, "caveats": ["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."], "x": 16.32552856433879, "y": 67.63831138767404}, {"label": "Pagination / partitioning / load subsets", "count": 18, "grouping": "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.", "openItems": [{"Item": "#21", "Title": "Support Stable Pagination and Deferred Update Handling for Large Query Results", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "1", "Comments": "1", "Updated": "2025-05-22T16:08:37Z"}, {"Item": "#315", "Title": "Partitioned collections", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "12", "Comments": "16", "Updated": "2026-02-22T19:29:11Z"}, {"Item": "#836", "Title": "Support `loadSubset` deduplication in query collection", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "4", "Updated": "2026-02-09T10:39:15Z"}, {"Item": "#863", "Title": "Add collection-level pagination metadata support to avoid wasteful peek-ahead pattern", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "3", "Updated": "2025-11-20T16:54:30Z"}, {"Item": "#968", "Title": "useLiveInfiniteQuery doesn't fetch more data when collection has no more items", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2025-12-04T16:02:57Z"}, {"Item": "#1250", "Title": "bug [upstream]: queryCollection does not refetch in non-windowed environments (Chrome extension, vscode extension)", "Status": "OPEN", "Labels": "wontfix", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2026-02-23T13:02:24Z"}, {"Item": "#1260", "Title": "Live collection error status not working", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2026-02-19T15:19:35Z"}, {"Item": "#1426", "Title": "chore: Rewrite the tests for the loadSubset to cover more clauses and operators", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2026-03-28T11:02:03Z"}, {"Item": "#1493", "Title": "fix(electric-db-collection): preserve persisted rows on progressive resume", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2026-06-06T18:08:24Z"}, {"Item": "#1520", "Title": "fix(db): avoid passing computed orderBy aliases to loadSubset", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2026-05-07T22:33:14Z"}, {"Item": "#1521", "Title": "fix(trailbase-db-collection): handle 403 on subscribe/* with polling fallback", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2026-05-08T13:19:05Z"}, {"Item": "#1554", "Title": "fix(db): deduplicate loadedSubsets and join key requests", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2026-05-25T08:17:43Z"}, {"Item": "#1555", "Title": "fix(db): filter out-of-window SSE inserts in collection-subscriber", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2026-05-25T07:44:22Z"}, {"Item": "#1556", "Title": "fix(db): boundary expansion for multi-column orderBy pagination", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2026-05-25T08:17:38Z"}, {"Item": "#1573", "Title": "fix(query-db-collection): cancel idle on-demand queries", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2026-06-07T08:05:52Z"}, {"Item": "#1575", "Title": "fix(electric): bound refresh wait for on-demand subsets", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "4", "Updated": "2026-06-08T21:24:20Z"}, {"Item": "#1576", "Title": "`preload` after `cleanup` on a collection hangs forever", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2026-06-08T23:49:50Z"}, {"Item": "#1585", "Title": "fix(powersync): Don't flush records when diff trigger isn't setup yet when using `on-demand` mode.", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2026-06-11T08:32:22Z"}], "snippets": [{"item": "#21", "url": "https://github.com/TanStack/db/issues/21", "quote": "In real-time systems, large query results can drift over time as new data arrives or existing data is modified."}, {"item": "#315", "url": "https://github.com/TanStack/db/issues/315", "quote": "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"}, {"item": "#836", "url": "https://github.com/TanStack/db/issues/836", "quote": "`loadSubset` calls inside the query collection because there were some problems with garbage collection of queries which would lead"}, {"item": "#863", "url": "https://github.com/TanStack/db/issues/863", "quote": "`useLiveInfiniteQuery` uses a \"peek ahead\" pattern to determine if there's a next page:"}, {"item": "#968", "url": "https://github.com/TanStack/db/issues/968", "quote": "**Describe the bug**"}], "historical": [{"Item": "[#1243](https://github.com/TanStack/db/pull/1243)", "Title": "Pass orderBy and limit to lazy collection loadSubset in joins", "State": "CLOSED", "Reactions/upvotes": "n/a", "Comments": "5", "Closed/Merged": "2026-06-23T19:49:56Z", "Why related": "Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster."}, {"Item": "[#1352](https://github.com/TanStack/db/pull/1352)", "Title": "fix(db): complete DeduplicatedLoadSubset follow-up coverage", "State": "MERGED", "Reactions/upvotes": "n/a", "Comments": "4", "Closed/Merged": "2026-03-16T09:30:51Z", "Why related": "Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster."}, {"Item": "[#1348](https://github.com/TanStack/db/pull/1348)", "Title": "Fix unbounded expression growth in DeduplicatedLoadSubset", "State": "MERGED", "Reactions/upvotes": "n/a", "Comments": "5", "Closed/Merged": "2026-03-10T22:08:12Z", "Why related": "Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster."}, {"Item": "[#1379](https://github.com/TanStack/db/pull/1379)", "Title": "feat: persisted query metadata for warm-start consistency", "State": "CLOSED", "Reactions/upvotes": "n/a", "Comments": "4", "Closed/Merged": "2026-03-18T10:51:15Z", "Why related": "Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster."}, {"Item": "[#1192](https://github.com/TanStack/db/pull/1192)", "Title": "fix(db): track loadSubset promise for on-demand live queries", "State": "MERGED", "Reactions/upvotes": "n/a", "Comments": "6", "Closed/Merged": "2026-01-29T16:47:44Z", "Why related": "Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster."}, {"Item": "[#1209](https://github.com/TanStack/db/pull/1209)", "Title": "fix(db): useLiveInfiniteQuery pagination with async on-demand loadSubset", "State": "MERGED", "Reactions/upvotes": "n/a", "Comments": "5", "Closed/Merged": "2026-02-12T21:43:00Z", "Why related": "Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster."}, {"Item": "[#1268](https://github.com/TanStack/db/pull/1268)", "Title": "fix(react-db): make getNextPageParam optional in useLiveInfiniteQuery", "State": "MERGED", "Reactions/upvotes": "n/a", "Comments": "7", "Closed/Merged": "2026-03-02T14:39:33Z", "Why related": "Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster."}, {"Item": "[#666](https://github.com/TanStack/db/pull/666)", "Title": "feat: implement useLiveInfiniteQuery hook for React", "State": "MERGED", "Reactions/upvotes": "n/a", "Comments": "8", "Closed/Merged": "2025-10-15T17:48:26Z", "Why related": "Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster."}, {"Item": "[#1101](https://github.com/TanStack/db/pull/1101)", "Title": "Add a wider range of subset queries for TrailBase integation: pagination, ordering, and some where.", "State": "MERGED", "Reactions/upvotes": "n/a", "Comments": "5", "Closed/Merged": "2026-03-16T11:35:30Z", "Why related": "Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster."}, {"Item": "[#412](https://github.com/TanStack/db/pull/412)", "Title": "add support for electric must-refetch", "State": "MERGED", "Reactions/upvotes": "n/a", "Comments": "9", "Closed/Merged": "2025-08-18T08:41:08Z", "Why related": "Closed/merged PR found by bounded search terms; touches package/API/topic named in this cluster."}], "historicalSnippets": [{"item": "#1243", "url": "https://github.com/TanStack/db/pull/1243", "quote": "## \ud83c\udfaf Changes This PR enables the sync layer to optimize data fetching for lazy-loaded collections in join queries by passing `orderBy` and `limit` information to the `loadSubset` method. ### Key Changes: 1. **New `com"}, {"item": "#1352", "url": "https://github.com/TanStack/db/pull/1352", "quote": "## Summary This is a follow-up to [#1348](https://github.com/TanStack/db/pull/1348), which fixed the main unbounded `WHERE` growth bug by separating the request sent to the backend from the predicate recorded for trackin"}, {"item": "#1348", "url": "https://github.com/TanStack/db/pull/1348", "quote": "Fix unbounded WHERE expression growth in `DeduplicatedLoadSubset` when loading all data after accumulating specific predicates \u2014 prevents production 500 errors from oversized query bodies. ## How the bug happens When m"}], "capped": false, "caveats": ["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."], "x": 10.042691545099103, "y": 56.123070639024675}, {"label": "Performance / benchmarks / update batching", "count": 5, "grouping": "repoArea=performance, collection, docs, tests; packagesOrAdapters=@tanstack/db, SortedMap, pnpm, Redux; apisSymbolsDocsExamples=Collection, React, useLiveQuery, orderBy; userFacingWorkflow=performance, reactivity, benchmark.", "openItems": [{"Item": "#24", "Title": "Implement Throttled Update Notifications for Query Reactivity", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "2", "Updated": "2025-04-30T18:31:29Z"}, {"Item": "#43", "Title": "Implement js-framework-benchmark", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2025-05-05T16:50:14Z"}, {"Item": "#445", "Title": "Seeing 40%+ slowness in simple useLiveQuery vs redux selectors when rendering many items", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "2", "Updated": "2025-11-05T18:00:57Z"}, {"Item": "#1542", "Title": "perf: optimize hot paths in persistence, scheduling, and React hooks", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "4", "Updated": "2026-05-20T17:09:14Z"}, {"Item": "#1543", "Title": "fix: O(N^2) insert in SortedMap.set due to Array.splice", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2026-05-21T02:40:19Z"}], "snippets": [{"item": "#24", "url": "https://github.com/TanStack/db/issues/24", "quote": "Currently, every mutation or sync triggers immediate reactivity and query invalidation."}, {"item": "#43", "url": "https://github.com/TanStack/db/issues/43", "quote": "https://github.com/krausest/js-framework-benchmark?tab=readme-ov-file"}, {"item": "#445", "url": "https://github.com/TanStack/db/issues/445", "quote": "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.."}, {"item": "#1542", "url": "https://github.com/TanStack/db/pull/1542", "quote": "## Summary Optimize hot paths across three packages to reduce unnecessary allocations and improve algorithmic complexity. The headline win is in `useLiveQuery` \u2014 status-only consumers (`isReady`, `isLoading`, `status`) n"}, {"item": "#1543", "url": "https://github.com/TanStack/db/pull/1543", "quote": "## Summary - replace `SortedMap`'s array-backed ordered key store with the existing internal `BTree` - preserve existing ordering semantics: key order by default, or comparator order with key tie-breaking when values com"}], "historical": [{"Item": "[#1325](https://github.com/TanStack/db/issues/1325) Issue", "Title": "Performance issues when unmounting useLiveQuery due to excessive setTimeout and clearTimeout calls", "State": "closed", "Reactions/upvotes": "n/a", "Comments": "3", "Closed/Merged": "2026-03-18T13:36:07Z", "Why related": "Closed artifact matched bounded cluster terms (performance, settimeout)."}, {"Item": "[#1029](https://github.com/TanStack/db/pull/1029) PR", "Title": "Fix slow onInsert awaitMatch performance issue", "State": "closed", "Reactions/upvotes": "n/a", "Comments": "4", "Closed/Merged": "2025-12-22T18:05:21Z", "Why related": "Closed artifact matched bounded cluster terms (performance, batch)."}, {"Item": "[#755](https://github.com/TanStack/db/issues/755) Issue", "Title": "localStorageCollectionOptions performance issues", "State": "closed", "Reactions/upvotes": "n/a", "Comments": "2", "Closed/Merged": "2025-11-05T14:02:41Z", "Why related": "Closed artifact matched bounded cluster terms (performance, rendering)."}, {"Item": "[#628](https://github.com/TanStack/db/pull/628) PR", "Title": "Add a scheduler that ensures single batch of changes from live query due to a transaction that touches multiple source collections", "State": "closed", "Reactions/upvotes": "n/a", "Comments": "6", "Closed/Merged": "2025-10-13T11:40:42Z", "Why related": "Closed artifact matched bounded cluster terms (batch)."}, {"Item": "[#1114](https://github.com/TanStack/db/pull/1114) PR", "Title": "fix(db): batch D2 output callbacks to prevent duplicate key errors in joins", "State": "closed", "Reactions/upvotes": "n/a", "Comments": "5", "Closed/Merged": "2026-01-12T18:59:43Z", "Why related": "Closed artifact matched bounded cluster terms (batch)."}, {"Item": "[#430](https://github.com/TanStack/db/pull/430) PR", "Title": "fix performance regression when introducing truncate", "State": "closed", "Reactions/upvotes": "n/a", "Comments": "4", "Closed/Merged": "2025-08-21T07:28:06Z", "Why related": "Closed artifact matched bounded cluster terms (performance)."}, {"Item": "[#378](https://github.com/TanStack/db/pull/378) PR", "Title": "feat: improve writeBatch API to use callback pattern", "State": "closed", "Reactions/upvotes": "n/a", "Comments": "4", "Closed/Merged": "2025-08-04T21:57:43Z", "Why related": "Closed artifact matched bounded cluster terms (batch)."}, {"Item": "[#155](https://github.com/TanStack/db/pull/155) PR", "Title": "refactor collection for fine grained reactivity", "State": "closed", "Reactions/upvotes": "n/a", "Comments": "4", "Closed/Merged": "2025-06-12T16:56:02Z", "Why related": "Closed artifact matched bounded cluster terms (reactivity)."}, {"Item": "[#1326](https://github.com/TanStack/db/pull/1326) PR", "Title": "Use in-memory queue for faster GC registration", "State": "closed", "Reactions/upvotes": "n/a", "Comments": "2", "Closed/Merged": "2026-03-16T12:20:22Z", "Why related": "Closed artifact matched bounded cluster terms (performance, batch, settimeout)."}, {"Item": "[#87](https://github.com/TanStack/db/pull/87) PR", "Title": "rollback batching of transaction commit", "State": "closed", "Reactions/upvotes": "n/a", "Comments": "2", "Closed/Merged": "2025-05-20T13:56:50Z", "Why related": "Closed artifact matched bounded cluster terms (batch)."}], "historicalSnippets": [{"item": "#1325", "url": "https://github.com/TanStack/db/issues/1325", "quote": "Apps with large numbers of live queries, when unmounting them, trigger deferred garbage collection via `setTimeout`. `setTimeout` has a considerable performance impact and looking at the profiler, about half of the entire time spent for a r\u2026"}, {"item": "#1029", "url": "https://github.com/TanStack/db/pull/1029", "quote": "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:\u2026"}, {"item": "#755", "url": "https://github.com/TanStack/db/issues/755", "quote": "I have an app with three collections, all using local storage, and I have massive performance issues.\u2026"}], "capped": true, "caveats": ["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."], "x": 5.121582930257212, "y": 43.12299658124164}, {"label": "Persistence / Electric / SQLite browser storage", "count": 15, "grouping": "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.", "openItems": [{"Item": "#82", "Title": "Offline-First Support", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "42", "Comments": "23", "Updated": "2025-11-20T13:16:56Z"}, {"Item": "#865", "Title": "Persistence of synced data", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "6", "Updated": "2026-04-28T06:41:03Z"}, {"Item": "#1415", "Title": "fix: normalize schema generic in PersistedSyncOptionsResult", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2026-03-26T19:23:28Z"}, {"Item": "#1416", "Title": "useLiveQuery blocks rendering of locally persisted collection when Electric is unavailable", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2026-03-27T11:19:00Z"}, {"Item": "#1443", "Title": "BrowserCollectionCoordinator + Electric adapter: collections never reach ready state", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2026-06-09T04:17:32Z"}, {"Item": "#1453", "Title": "fix(db-sqlite-persistence-core): add schema-aware overloads to persistedCollectionOptions", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2026-04-13T14:02:53Z"}, {"Item": "#1456", "Title": "Data not persisted locally when using @tanstack/browser-db-sqlite-persistence + @tanstack/electric-db-collection doesn't persists data locally", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2026-06-04T12:50:54Z"}, {"Item": "#1478", "Title": "Persisted collection with progressive sync mode wiped on reconnect", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "2", "Updated": "2026-06-02T06:26:44Z"}, {"Item": "#1486", "Title": "BrowserCollectionCoordinator: secondary tabs fail to acquire leadership in multi-tab sessions", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2026-06-02T16:37:56Z"}, {"Item": "#1487", "Title": "fix(sqlite): inline JSON paths for expression indexes", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2026-04-30T20:36:04Z"}, {"Item": "#1498", "Title": "Console flooded with \"Function object could not be cloned\" with multiple persisted tabs", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2026-04-28T03:42:49Z"}, {"Item": "#1499", "Title": "OpSQLiteDriver: executeAsync result format not handled by extractRowsFromStatementResult, causing silent data loss on SELECT queries", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2026-04-28T16:52:02Z"}, {"Item": "#1560", "Title": "fix(expo-db-sqlite-persistence): resolve TS2322 when passing SQLiteDatabase to createExpoSQLitePersistence", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2026-05-27T06:53:35Z"}, {"Item": "#1567", "Title": "SQLite persistence: recover or provide helper for corrupt local DB files", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2026-06-04T04:15:37Z"}, {"Item": "#1589", "Title": "Persisted Electric collection ends up permanently empty: diverging schemaVersions wipe rows, schema reset leaves the resume point behind", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2026-06-12T17:39:32Z"}], "snippets": [{"item": "#82", "url": "https://github.com/TanStack/db/issues/82", "quote": "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"}, {"item": "#865", "url": "https://github.com/TanStack/db/issues/865", "quote": "`@tanstack/offline-transactions`:"}, {"item": "#1415", "url": "https://github.com/TanStack/db/pull/1415", "quote": "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"}, {"item": "#1416", "url": "https://github.com/TanStack/db/issues/1416", "quote": "**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."}, {"item": "#1443", "url": "https://github.com/TanStack/db/issues/1443", "quote": "# BrowserCollectionCoordinator + Electric adapter: collections never reach \"ready\" state"}], "historical": [{"Item": "[#1436](https://github.com/TanStack/db/pull/1436) PR", "Title": "fix(browser-db-sqlite-persistence): use relative path for OPFS worker in bundled output", "State": "closed", "Reactions/upvotes": "n/a", "Comments": "3", "Closed/Merged": "2026-03-31T14:51:36Z", "Why related": "Closed artifact matched bounded cluster terms (persistence, sqlite, browser-db-sqlite-persistence, offline)."}, {"Item": "[#1351](https://github.com/TanStack/db/pull/1351) PR", "Title": "feat(examples): add op-sqlite persistence to React Native offline-transactions demo", "State": "closed", "Reactions/upvotes": "n/a", "Comments": "6", "Closed/Merged": "2026-03-19T14:17:20Z", "Why related": "Closed artifact matched bounded cluster terms (persistence, sqlite, offline)."}, {"Item": "[#1345](https://github.com/TanStack/db/pull/1345) PR", "Title": "feat(examples): Electron offline-first todo app with SQLite persistence", "State": "closed", "Reactions/upvotes": "n/a", "Comments": "4", "Closed/Merged": "2026-03-19T14:17:30Z", "Why related": "Closed artifact matched bounded cluster terms (persistence, sqlite, offline)."}, {"Item": "[#1413](https://github.com/TanStack/db/issues/1413) Issue", "Title": "`browser-db-sqlite-persistence@0.1.4`: absolute path for Worker in bundled code", "State": "closed", "Reactions/upvotes": "n/a", "Comments": "0", "Closed/Merged": "2026-03-31T14:51:38Z", "Why related": "Closed artifact matched bounded cluster terms (persistence, sqlite, browser-db-sqlite-persistence)."}, {"Item": "[#1329](https://github.com/TanStack/db/pull/1329) PR", "Title": "feat(examples): add wa-sqlite OPFS persistence demo", "State": "closed", "Reactions/upvotes": "n/a", "Comments": "10", "Closed/Merged": "2026-03-19T14:16:10Z", "Why related": "Closed artifact matched bounded cluster terms (persistence, sqlite, electric, schema)."}, {"Item": "[#1421](https://github.com/TanStack/db/pull/1421) PR", "Title": "docs: Add db-core/persistence skill and update library version to 0.6.0", "State": "closed", "Reactions/upvotes": "n/a", "Comments": "3", "Closed/Merged": "2026-03-27T21:26:10Z", "Why related": "Closed artifact matched bounded cluster terms (persistence, sqlite, electric, offline)."}, {"Item": "[#1358](https://github.com/TanStack/db/pull/1358) PR", "Title": "feat: SQLite persistence core", "State": "closed", "Reactions/upvotes": "n/a", "Comments": "4", "Closed/Merged": "2026-03-16T12:48:20Z", "Why related": "Closed artifact matched bounded cluster terms (persistence, sqlite, multi-tab)."}, {"Item": "[#1572](https://github.com/TanStack/db/pull/1572) PR", "Title": "feat(sqlite-persistence): prune applied_tx by default with safe replay recovery", "State": "closed", "Reactions/upvotes": "n/a", "Comments": "2", "Closed/Merged": "2026-06-05T17:58:43Z", "Why related": "Closed artifact matched bounded cluster terms (persistence, sqlite, browser-db-sqlite-persistence)."}, {"Item": "[#1376](https://github.com/TanStack/db/pull/1376) PR", "Title": "feat(expo-persistence): add official expo sqlite persistence adapter", "State": "closed", "Reactions/upvotes": "n/a", "Comments": "4", "Closed/Merged": "2026-03-19T16:28:07Z", "Why related": "Closed artifact matched bounded cluster terms (persistence, sqlite)."}, {"Item": "[#1396](https://github.com/TanStack/db/pull/1396) PR", "Title": "chore: consolidate SQLite persistence changesets", "State": "closed", "Reactions/upvotes": "n/a", "Comments": "3", "Closed/Merged": "2026-03-20T16:43:11Z", "Why related": "Closed artifact matched bounded cluster terms (persistence, sqlite)."}], "historicalSnippets": [{"item": "#1436", "url": "https://github.com/TanStack/db/pull/1436", "quote": "Fixes the `?worker` Vite 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\u2026"}, {"item": "#1351", "url": "https://github.com/TanStack/db/pull/1351", "quote": "Adds op-sqlite persistence to the React Native offline-transactions example app, wiring it up with the persistence layer so todos survive app restarts\u2026"}, {"item": "#1345", "url": "https://github.com/TanStack/db/pull/1345", "quote": "Adds a complete Electron example app demonstrating offline-first architecture with TanStack DB\u2026"}], "capped": true, "caveats": ["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."], "x": 16.01230841795413, "y": 32.197826088038376}, {"label": "Query collection / TanStack Query option surface", "count": 8, "grouping": "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.", "openItems": [{"Item": "#183", "Title": "Deepen the integration with Query", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "3", "Updated": "2025-07-31T12:25:03Z"}, {"Item": "#344", "Title": "Add Query Invalidation Support to query-db-collection", "Status": "OPEN", "Labels": "good first issue, query-collection", "Reactions/upvotes": "1", "Comments": "4", "Updated": "2026-05-19T06:08:59Z"}, {"Item": "#345", "Title": "Add select Option to query-db-collection", "Status": "OPEN", "Labels": "good first issue, query-collection", "Reactions/upvotes": "5", "Comments": "2", "Updated": "2026-05-19T06:09:00Z"}, {"Item": "#346", "Title": "Add Initial Data and Query Options Support to query-db-collection", "Status": "OPEN", "Labels": "good first issue, query-collection", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2026-05-19T06:13:00Z"}, {"Item": "#350", "Title": "Expose QueryFunctionContext properties (signal, meta) in query-db-collection", "Status": "OPEN", "Labels": "good first issue, query-collection", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2026-05-19T06:09:02Z"}, {"Item": "#436", "Title": "Error `[QueryCollection] queryClient must be provided.` on Tanstack Start's `beforeLoad`", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "2", "Updated": "2025-12-26T01:17:31Z"}, {"Item": "#652", "Title": "Ability to create collections with parameterized query functions", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "9", "Updated": "2025-11-12T17:31:48Z"}, {"Item": "#901", "Title": "Using a `syncMode: \"on-demand\"` collection breaks `@tanstack/react-query-persist-client` persister", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2025-11-24T22:15:21Z"}], "snippets": [{"item": "#183", "url": "https://github.com/TanStack/db/issues/183", "quote": "There's a number of options we need to evaluate how to support e.g. refreshing on mount/window focus, etc."}, {"item": "#344", "url": "https://github.com/TanStack/db/issues/344", "quote": "### Background TanStack Query provides `invalidateQueries` to refresh multiple queries by pattern matching. Currently, `query-db-collection` only supports manual refetch per collection. This requires developers to import"}, {"item": "#345", "url": "https://github.com/TanStack/db/issues/345", "quote": "### Background Many APIs return data wrapped in metadata (pagination info, timestamps, etc.). Currently, `query-db-collection` expects `queryFn` to return just the array of items. This forces developers to transform data"}, {"item": "#346", "url": "https://github.com/TanStack/db/issues/346", "quote": "### 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 `."}, {"item": "#350", "url": "https://github.com/TanStack/db/issues/350", "quote": "### Background TanStack Query provides a `QueryFunctionContext` to query functions with useful properties like `signal` for cancellation and `meta` for passing additional context. Currently, query-db-collection passes th"}], "historical": [{"Item": "[#1568](https://github.com/TanStack/db/pull/1568) PR", "Title": "fix(query-db-collection): forward gcTime from queryCollectionOptions to the underlying query", "State": "closed", "Reactions/upvotes": "n/a", "Comments": "4", "Closed/Merged": "2026-06-09T07:29:40Z", "Why related": "Closed artifact matched bounded cluster terms (query-db-collection, querycollectionoptions, queryobserver, queryclient)."}, {"Item": "[#707](https://github.com/TanStack/db/pull/707) PR", "Title": "fix(query-db-collection): respect QueryClient defaultOptions when not overriden", "State": "closed", "Reactions/upvotes": "n/a", "Comments": "5", "Closed/Merged": "2025-10-23T13:36:18Z", "Why related": "Closed artifact matched bounded cluster terms (query-db-collection, querycollectionoptions, queryclient, tanstack query)."}, {"Item": "[#870](https://github.com/TanStack/db/pull/870) PR", "Title": "fix(query-db-collection): implement reference counting for QueryObserver lifecycle", "State": "closed", "Reactions/upvotes": "n/a", "Comments": "6", "Closed/Merged": "2025-11-22T00:43:28Z", "Why related": "Closed artifact matched bounded cluster terms (query-db-collection, queryobserver, tanstack query, refetch)."}, {"Item": "[#712](https://github.com/TanStack/db/pull/712) PR", "Title": "feat(query-db-collection): expose query state from QueryObserver", "State": "closed", "Reactions/upvotes": "n/a", "Comments": "5", "Closed/Merged": "2025-10-31T20:04:27Z", "Why related": "Closed artifact matched bounded cluster terms (query-db-collection, queryobserver, tanstack query, refetch)."}, {"Item": "[#294](https://github.com/TanStack/db/issues/294) Issue", "Title": "Add Manual Sync Updates API to @tanstack/query-db-collection", "State": "closed", "Reactions/upvotes": "n/a", "Comments": "5", "Closed/Merged": "2025-07-31T13:02:48Z", "Why related": "Closed artifact matched bounded cluster terms (query-db-collection, querycollectionoptions, queryclient, tanstack query)."}, {"Item": "[#347](https://github.com/TanStack/db/issues/347) Issue", "Title": "Enhanced Error Handling and Reporting for query-db-collection", "State": "closed", "Reactions/upvotes": "n/a", "Comments": "0", "Closed/Merged": "2025-09-11T21:21:49Z", "Why related": "Closed artifact matched bounded cluster terms (query-db-collection, querycollectionoptions, queryclient, tanstack query)."}, {"Item": "[#1287](https://github.com/TanStack/db/pull/1287) PR", "Title": "fix(query-db-collection): align queryOptions interop types", "State": "closed", "Reactions/upvotes": "n/a", "Comments": "4", "Closed/Merged": "2026-02-23T13:54:22Z", "Why related": "Closed artifact matched bounded cluster terms (query-db-collection, querycollectionoptions, queryobserver, tanstack query)."}, {"Item": "[#821](https://github.com/TanStack/db/issues/821) Issue", "Title": "Bug: Mutation refetch in on-demand mode re-runs entire query instead of targeting changed items", "State": "closed", "Reactions/upvotes": "n/a", "Comments": "3", "Closed/Merged": "2025-11-18T14:05:18Z", "Why related": "Closed artifact matched bounded cluster terms (query-db-collection, querycollectionoptions, queryclient, refetch)."}, {"Item": "[#381](https://github.com/TanStack/db/pull/381) PR", "Title": "feat(query-db-collection): support automatic refetch on query invalidation", "State": "closed", "Reactions/upvotes": "n/a", "Comments": "2", "Closed/Merged": "2025-08-08T05:09:55Z", "Why related": "Closed artifact matched bounded cluster terms (query-db-collection, queryclient, refetch)."}, {"Item": "[#998](https://github.com/TanStack/db/issues/998) Issue", "Title": "staleTime is ignored for syncMode: \"on-demand\" collections \u2014 queries are reused instead of refetched", "State": "closed", "Reactions/upvotes": "n/a", "Comments": "1", "Closed/Merged": "2026-01-19T08:59:38Z", "Why related": "Closed artifact matched bounded cluster terms (query-db-collection, querycollectionoptions, queryclient, tanstack query)."}], "historicalSnippets": [{"item": "#1568", "url": "https://github.com/TanStack/db/pull/1568", "quote": "The `queryCollectionOptions` config exposes a `gcTime` knob 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 the `queryClient` def\u2026"}, {"item": "#707", "url": "https://github.com/TanStack/db/pull/707", "quote": "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\u2026"}, {"item": "#870", "url": "https://github.com/TanStack/db/pull/870", "quote": "Fixes data loss on component remount by implementing reference counting infrastructure for QueryObserver lifecycle management.\u2026"}], "capped": true, "caveats": ["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."], "x": 27.639862973518078, "y": 22.07939801665441}, {"label": "Query engine / joins / ordering / predicates", "count": 48, "grouping": "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.", "openItems": [{"Item": "#316", "Title": "Order of method calls matters for `orderBy`.", "Status": "OPEN", "Labels": "documentation, question", "Reactions/upvotes": "0", "Comments": "2", "Updated": "2025-07-28T09:11:42Z"}, {"Item": "#317", "Title": "Qu: is it correct to assume implicit order preservation?", "Status": "OPEN", "Labels": "documentation, question", "Reactions/upvotes": "0", "Comments": "3", "Updated": "2025-08-25T04:31:51Z"}, {"Item": "#319", "Title": "Order by an optional column", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "2", "Updated": "2025-07-28T17:59:19Z"}, {"Item": "#409", "Title": "orderBy with nulls on an optional field regression.", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "2", "Updated": "2025-08-14T10:00:20Z"}, {"Item": "#416", "Title": "Also optimize ordered queries with composite ordering", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2025-08-18T14:58:18Z"}, {"Item": "#422", "Title": "SQL STRING_AGG function in groupBy", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2025-08-19T20:04:28Z"}, {"Item": "#506", "Title": "Should AND and OR operators support 0 or more arguments (instead of 2 or more)", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "5", "Updated": "2025-09-08T14:01:54Z"}, {"Item": "#593", "Title": "Allow joins with an `and()` condition", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "2", "Updated": "2025-09-29T14:58:02Z"}, {"Item": "#799", "Title": "Add generic expression helpers to help collection implementors handle ASTs", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2025-11-11T21:14:39Z"}, {"Item": "#809", "Title": "Expose the full response from queryFn on utils.queryData", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "1", "Comments": "5", "Updated": "2025-11-17T18:55:29Z"}, {"Item": "#861", "Title": "feat: support compound join conditions with and() (issue #593)", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "6", "Comments": "4", "Updated": "2026-04-09T23:54:56Z"}, {"Item": "#891", "Title": "Add linearlarge example app for syncModes", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "4", "Updated": "2025-11-25T08:24:57Z"}, {"Item": "#944", "Title": "Implement auto-registering operators for live queries", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "6", "Updated": "2026-01-19T16:55:33Z"}, {"Item": "#995", "Title": "fix: deduplicate joins keys when syncMode: 'on-demand'", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "4", "Updated": "2026-02-10T16:05:03Z"}, {"Item": "#1021", "Title": "Prevent JavaScript in query selections", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "8", "Updated": "2026-01-21T11:30:46Z"}, {"Item": "#1106", "Title": "Public API for Custom Operators with Factory Helpers", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "5", "Updated": "2026-01-08T23:48:04Z"}, {"Item": "#1128", "Title": "Pass in join information into queryFn for on-demand syncMode", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "5", "Updated": "2026-01-19T16:58:15Z"}, {"Item": "#1173", "Title": "Add safety limits and diagnostics for ORDER BY + LIMIT infinite loops", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "5", "Updated": "2026-01-27T17:00:59Z"}, {"Item": "#1191", "Title": "test: Add regression tests for BTreeIndex infinite loop with undefined keys", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "4", "Updated": "2026-01-29T10:54:49Z"}, {"Item": "#1193", "Title": "test: Add regression test for OR queries with mixed indexed/non-indexed fields", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "5", "Updated": "2026-01-28T19:46:02Z"}, {"Item": "#1205", "Title": "fix(db): prevent JOIN lazy loading from accumulating duplicate loadedSubsets", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2026-01-30T10:25:13Z"}, {"Item": "#1208", "Title": "solid-db useLiveQuery breaks with where + orderBy", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "3", "Updated": "2026-04-08T15:35:12Z"}, {"Item": "#1214", "Title": "fix(db): prevent cross-query data contamination in useLiveInfiniteQuery", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "2", "Updated": "2026-02-11T14:40:43Z"}, {"Item": "#1226", "Title": "[repro] Test multiple useLiveQuery instances with where + orderBy (issue #1208)", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "4", "Updated": "2026-02-09T10:59:20Z"}, {"Item": "#1397", "Title": "queryOnce should preserve SingleResult type from source collection", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2026-03-22T03:07:23Z"}, {"Item": "#1450", "Title": "Feature: Compile-time field guards for collection CRUD operations", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2026-04-03T17:43:53Z"}, {"Item": "#1451", "Title": "`findOne` returning `Collection` in subquery", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2026-04-23T15:28:37Z"}, {"Item": "#1467", "Title": "leftJoin: whole-object Ref extraction loses nullable type (ResultTypeFromSelect missing IsNullableRef check)", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "1", "Comments": "1", "Updated": "2026-04-14T23:47:50Z"}, {"Item": "#1484", "Title": "`@tanstack/electric-db-collection` SQL compiler loses precedence on 2-arg `and`/`or` of nested binary ops", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2026-04-17T17:22:40Z"}, {"Item": "#1489", "Title": "Chained live-query with `orderBy` misses same-key value updates (TopKState.processElement)", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2026-06-12T04:36:58Z"}, {"Item": "#1491", "Title": "Svelte: toArray sub-queries returning null values when inspected", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2026-04-22T11:24:53Z"}, {"Item": "#1494", "Title": "Lazy-join `Join requires an index` warning blames the wrong collection when a subquery's select field traces across an inner join", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "1", "Comments": "1", "Updated": "2026-06-12T04:37:16Z"}, {"Item": "#1502", "Title": "optimizeOrExpression silently drops items when one OR branch references an unindexed field", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "1", "Comments": "2", "Updated": "2026-05-20T11:02:16Z"}, {"Item": "#1511", "Title": "types: `.select()` collapses discriminated union types on object fields", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2026-05-04T21:13:33Z"}, {"Item": "#1517", "Title": "fix(db): a key in BasicIndex/BTreeIndex lives in at most one bucket", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "3", "Updated": "2026-05-05T12:48:29Z"}, {"Item": "#1519", "Title": "fix(db): support Temporal values in query comparison operators", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2026-06-16T08:09:20Z"}, {"Item": "#1524", "Title": "solid-db rendering issues when not using key named `id`", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "2", "Updated": "2026-06-21T06:53:09Z"}, {"Item": "#1550", "Title": "fix(db): require all or() branches to be index-optimizable", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "2", "Updated": "2026-05-28T08:03:57Z"}, {"Item": "#1552", "Title": "fix(db): avoid undefined enumerable keys in compare options", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2026-05-25T07:42:30Z"}, {"Item": "#1562", "Title": "feat(db): partial AND index optimization via residual predicate", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "2", "Updated": "2026-05-28T10:04:14Z"}, {"Item": "#1566", "Title": "fix(db): canonicalize inArray value order in normalizeExpressionPaths", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "3", "Updated": "2026-06-02T12:57:15Z"}, {"Item": "#1574", "Title": "fix(db): ASCII case fold in upper/lower/ilike", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2026-06-07T08:56:00Z"}, {"Item": "#1581", "Title": "test: failing tests for AND/OR queries mixing indexed and non-indexed conditions", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "2", "Updated": "2026-06-22T08:14:43Z"}, {"Item": "#1582", "Title": "fix: enforce all where conditions when index optimization is partial", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "7", "Updated": "2026-06-22T15:17:21Z"}, {"Item": "#1583", "Title": "perf(electric-db-collection): compile array-column membership to @> (GIN-eligible)", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2026-06-11T11:26:41Z"}, {"Item": "#1590", "Title": "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)", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2026-06-14T19:56:14Z"}, {"Item": "#1595", "Title": "fix(db): prevent prototype pollution via select() alias paths (#1584)", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "2", "Updated": "2026-06-22T08:07:58Z"}, {"Item": "#1597", "Title": "fix(db): preserve discriminated union types through .select() (#1511)", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "3", "Updated": "2026-06-22T15:54:26Z"}], "snippets": [{"item": "#316", "url": "https://github.com/TanStack/db/issues/316", "quote": "To order by multiple columns, you currently make multiple `orderBy` calls. As per https://tanstack.com/db/latest/docs/live-queries#multiple-column-ordering"}, {"item": "#317", "url": "https://github.com/TanStack/db/issues/317", "quote": "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"}, {"item": "#319", "url": "https://github.com/TanStack/db/issues/319", "quote": "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"}, {"item": "#409", "url": "https://github.com/TanStack/db/issues/409", "quote": "I have a component that's ordering with nulls first on an optional `inserted_at` field: ```tsx const { data: threads } = useLiveQuery( (query) => query .from({ thread: threadCollection }) .innerJoin( { membership: member"}, {"item": "#416", "url": "https://github.com/TanStack/db/issues/416", "quote": "https://github.com/TanStack/db/pull/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. `"}], "historical": [{"Item": "[#1186](https://github.com/TanStack/db/issues/1186) Issue", "Title": "Infinite loop in `BTreeIndex.takeInternal` when using orderBy and limit with `undefined` indexed values", "State": "closed", "Reactions/upvotes": "n/a", "Comments": "3", "Closed/Merged": "2026-01-29T16:29:17Z", "Why related": "Closed artifact matched bounded cluster terms (orderby, where, btreeindex, index)."}, {"Item": "[#685](https://github.com/TanStack/db/issues/685) Issue", "Title": "leftJoin + where isUndefined on right field filters out relation but not the row", "State": "closed", "Reactions/upvotes": "n/a", "Comments": "0", "Closed/Merged": "2026-02-17T13:33:00Z", "Why related": "Closed artifact matched bounded cluster terms (where, join, leftjoin, predicate)."}, {"Item": "[#442](https://github.com/TanStack/db/pull/442) PR", "Title": "keep residual where clause in join predicate pushdown", "State": "closed", "Reactions/upvotes": "n/a", "Comments": "4", "Closed/Merged": "2025-08-26T10:25:19Z", "Why related": "Closed artifact matched bounded cluster terms (where, join, predicate)."}, {"Item": "[#494](https://github.com/TanStack/db/issues/494) Issue", "Title": "Subquery doesn't work in leftJoin clause with auto indexing", "State": "closed", "Reactions/upvotes": "n/a", "Comments": "2", "Closed/Merged": "2025-09-04T18:30:58Z", "Why related": "Closed artifact matched bounded cluster terms (join, leftjoin, index)."}, {"Item": "[#1187](https://github.com/TanStack/db/pull/1187) PR", "Title": "[repro] BTreeIndex infinite loop with undefined indexed values (issue #1186)", "State": "closed", "Reactions/upvotes": "n/a", "Comments": "9", "Closed/Merged": "2026-01-29T16:21:44Z", "Why related": "Closed artifact matched bounded cluster terms (orderby, btreeindex, index)."}, {"Item": "[#549](https://github.com/TanStack/db/pull/549) PR", "Title": "Implement prefixed index to remove hashing from joins initial load", "State": "closed", "Reactions/upvotes": "n/a", "Comments": "8", "Closed/Merged": "2025-09-23T13:48:00Z", "Why related": "Closed artifact matched bounded cluster terms (where, join, index)."}, {"Item": "[#668](https://github.com/TanStack/db/pull/668) PR", "Title": "Predicate Comparison and Merging Utilities for Predicate Push-Down", "State": "closed", "Reactions/upvotes": "n/a", "Comments": "7", "Closed/Merged": "2025-11-05T11:15:47Z", "Why related": "Closed artifact matched bounded cluster terms (orderby, where, predicate, index)."}, {"Item": "[#1254](https://github.com/TanStack/db/pull/1254) PR", "Title": "fix(db): left join where filter on right-side field incorrectly includes unmatched rows", "State": "closed", "Reactions/upvotes": "n/a", "Comments": "6", "Closed/Merged": "2026-02-17T13:32:59Z", "Why related": "Closed artifact matched bounded cluster terms (where, join, leftjoin)."}, {"Item": "[#1243](https://github.com/TanStack/db/pull/1243) PR", "Title": "Pass orderBy and limit to lazy collection loadSubset in joins", "State": "closed", "Reactions/upvotes": "n/a", "Comments": "5", "Closed/Merged": "2026-06-23T19:49:56Z", "Why related": "Closed artifact matched bounded cluster terms (orderby, where, join)."}, {"Item": "[#1536](https://github.com/TanStack/db/pull/1536) PR", "Title": "feat(db): add caseWhen query operator", "State": "closed", "Reactions/upvotes": "n/a", "Comments": "4", "Closed/Merged": "2026-05-19T16:32:13Z", "Why related": "Closed artifact matched bounded cluster terms (orderby, where, join, leftjoin)."}], "historicalSnippets": [{"item": "#1186", "url": "https://github.com/TanStack/db/issues/1186", "quote": "When a collection contains items where an indexed field (used in `orderBy`) evaluates to `undefined`, and the query uses both `.orderBy()` and `.limit()`, the `BTreeIndex.takeInternal` method enters an infinite loop. This happens because `n\u2026"}, {"item": "#685", "url": "https://github.com/TanStack/db/issues/685", "quote": "When using a left join, applying a `where` predicate on a right-side field with `isUndefined(right?.payload)` removes the right side only (sets `right` to `undefined`) but still returns the left rows. The filter does not exclude the entire \u2026"}, {"item": "#442", "url": "https://github.com/TanStack/db/pull/442", "quote": "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.\u2026"}], "capped": true, "caveats": ["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."], "x": 46.94347455740291, "y": 29.035487021511415}, {"label": "QueryCollection error state / clearError", "count": 4, "grouping": "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.", "openItems": [{"Item": "#538", "Title": "Document QueryCollection clearError() throwing behavior", "Status": "OPEN", "Labels": "query-collection", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2025-09-11T23:41:36Z"}, {"Item": "#539", "Title": "Clarify QueryCollection clearError() timing semantics", "Status": "OPEN", "Labels": "query-collection", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2025-09-11T23:43:54Z"}, {"Item": "#540", "Title": "Add comprehensive tests for QueryCollection error handling edge cases", "Status": "OPEN", "Labels": "query-collection", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2025-09-11T23:45:35Z"}, {"Item": "#672", "Title": "Add first-class error tracking to base Collection class", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2025-10-14T10:41:16Z"}], "snippets": [{"item": "#538", "url": "https://github.com/TanStack/db/issues/538", "quote": "`QueryCollection.utils.clearError()` can throw errors when the refetch fails, but this behavior is not documented"}, {"item": "#539", "url": "https://github.com/TanStack/db/issues/539", "quote": "`clearError()` currently resets error state **before** refetch (optimistic behavior), creating a transient window where `isError()` re"}, {"item": "#540", "url": "https://github.com/TanStack/db/issues/540", "quote": "`clearError()` throwing behavior"}, {"item": "#672", "url": "https://github.com/TanStack/db/issues/672", "quote": "`lastError` and `errorCount` in closure variables, exposing them via utility functions (`collection"}], "historical": [{"Item": "[#1104](https://github.com/TanStack/db/issues/1104)", "Title": "The error is not being cleared properly when a collection returns an empty list", "State": "CLOSED issue", "Reactions/upvotes": "not captured", "Comments": "2", "Closed/Merged": "Closed 2026-01-08", "Why related": "Directly matches error state clearing behavior around empty query results."}, {"Item": "[#552](https://github.com/TanStack/db/pull/552)", "Title": "feat: add exact refetch targeting and improve utils.refetch() behavior", "State": "CLOSED PR", "Reactions/upvotes": "not captured", "Comments": "6", "Closed/Merged": "Closed 2025-10-27", "Why related": "Related to `QueryCollection`/`utils.refetch()` behavior, which appears in current cluster terms."}, {"Item": "[#441](https://github.com/TanStack/db/pull/441)", "Title": "feat: add error tracking and retry methods to query collection utils", "State": "CLOSED PR", "Reactions/upvotes": "not captured", "Comments": "6", "Closed/Merged": "Closed 2025-09-11", "Why related": "Directly related to `QueryCollection` error tracking utilities such as `lastError`, `errorCount`, retry/clear flows."}, {"Item": "[#537](https://github.com/TanStack/db/issues/537)", "Title": "Make QueryCollection refetch() target exact query only", "State": "CLOSED issue", "Reactions/upvotes": "not captured", "Comments": "0", "Closed/Merged": "Closed 2025-10-27", "Why related": "Related through `QueryCollection` `refetch()` targeting semantics."}, {"Item": "[#347](https://github.com/TanStack/db/issues/347)", "Title": "Enhanced Error Handling and Reporting for query-db-collection", "State": "CLOSED issue", "Reactions/upvotes": "not captured", "Comments": "0", "Closed/Merged": "Closed 2025-09-11", "Why related": "Direct match for `query-db-collection` error handling/reporting API surface."}, {"Item": "[#742](https://github.com/TanStack/db/pull/742)", "Title": "Add QueryObserver state utility methods to QueryCollectionUtils", "State": "CLOSED PR", "Reactions/upvotes": "not captured", "Comments": "4", "Closed/Merged": "Closed 2025-11-05", "Why related": "Related utility-state methods on `QueryCollectionUtils`; search hit for `errorCount lastError`."}, {"Item": "[#767](https://github.com/TanStack/db/pull/767)", "Title": "ci: Version Packages", "State": "CLOSED PR", "Reactions/upvotes": "not captured", "Comments": "0", "Closed/Merged": "Closed 2025-11-05", "Why related": "Versioning PR found with `errorCount lastError`; included as release-context only."}], "historicalSnippets": [{"item": "#1104", "url": "https://github.com/TanStack/db/issues/1104", "quote": "The error is not being cleared properly when a collection returns an empty list."}, {"item": "#441", "url": "https://github.com/TanStack/db/pull/441", "quote": "feat: add error tracking and retry methods to query collection utils."}, {"item": "#742", "url": "https://github.com/TanStack/db/pull/742", "quote": "Add QueryObserver state utility methods to QueryCollectionUtils."}], "capped": false, "caveats": ["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."], "x": 64.29741146810225, "y": 18.27651507944104}, {"label": "React live query rendering / lifecycle", "count": 18, "grouping": "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.", "openItems": [{"Item": "#50", "Title": "Optional lazy results for the useLiveQuery hook", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2025-05-06T09:47:28Z"}, {"Item": "#126", "Title": "Add helpers for fine grained reactivity in React from useLiveQuery", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "2", "Updated": "2025-07-23T19:07:16Z"}, {"Item": "#439", "Title": "useLiveQuery with localOnlyCollection does not show changes applied during component mount", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2025-10-04T10:08:06Z"}, {"Item": "#471", "Title": "useLiveQuery returning stale results when querying local storage collection", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "2", "Updated": "2025-10-16T07:01:33Z"}, {"Item": "#478", "Title": "\ud83d\udc1b Bug: \u2060queryCollection stops re-rendering after rapid inserts with delayed \u2060onInsert", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2025-09-01T11:33:45Z"}, {"Item": "#493", "Title": "Add Playwright tests for react-db useLiveQuery", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2025-09-03T15:46:28Z"}, {"Item": "#616", "Title": "Queries on date has a mutating impact on other queries", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2025-10-01T08:16:29Z"}, {"Item": "#690", "Title": "useLiveQuery (react) triggers extra mount re-render when collection is already ready", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "2", "Updated": "2025-10-17T15:42:00Z"}, {"Item": "#1016", "Title": "\"Missing getServerSnapshot\" Error in NextJS apps", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2025-12-14T14:54:39Z"}, {"Item": "#1024", "Title": "Nextjs electricsql double rerender", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2025-12-17T00:05:00Z"}, {"Item": "#1178", "Title": "react-db's useLiveQuery seems to leave an extra subscriber in StrictMode", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "2", "Updated": "2026-05-04T09:26:24Z"}, {"Item": "#1343", "Title": "`useLiveSuspenseQuery` doesn't work with `ErrorBoundary`", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2026-03-08T20:55:42Z"}, {"Item": "#1516", "Title": "fix(react-db): refresh live query snapshot after subscribe", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "2", "Updated": "2026-05-05T12:52:05Z"}, {"Item": "#1534", "Title": "Title: fix(react-db): add getServerSnapshot to useSyncExternalStore for React 19 SSR", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2026-05-19T06:52:19Z"}, {"Item": "#1564", "Title": "Add SSR DbClient and live query identity", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "6", "Updated": "2026-06-19T05:08:15Z"}, {"Item": "#1587", "Title": "react-db useLiveQuery can notify React before mount when collection is already ready", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2026-06-12T13:14:43Z"}, {"Item": "#1594", "Title": "fix(react-db): defer eager onStoreChange to a microtask in useLiveQuery + regression test (closes #1587)", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "2", "Updated": "2026-06-18T08:23:20Z"}, {"Item": "#1601", "Title": "fix(db): emit change on order-only reorder in ordered live queries", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "6", "Updated": "2026-06-22T07:16:35Z"}], "snippets": [{"item": "#50", "url": "https://github.com/TanStack/db/issues/50", "quote": "Like the non-lazy version, but only triggers a re-render when the length of the results change, or a key moves/changes."}, {"item": "#126", "url": "https://github.com/TanStack/db/issues/126", "quote": "custom <For /> component"}, {"item": "#439", "url": "https://github.com/TanStack/db/issues/439", "quote": "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"}, {"item": "#471", "url": "https://github.com/TanStack/db/issues/471", "quote": "Changes to a local storage collection are successfully being persisted to local storage and `useLiveQuery` will return the updated data, but then revert back to the pre-modified data. Refreshing the window/tab then refle"}, {"item": "#478", "url": "https://github.com/TanStack/db/issues/478", "quote": "When adding artificial latency to \u2060onInsert and inserting two items in quick succession, the UI stops re-rendering further updates. A \u2060`setInterval` log of the collection state confirms it is correct in memory (but not b"}], "historical": [{"Item": "[#1414](https://github.com/TanStack/db/issues/1414)", "Title": "createLiveQueryCollection generic type inference lost in 0.6 \u2014 useLiveQuery returns {}", "State": "CLOSED issue", "Reactions/upvotes": "not captured", "Comments": "1", "Closed/Merged": "Closed 2026-03-28", "Why related": "Historical `createLiveQueryCollection` / `useLiveQuery` behavior report."}, {"Item": "[#1408](https://github.com/TanStack/db/pull/1408)", "Title": "fix: bump persistence packages to 0.1.3 (fix workspace links)", "State": "CLOSED PR", "Reactions/upvotes": "not captured", "Comments": "2", "Closed/Merged": "Closed 2026-03-25", "Why related": "Search hit for `useLiveQuery react-db`; adjacent packaging/release context, lower specificity."}, {"Item": "[#1243](https://github.com/TanStack/db/pull/1243)", "Title": "Pass orderBy and limit to lazy collection loadSubset in joins", "State": "CLOSED PR", "Reactions/upvotes": "not captured", "Comments": "5", "Closed/Merged": "Closed 2026-06-23", "Why related": "Related to live query ordering/windowed loading behavior that can surface in React render results."}, {"Item": "[#1538](https://github.com/TanStack/db/pull/1538)", "Title": "docs(db): clarify mutate callback is sync-only", "State": "CLOSED PR", "Reactions/upvotes": "not captured", "Comments": "4", "Closed/Merged": "Closed 2026-05-18", "Why related": "Search hit for `useLiveQuery react-db`; docs context only, lower specificity."}, {"Item": "[#1544](https://github.com/TanStack/db/pull/1544)", "Title": "docs(db): clarify caseWhen, coalesce, manual transactions, and multi-endpoint behavior", "State": "CLOSED PR", "Reactions/upvotes": "not captured", "Comments": "4", "Closed/Merged": "Closed 2026-05-23", "Why related": "Docs context touching query behavior; lower-specificity historical artifact."}, {"Item": "[#1569](https://github.com/TanStack/db/pull/1569)", "Title": "chore: add changeset for materialize() helper (#1504)", "State": "CLOSED PR", "Reactions/upvotes": "not captured", "Comments": "4", "Closed/Merged": "Closed 2026-06-04", "Why related": "Changeset/release context for live query materialization helper; lower specificity."}, {"Item": "[#1596](https://github.com/TanStack/db/pull/1596)", "Title": "ci: Version Packages", "State": "CLOSED PR", "Reactions/upvotes": "not captured", "Comments": "3", "Closed/Merged": "Closed 2026-06-18", "Why related": "Versioning PR found by `useLiveQuery react-db`; release-context only."}], "historicalSnippets": [{"item": "#1414", "url": "https://github.com/TanStack/db/issues/1414", "quote": "createLiveQueryCollection generic type inference lost in 0.6 \u2014 useLiveQuery returns {}."}, {"item": "#1243", "url": "https://github.com/TanStack/db/pull/1243", "quote": "Pass orderBy and limit to lazy collection loadSubset in joins."}, {"item": "#1569", "url": "https://github.com/TanStack/db/pull/1569", "quote": "chore: add changeset for materialize() helper (#1504)."}], "capped": false, "caveats": ["GitHub search rate limiting blocked the more targeted follow-up searches for `onStoreChange`, `queueMicrotask`, and `getServerSnapshot`; 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."], "x": 77.33384563861566, "y": 28.114294251555478}, {"label": "Transactions / optimistic writes / sync state", "count": 42, "grouping": "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.", "openItems": [{"Item": "#19", "Title": "Support for Stable ViewKeys to Prevent UI Re-renders on ID Mapping", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "6", "Comments": "4", "Updated": "2025-12-18T14:47:11Z"}, {"Item": "#20", "Title": "Track Optimistic Status Per Record for Local-Only Query Differentiation", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2025-10-08T20:49:14Z"}, {"Item": "#22", "Title": "Support Recoverable Validation Flow for Explicit Transactions", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2025-04-28T17:13:35Z"}, {"Item": "#25", "Title": "Handle Shape Evolution Conflicts Across Transactions", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2025-04-28T17:40:37Z"}, {"Item": "#35", "Title": "\ud83e\udde9 Feature Proposal: Add Serialized Transaction Queuing Utility with Strategy Support", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "4", "Comments": "1", "Updated": "2025-08-28T15:07:27Z"}, {"Item": "#146", "Title": "Support for Nested Transactions", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2025-06-07T01:14:09Z"}, {"Item": "#337", "Title": "Awaiting txid across multiple collections.", "Status": "OPEN", "Labels": "documentation, question", "Reactions/upvotes": "0", "Comments": "2", "Updated": "2025-07-30T20:47:56Z"}, {"Item": "#456", "Title": "Adding server-generated properties to transaction in Collection.onInsert etc.", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "3", "Comments": "2", "Updated": "2025-08-28T06:21:12Z"}, {"Item": "#465", "Title": "Feature Request: Allow default values / computed fields on Persistence Handlers for QueryCollections", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "2", "Updated": "2026-01-03T08:33:19Z"}, {"Item": "#487", "Title": "Declaring custom rollback behavior", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "4", "Updated": "2025-09-03T13:08:41Z"}, {"Item": "#661", "Title": "Add awaitPersisted() method to wait for record sync", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2026-03-03T00:43:22Z"}, {"Item": "#900", "Title": "[PowerSync]: Replacing optimistic state after insert", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "7", "Updated": "2025-11-27T06:16:05Z"}, {"Item": "#996", "Title": "Add a way to enforce collection mutations via actions disallowing inline mutations", "Status": "OPEN", "Labels": "enhancement", "Reactions/upvotes": "0", "Comments": "5", "Updated": "2026-02-26T12:39:26Z"}, {"Item": "#1017", "Title": "Synced data does not appear in a derived (live query) collection while there is a pending optimistic mutation.", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "3", "Updated": "2026-01-20T09:33:17Z"}, {"Item": "#1048", "Title": "collection: option to sync while persisting.", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "4", "Updated": "2025-12-19T07:19:29Z"}, {"Item": "#1060", "Title": "usePacedMutations value regression while persisting", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2025-12-21T22:44:20Z"}, {"Item": "#1064", "Title": "Fix beforeRetry hook: scheduler not cleared after filtering transactions", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2025-12-30T12:34:38Z"}, {"Item": "#1065", "Title": "Expose onlineDetector and add check online status before executing transactions", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2026-01-26T15:50:50Z"}, {"Item": "#1068", "Title": "feat: handle delete-insert in transaction merging", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "5", "Updated": "2026-02-15T20:48:35Z"}, {"Item": "#1092", "Title": "Add dependencyQueueStrategy to paced mutations", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "4", "Updated": "2026-01-05T21:54:21Z"}, {"Item": "#1122", "Title": "@tanstack/electric-db-collection: The pending sync transaction is already committed, you can't commit it again", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "4", "Updated": "2026-02-10T11:57:34Z"}, {"Item": "#1166", "Title": "[repro] synced data not appearing in derived collection during pending optimistic mutation (issue #1017)", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "4", "Updated": "2026-01-20T09:23:00Z"}, {"Item": "#1175", "Title": "Improve awaitTxId timeout error with diagnostic info", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "4", "Updated": "2026-01-22T23:20:03Z"}, {"Item": "#1215", "Title": "docs: Add guide for multiple pending transactions", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "4", "Updated": "2026-02-04T13:11:26Z"}, {"Item": "#1219", "Title": "docs: Add transaction submission status tracking guide", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "4", "Updated": "2026-02-06T15:17:54Z"}, {"Item": "#1322", "Title": "docs: warn about isPersisted vs isPersisted.promise footgun", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2026-03-03T01:08:02Z"}, {"Item": "#1394", "Title": "Feature: effect cursor / startAfter for durable replay", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2026-03-21T15:32:06Z"}, {"Item": "#1405", "Title": "feat: cursor-aware effect replay with startAfter gating", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "5", "Updated": "2026-03-26T13:15:23Z"}, {"Item": "#1431", "Title": "feat: $pendingOperation virtual prop", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "3", "Updated": "2026-06-23T11:07:56Z"}, {"Item": "#1445", "Title": "feat(db): allow externally-provided previousValue in sync update chan\u2026", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2026-05-01T17:53:45Z"}, {"Item": "#1465", "Title": "fix(db): clean up optimistic state when server returns a different key", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2026-04-08T23:09:34Z"}, {"Item": "#1476", "Title": "Optimistic update transaction failed", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2026-04-14T10:08:54Z"}, {"Item": "#1483", "Title": "fix(query-db-collection): preserve in-memory row ownership when hydrating from persisted metadata", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2026-04-16T22:54:57Z"}, {"Item": "#1490", "Title": "ReactNativeOnlineDetector sometimes never fires after offline -> online transition", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2026-04-21T21:40:29Z"}, {"Item": "#1497", "Title": "fix: invalidate stale predicate-scoped cache entries on manual-sync writes", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "2", "Updated": "2026-06-12T14:31:18Z"}, {"Item": "#1522", "Title": "test(transactions): demonstrate ambient tx loss across await in mutate()", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2026-05-11T10:19:04Z"}, {"Item": "#1526", "Title": "[PowerSync]: $synced reflects local SQLite persistence, not backend upload status", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2026-06-09T08:28:52Z"}, {"Item": "#1551", "Title": "fix(db): skip deletes for unsent keys in filterDuplicateInserts", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2026-05-25T07:40:58Z"}, {"Item": "#1579", "Title": "fix: preserve Temporal values in offline transactions", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "7", "Updated": "2026-06-09T22:28:37Z"}, {"Item": "#1592", "Title": "feat(offline-transactions): allow overriding the retry policy via config", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2026-06-17T13:35:08Z"}, {"Item": "#1602", "Title": "offline-transactions: confirm writes off the serial drain (hold optimistic state through the post-commit sync window)", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2026-06-19T09:05:40Z"}, {"Item": "#1603", "Title": "feat(offline-transactions): confirm writes off the serial drain path (confirmWrite hook)", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2026-06-19T09:12:41Z"}], "snippets": [{"item": "#19", "url": "https://github.com/TanStack/db/issues/19", "quote": "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, "}, {"item": "#20", "url": "https://github.com/TanStack/db/issues/20", "quote": "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."}, {"item": "#22", "url": "https://github.com/TanStack/db/issues/22", "quote": "Currently, transaction failures are terminal: if a transaction fails during persistence, it is marked as `failed` and rolled back immediately."}, {"item": "#25", "url": "https://github.com/TanStack/db/issues/25", "quote": "Optimistic transactions can modify data shape freely:"}, {"item": "#35", "url": "https://github.com/TanStack/db/issues/35", "quote": "Introduce a `useSerializedTransaction` hook that abstracts common queuing and batching patterns for optimistic transactions in `@tanstack/optimistic`. This hook simplifies manageme"}], "historical": [{"Item": "[#817](https://github.com/TanStack/db/pull/817)", "Title": "exclude 'persisting' transactions from having their optimistic state re-applied during commitPendingTransactions()", "State": "CLOSED PR", "Reactions/upvotes": "not captured", "Comments": "13", "Closed/Merged": "Closed 2025-11-21", "Why related": "Direct match for transaction commit/optimistic state re-application."}, {"Item": "[#29](https://github.com/TanStack/db/issues/29)", "Title": "RFC: Explicit Cross-Collection Transactions for TanStack Optimistic", "State": "CLOSED issue", "Reactions/upvotes": "not captured", "Comments": "7", "Closed/Merged": "Closed 2025-05-08", "Why related": "Historical design discussion for explicit transactions and optimistic workflows."}, {"Item": "[#230](https://github.com/TanStack/db/pull/230)", "Title": "fix transaction sorting order and enforce them having an id", "State": "CLOSED PR", "Reactions/upvotes": "not captured", "Comments": "4", "Closed/Merged": "Closed 2025-07-06", "Why related": "Related to transaction ordering/id semantics."}, {"Item": "[#37](https://github.com/TanStack/db/pull/37)", "Title": "Don't wait for transaction to finish before applying synced transactions", "State": "CLOSED PR", "Reactions/upvotes": "not captured", "Comments": "2", "Closed/Merged": "Closed 2025-05-02", "Why related": "Directly references applying synced transactions around active transactions."}, {"Item": "[#34](https://github.com/TanStack/db/issues/34)", "Title": "Remove unnecessary queuing/locking behavior", "State": "CLOSED issue", "Reactions/upvotes": "not captured", "Comments": "2", "Closed/Merged": "Closed 2025-05-02", "Why related": "Related to transaction queueing/locking behavior."}, {"Item": "[#45](https://github.com/TanStack/db/issues/45)", "Title": "Lock collections while mutationFn is active", "State": "CLOSED issue", "Reactions/upvotes": "not captured", "Comments": "0", "Closed/Merged": "Closed 2025-05-05", "Why related": "Related to mutation transaction locking and collection write lifecycle."}, {"Item": "[#1549](https://github.com/TanStack/db/issues/1549)", "Title": "Change events dropped for optimistic\u2192synced transition when Pattern B handler calls writeUpsert", "State": "CLOSED issue", "Reactions/upvotes": "not captured", "Comments": "1", "Closed/Merged": "Closed 2026-05-24", "Why related": "Direct match for optimistic-to-synced transition, change events, and `writeUpsert`."}, {"Item": "[#1469](https://github.com/TanStack/db/pull/1469)", "Title": "fix(db): item disappears during optimistic-to-synced transition", "State": "CLOSED PR", "Reactions/upvotes": "not captured", "Comments": "0", "Closed/Merged": "Closed 2026-04-17", "Why related": "Directly related to optimistic-to-synced item lifecycle."}, {"Item": "[#1464](https://github.com/TanStack/db/issues/1464)", "Title": "Optimistic entities not cleared after insert", "State": "CLOSED issue", "Reactions/upvotes": "not captured", "Comments": "7", "Closed/Merged": "Closed 2026-05-24", "Why related": "Direct optimistic write cleanup report."}, {"Item": "[#1442](https://github.com/TanStack/db/issues/1442)", "Title": "Optimistic insert not removed when server returns a different key", "State": "CLOSED issue", "Reactions/upvotes": "not captured", "Comments": "3", "Closed/Merged": "Closed 2026-05-24", "Why related": "Direct optimistic insert/synced server-key transition report."}], "historicalSnippets": [{"item": "#817", "url": "https://github.com/TanStack/db/pull/817", "quote": "exclude 'persisting' transactions from having their optimistic state re-applied during commitPendingTransactions()."}, {"item": "#1549", "url": "https://github.com/TanStack/db/issues/1549", "quote": "Change events dropped for optimistic\u2192synced transition when Pattern B handler calls writeUpsert."}, {"item": "#1464", "url": "https://github.com/TanStack/db/issues/1464", "quote": "Optimistic entities not cleared after insert."}], "capped": true, "caveats": ["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."], "x": 78.833258145292, "y": 40.74501145883875}], "standalone": [{"Item": "#42", "Title": "Devtools", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2025-07-16T13:32:22Z"}, {"Item": "#357", "Title": "RFC: Simplified Single-Value State Management API for TanStack DB", "Status": "OPEN", "Labels": "RFC", "Reactions/upvotes": "13", "Comments": "6", "Updated": "2025-12-23T15:55:45Z"}, {"Item": "#734", "Title": "Add stable viewKey API to prevent UI re-renders during ID transitions", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "1", "Comments": "7", "Updated": "2026-03-23T06:42:50Z"}, {"Item": "#971", "Title": "Allow access ShapeStream for electric collections", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "7", "Updated": "2025-12-05T18:43:10Z"}, {"Item": "#1115", "Title": "[Feature Request] Split schema into selectSchema, insertSchema, updateSchema for granular control", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "8", "Updated": "2026-04-18T12:12:17Z"}, {"Item": "#1346", "Title": "fix(db): reject preload() promise when collection errors so ErrorBoundary is reached", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "3", "Updated": "2026-04-07T08:48:59Z"}, {"Item": "#1417", "Title": "Cannot read properties of undefined (reading 'constructor') at memoizedCreateChangeProxy when reading new nested property", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2026-03-27T12:13:05Z"}, {"Item": "#1452", "Title": "persistedCollectionOptions: schema type parameter not inferred, result incompatible with createCollection", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2026-06-22T16:52:41Z"}, {"Item": "#1458", "Title": "sqlite-compiler: bare \"id\" in trigger WHEN clauses breaks DELETE for on-demand PowerSync collections", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "2", "Comments": "3", "Updated": "2026-05-05T14:28:28Z"}, {"Item": "#1509", "Title": "Angular input signals and compiled test setup", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2026-05-02T21:51:27Z"}, {"Item": "#1584", "Title": "Prototype Pollution via `queryOnce().select()` Alias Handling", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2026-06-19T06:33:53Z"}, {"Item": "#1591", "Title": "Unbounded recursion in `minusWherePredicates` / `isWhereSubsetInternal` overflows the stack under rapid on-demand subset churn", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2026-06-18T09:45:34Z"}, {"Item": "#1599", "Title": "TypeError: Cannot read properties of undefined (reading 'Symbol(liveQueryInternal)') when calling .update() on a queryCollection", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2026-06-18T17:37:57Z"}], "buckets": {"Unclustered / unclear": [{"Item": "#411", "Title": "wip devtools", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "2", "Comments": "3", "Updated": "2025-08-28T04:40:03Z"}, {"Item": "#413", "Title": "Working with discriminated unions inside of collection causes TS troubles", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "2", "Updated": "2026-02-26T12:46:27Z"}, {"Item": "#545", "Title": "Add SSR & RSC Support for @tanstack/react-db", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "16", "Updated": "2026-03-28T10:21:08Z"}, {"Item": "#619", "Title": "Deduplicate queries by `id`", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "3", "Updated": "2025-10-20T21:10:22Z"}, {"Item": "#634", "Title": "refactor the reconciliation process to be simpler and more maintainable", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2025-10-04T02:09:13Z"}, {"Item": "#899", "Title": "Also use compare small Uint8Array by content logic for joins", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "4", "Updated": "2025-11-25T13:07:54Z"}, {"Item": "#918", "Title": "Automatically start sync when there's any mutations", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "6", "Updated": "2026-04-09T20:38:29Z"}, {"Item": "#1047", "Title": "Debugging", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "4", "Updated": "2025-12-19T20:39:35Z"}, {"Item": "#1087", "Title": "Learn from Cheng Huang's modernization article", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "4", "Updated": "2026-01-02T16:48:26Z"}], "Routine maintenance / dependency / release housekeeping": [{"Item": "#544", "Title": "Dependency Dashboard", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2026-05-11T16:46:10Z"}, {"Item": "#752", "Title": "chore(deps): update dependency vite to v6.4.1 [security] - abandoned", "Status": "OPEN", "Labels": "dependencies", "Reactions/upvotes": "0", "Comments": "3", "Updated": "2026-04-27T18:21:55Z"}, {"Item": "#990", "Title": "Please add the project to localfirst landscape", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2025-12-09T10:28:37Z"}, {"Item": "#1089", "Title": "merge: Claude/remove redundant unit tests", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "3", "Updated": "2026-01-07T09:02:42Z"}, {"Item": "#1170", "Title": "Update baseline-browser-mapping dependency", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "4", "Updated": "2026-01-20T20:11:27Z"}, {"Item": "#1228", "Title": "chore(deps): update dependency better-auth to ^1.3.4 [security]", "Status": "OPEN", "Labels": "dependencies", "Reactions/upvotes": "0", "Comments": "2", "Updated": "2026-05-12T11:56:59Z"}, {"Item": "#1248", "Title": "chore(deps): update all non-major dependencies", "Status": "OPEN", "Labels": "dependencies", "Reactions/upvotes": "0", "Comments": "5", "Updated": "2026-05-12T12:11:00Z"}, {"Item": "#1319", "Title": "Remove deprecated features for the first RC", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "0", "Updated": "2026-03-02T14:45:21Z"}, {"Item": "#1480", "Title": "chore(deps): update dependency svelte to v5.53.5 [security]", "Status": "OPEN", "Labels": "dependencies", "Reactions/upvotes": "0", "Comments": "3", "Updated": "2026-05-12T12:02:32Z"}, {"Item": "#1482", "Title": "Update RxDB to the latest version", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "2", "Updated": "2026-04-20T12:54:39Z"}, {"Item": "#1506", "Title": "chore(deps): lock file maintenance", "Status": "OPEN", "Labels": "dependencies", "Reactions/upvotes": "0", "Comments": "3", "Updated": "2026-05-01T02:12:45Z"}, {"Item": "#1528", "Title": "chore: add codeowners", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "3", "Updated": "2026-05-13T20:15:52Z"}, {"Item": "#1530", "Title": "security: stricter pnpm config blockExoticSubdeps & trustPolicy", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "2", "Updated": "2026-05-17T14:12:59Z"}, {"Item": "#1545", "Title": "chore: enforce pnpm 11", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "2", "Updated": "2026-05-23T14:04:01Z"}, {"Item": "#1559", "Title": "chore: migrate changesets changelog generator", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "3", "Updated": "2026-05-26T18:17:21Z"}, {"Item": "#1613", "Title": "chore: update pnpm to 11.9.0", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "2", "Updated": "2026-06-23T21:56:04Z"}], "Likely duplicate or stale-looking": [{"Item": "#1588", "Title": "fix(react-db): defer eager onStoreChange to a microtask in useLiveQuery", "Status": "OPEN", "Labels": "none", "Reactions/upvotes": "0", "Comments": "1", "Updated": "2026-06-12T15:32:25Z"}]}, "generated": "2026-06-24", "source": "TanStack/db Misfits Survey"}</script> | |
| <script> | |
| const DATA=JSON.parse(document.getElementById('survey-data').textContent);let sortMode='count',showHist=true,query=''; | |
| const $=s=>document.querySelector(s);const esc=s=>(s??'').toString().replace(/[&<>"']/g,m=>({'&':'&','<':'<','>':'>','"':'"',"'":'''}[m])); | |
| function stat(label,value){return `<div class="stat"><b>${value}</b><small>${label}</small></div>`} | |
| function renderStats(){const s=DATA.stats;$('#stats').innerHTML=stat('open issues',s.issues)+stat('open PRs',s.prs)+stat('total items',s.total)+stat('clusters',s.clusters)+stat('standalone',s.standalone)+stat('maintenance',s.maintenance)} | |
| function scoreText(c){return [c.label,c.grouping,...c.openItems.map(i=>Object.values(i).join(' ')),...c.snippets.map(s=>s.quote)].join(' ').toLowerCase()} | |
| function renderMap(){let clusters=[...DATA.clusters];clusters.sort((a,b)=>sortMode==='count'?b.count-a.count:a.label.localeCompare(b.label));const q=query.trim().toLowerCase();const map=$('#map');map.querySelectorAll('.node').forEach(n=>n.remove());let svg=$('#links');svg.innerHTML='';clusters.forEach((c,idx)=>{let visible=!q||scoreText(c).includes(q);let x=c.x,y=c.y;svg.insertAdjacentHTML('beforeend',`<line x1="50%" y1="50%" x2="${x}%" y2="${y}%" stroke="rgba(255,184,77,${visible?.24:.04})" stroke-width="1"/>`);const b=document.createElement('button');b.className='node'+(visible?'':' hidden');b.style.left=x+'%';b.style.top=y+'%';b.style.animationDelay=(idx*35)+'ms';b.innerHTML=`<span class="count">${c.count}</span><h3>${esc(c.label)}</h3><p>${esc((c.grouping||'').slice(0,108))}…</p>${c.capped?'<span class="cap">historical capped</span>':''}`;b.onclick=()=>openCluster(c);map.appendChild(b)});renderSide()} | |
| function renderSide(){const b=DATA.buckets;$('#side').innerHTML=`<div class="bucket"><h2>Coverage buckets</h2><ul><li>${DATA.standalone.length} standalone high-signal items</li><li>${b['Unclustered / unclear'].length} unclustered / unclear</li><li>${b['Routine maintenance / dependency / release housekeeping'].length} maintenance / dependency / release</li><li>${b['Likely duplicate or stale-looking'].length} likely duplicate or stale-looking</li></ul></div><div class="bucket"><h2>Largest signals</h2><ul>${[...DATA.clusters].sort((a,b)=>b.count-a.count).slice(0,6).map(c=>`<li><a href="#" data-label="${esc(c.label)}">${esc(c.label)}</a> <span class="mini">${c.count}</span></li>`).join('')}</ul></div><div class="bucket"><h2>Standalone</h2><ul>${DATA.standalone.slice(0,7).map(r=>`<li>${esc(r.Item)} ${esc(r.Title).slice(0,70)}</li>`).join('')}</ul></div>`;document.querySelectorAll('[data-label]').forEach(a=>a.onclick=e=>{e.preventDefault();openCluster(DATA.clusters.find(c=>c.label===a.dataset.label))})} | |
| function table(rows,cols){if(!rows||!rows.length)return '<p class="empty">No rows recorded.</p>';return `<div class="tablewrap"><table><thead><tr>${cols.map(c=>`<th>${esc(c)}</th>`).join('')}</tr></thead><tbody>${rows.map(r=>`<tr>${cols.map(c=>{let v=r[c]??'';let url=String(v).match(/\((https:\/\/[^)]+)\)/);return `<td>${url?`<a href="${url[1]}" target="_blank" rel="noreferrer">${esc(String(v).replace(/\[([^\]]+)\]\([^)]+\)/,'$1'))}</a>`:esc(v)}</td>`}).join('')}</tr>`).join('')}</tbody></table></div>`} | |
| function quotes(snips){return snips&&snips.length?snips.map(s=>`<blockquote class="quote"><a href="${s.url}" target="_blank" rel="noreferrer">${esc(s.item)}</a>: “${esc(s.quote)}”</blockquote>`).join(''):'<p class="empty">No representative snippets recorded.</p>'} | |
| function openCluster(c){if(!c)return;$('#detail').innerHTML=`<div class="eyebrow">Probable cluster</div><h1>${esc(c.label)}</h1><span class="pill">${c.count} open items</span>${c.capped?'<span class="pill">historical capped</span>':''}<section class="section"><h2>Grouping attributes</h2><p class="grouping">${esc(c.grouping)}</p></section><section class="section"><h2>Current open items</h2>${table(c.openItems,['Item','Title','Status','Labels','Reactions/upvotes','Comments','Updated'])}</section><section class="section"><h2>Representative current snippets</h2>${quotes(c.snippets)}</section>${showHist?`<section class="section"><h2>Historical related items</h2>${table(c.historical,['Item','Title','State','Reactions/upvotes','Comments','Closed/Merged','Why related'])}</section><section class="section"><h2>Historical snippets</h2>${quotes(c.historicalSnippets)}${c.caveats?.length?`<p class="mini">Caveats: ${esc(c.caveats.join(' · '))}</p>`:''}</section>`:''}`;$('#drawer').classList.add('open');document.body.style.overflow='hidden'} | |
| function close(){ $('#drawer').classList.remove('open'); document.body.style.overflow=''} | |
| document.addEventListener('click',e=>{if(e.target.matches('[data-close]'))close()});document.addEventListener('keydown',e=>{if(e.key==='Escape')close()});$('#search').oninput=e=>{query=e.target.value;renderMap()};$('#sortCount').onclick=()=>{sortMode='count';$('#sortCount').classList.add('active');$('#sortName').classList.remove('active');renderMap()};$('#sortName').onclick=()=>{sortMode='name';$('#sortName').classList.add('active');$('#sortCount').classList.remove('active');renderMap()};$('#toggleHist').onclick=()=>{showHist=!showHist;$('#toggleHist').classList.toggle('active',showHist);$('#toggleHist').textContent=showHist?'historical on':'historical off'}; | |
| renderStats();renderMap(); | |
| </script> | |
| </body> | |
| </html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment