Skip to content

Instantly share code, notes, and snippets.

@KyleAMathews
Created June 24, 2026 02:53
Show Gist options
  • Select an option

  • Save KyleAMathews/266a6e0c17a7363bd993b0cc14337405 to your computer and use it in GitHub Desktop.

Select an option

Save KyleAMathews/266a6e0c17a7363bd993b0cc14337405 to your computer and use it in GitHub Desktop.
TanStack DB Misfits Survey Signal Observatory
<!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=>({'&':'&amp;','<':'&lt;','>':'&gt;','"':'&quot;',"'":'&#39;'}[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