- 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