-
Refactored live queries to execute eagerly during sync. Live queries now materialize their results immediately as data arrives from source collections, even while those collections are still in a "loading" state, rather than waiting for all sources to be "ready" before executing. (#658)
-
Updated dependencies [
d9ae7b7,44555b7]:- @tanstack/db@0.4.8
- Updated dependencies [
6692aad]:- @tanstack/db@0.4.7
- Updated dependencies [
7556fb6]:- @tanstack/db@0.4.5
- Updated dependencies [
32f2212]:- @tanstack/db@0.4.3
- Updated dependencies [
8cd0876]:- @tanstack/db@0.4.1
-
Let collection.subscribeChanges return a subscription object. Move all data loading code related to optimizations into that subscription object. (#564)
-
Updated dependencies [
2f87216,ac6250a,2f87216]:- @tanstack/db@0.4.0
-
Expand
useLiveQuerycallback to support conditional queries and additional return types, enabling the ability to temporarily disable the query. (#535)New Features:
- Callback can now return
undefinedornullto temporarily disable the query - Callback can return a pre-created
Collectioninstance to use it directly - Callback can return a
LiveQueryCollectionConfigobject for advanced configuration - When disabled (returning
undefined/null), the hook returns a specific idle state
Usage Examples:
// Conditional queries - disable when not ready const enabled = useState(false) const { data, state, isIdle } = useLiveQuery((q) => { if (!enabled) return undefined // Disables the query return q.from({ users }).where(...) }, [enabled]) /** * When disabled, returns: * { * state: undefined, * data: undefined, * isIdle: true, * ... * } */ // Return pre-created Collection const { data } = useLiveQuery((q) => { if (usePrebuilt) return myCollection // Use existing collection return q.from({ items }).select(...) }, [usePrebuilt]) // Return LiveQueryCollectionConfig const { data } = useLiveQuery((q) => { return { query: q.from({ items }).select(...), id: `my-collection`, } })
- Callback can now return
-
Updated dependencies [
cacfca2]:- @tanstack/db@0.3.2
- Updated dependencies [
5f51f35]:- @tanstack/db@0.3.1
- Updated dependencies [
b162556]:- @tanstack/db@0.2.3
- Updated dependencies [
33515c6]:- @tanstack/db@0.2.2
- Updated dependencies [
620ebea]:- @tanstack/db@0.2.1
- Updated dependencies [
cc4c34a]:- @tanstack/db@0.1.12
-
Fixed a bug where a race condition could cause initial results not to be rendered when using
useLiveQuery. (#485) -
Updated dependencies [
b869f68]:- @tanstack/db@0.1.11
- Updated dependencies [
d64b4a8]:- @tanstack/db@0.1.9
- Updated dependencies [
ad33e9e]:- @tanstack/db@0.1.6
-
ensure that useLiveQuery returns a stable ref when there are no changes (#388)
-
Updated dependencies [
9a5a20c]:- @tanstack/db@0.1.5
-
Ensure that the ready status is correctly returned from a live query (#390)
-
Updated dependencies [
c90b4d8,6c1c19c,69a6d2d,6250a92,68538b4]:- @tanstack/db@0.1.4
- Updated dependencies [
0cb7699]:- @tanstack/db@0.1.3
- 0.1 release - first beta 🎉 (#332)
-
We have moved development of the differential dataflow implementation from @electric-sql/d2mini to a new @tanstack/db-ivm package inside the tanstack db monorepo to make development simpler. (#330)
-
Updated dependencies [
7d2f4be,f0eda36]:- @tanstack/db@0.1.0
- Updated dependencies [
6e8d7f6]:- @tanstack/db@0.0.33
- Updated dependencies [
e04bd12]:- @tanstack/db@0.0.32
- Updated dependencies [
3e9a36d]:- @tanstack/db@0.0.31
- Updated dependencies [
6bdde55]:- @tanstack/db@0.0.30
- Updated dependencies [
bec8620]:- @tanstack/db@0.0.27
-
Add initial release of TrailBase collection for TanStack DB. TrailBase is a blazingly fast, open-source alternative to Firebase built on Rust, SQLite, and V8. It provides type-safe REST and realtime APIs with sub-millisecond latencies, integrated authentication, and flexible access control - all in a single executable. This collection type enables seamless integration with TrailBase backends for high-performance real-time applications. (#228)
-
Updated dependencies [
09c6995]:- @tanstack/db@0.0.26
- Updated dependencies [
056609e]:- @tanstack/db@0.0.23
- Updated dependencies [
aeee9a1]:- @tanstack/db@0.0.22
- Updated dependencies [
8e23322]:- @tanstack/db@0.0.21
- Updated dependencies [
f13c11e]:- @tanstack/db@0.0.20
- Updated dependencies [
9f0b0c2]:- @tanstack/db@0.0.19
- Updated dependencies [
7e63d76]:- @tanstack/db@0.0.17
- Updated dependencies [
74c140d]:- @tanstack/db@0.0.14
-
feat: implement Collection Lifecycle Management (#198)
Adds automatic lifecycle management for collections to optimize resource usage.
New Features:
- Added
startSyncoption (defaults tofalse, set totrueto start syncing immediately) - Automatic garbage collection after
gcTime(default 5 minutes) of inactivity - Collection status tracking: "idle" | "loading" | "ready" | "error" | "cleaned-up"
- Manual
preload()andcleanup()methods for lifecycle control
Usage:
const collection = createCollection({ startSync: false, // Enable lazy loading gcTime: 300000, // Cleanup timeout (default: 5 minutes) }) console.log(collection.status) // Current state await collection.preload() // Ensure ready await collection.cleanup() // Manual cleanup
- Added
-
Add createOptimisticAction helper that replaces useOptimisticMutation (#210)
An example of converting a
useOptimisticMutationhook tocreateOptimisticAction. Now all optimistic & server mutation logic are consolidated.-import { useOptimisticMutation } from '@tanstack/react-db' +import { createOptimisticAction } from '@tanstack/react-db' + +// Create the `addTodo` action, passing in your `mutationFn` and `onMutate`. +const addTodo = createOptimisticAction<string>({ + onMutate: (text) => { + // Instantly applies the local optimistic state. + todoCollection.insert({ + id: uuid(), + text, + completed: false + }) + }, + mutationFn: async (text) => { + // Persist the todo to your backend + const response = await fetch('/api/todos', { + method: 'POST', + body: JSON.stringify({ text, completed: false }), + }) + return response.json() + } +}) const Todo = () => { - // Create the `addTodo` mutator, passing in your `mutationFn`. - const addTodo = useOptimisticMutation({ mutationFn }) - const handleClick = () => { - // Triggers the mutationFn - addTodo.mutate(() => - // Instantly applies the local optimistic state. - todoCollection.insert({ - id: uuid(), - text: '🔥 Make app faster', - completed: false - }) - ) + // Triggers the onMutate and then the mutationFn + addTodo('🔥 Make app faster') } return <Button onClick={ handleClick } /> }
-
Updated dependencies [
945868e,0f8a008,57b5f5d]:- @tanstack/db@0.0.13
- Updated dependencies [
f6abe9b]:- @tanstack/db@0.0.12
-
Export
ElectricCollectionUtils& allow passing generic tocreateTransaction(#179) -
Updated dependencies [
66ed58b,c5489ff]:- @tanstack/db@0.0.11
- Updated dependencies [
38d4505]:- @tanstack/db@0.0.10
- Updated dependencies [
2ae0b09]:- @tanstack/db@0.0.9
-
A large refactor of the core
Collectionwith: (#155)- a change to not use Store internally and emit fine grade changes with
subscribeChangesandsubscribeKeyChangesmethods. - changes to the
Collectionapi to be moreMaplike for reads, withget,has,size,entries,keys, andvalues. - renames
config.getIdtoconfig.getKeyfor consistency with theMaplike api.
- a change to not use Store internally and emit fine grade changes with
-
Updated dependencies [
5c538cf,9553366,b4602a0,02adc81,06d8ecc,c50cd51]:- @tanstack/db@0.0.8
-
Expose utilities on collection instances (#161)
Implemented a utility exposure pattern for TanStack DB collections that allows utility functions to be passed as part of collection options and exposes them under a
.utilsnamespace, with full TypeScript typing.- Refactored
createCollectionin packages/db/src/collection.ts to accept options with utilities directly - Added
utilsproperty to CollectionImpl - Added TypeScript types for utility functions and utility records
- Changed Collection from a class to a type, updating all usages to use createCollection() instead
- Updated Electric/Query implementations
- Utilities are now ergonomically accessible under
.utils - Full TypeScript typing is preserved for both collection data and utilities
- API is clean and straightforward - users can call
createCollection(optionsCreator(config))directly - Zero-boilerplate TypeScript pattern that infers utility types automatically
- Refactored
-
Updated dependencies [
8b43ad3]:- @tanstack/db@0.0.7
-
Collections must have a getId function & use an id for update/delete operators (#134)
-
the
keyByquery operator has been removed, keying withing the query pipeline is now automatic (#144) -
Updated dependencies [
1fbb844,338efc2,ee5d026,e7b036c,e4feb0c]:- @tanstack/db@0.0.5
- Updated dependencies [
8ce449e]:- @tanstack/db@0.0.4
- Updated dependencies [
b29420b]:- @tanstack/db@0.0.3
-
Fixed an issue with injecting the optimistic state removal into the reactive live query. (#78)
-
Updated dependencies [
4c82edb]:- @tanstack/db@0.0.2
-
Make transactions first class & move ownership of mutationFn from collections to transactions (#53)
-
Updated dependencies [
b42479c]:- @tanstack/db@0.0.3