Skip to content

Latest commit

 

History

History
216 lines (129 loc) · 10.5 KB

File metadata and controls

216 lines (129 loc) · 10.5 KB

@tanstack/db-collections

0.0.20

Patch Changes

  • Updated dependencies [e478d53]:
    • @tanstack/db@0.0.16

0.0.19

Patch Changes

  • Add localOnly collection type for in-memory collections with loopback sync. (#204)

  • Updated dependencies [f5cf44b, f5cf44b]:

    • @tanstack/db@0.0.15

0.0.18

Patch Changes

  • Add localStorage collection with cross-tab sync and configurable storage APIs. (#203)

0.0.17

Patch Changes

  • Updated dependencies [74c140d]:
    • @tanstack/db@0.0.14

0.0.16

Patch Changes

  • feat: implement Collection Lifecycle Management (#198)

    Adds automatic lifecycle management for collections to optimize resource usage.

    New Features:

    • Added startSync option (defaults to false, set to true to start syncing immediately)
    • Automatic garbage collection after gcTime (default 5 minutes) of inactivity
    • Collection status tracking: "idle" | "loading" | "ready" | "error" | "cleaned-up"
    • Manual preload() and cleanup() 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
  • Updated dependencies [945868e, 0f8a008, 57b5f5d]:

    • @tanstack/db@0.0.13

0.0.15

Patch Changes

  • Validate that the txId passed to awaitTxId is a string of numbers (#193)

0.0.14

Patch Changes

  • If a schema is passed, use that for the collection type. (#186)

    You now must either pass an explicit type or schema - passing both will conflict.

  • Updated dependencies [f6abe9b]:

    • @tanstack/db@0.0.12

0.0.13

Patch Changes

  • Export ElectricCollectionUtils & allow passing generic to createTransaction (#179)

  • Updated dependencies [66ed58b, c5489ff]:

    • @tanstack/db@0.0.11

0.0.12

Patch Changes

  • Updated dependencies [38d4505]:
    • @tanstack/db@0.0.10

0.0.11

Patch Changes

  • Updated dependencies [2ae0b09]:
    • @tanstack/db@0.0.9

0.0.10

Patch Changes

  • Type PendingMutation whenever possible (#163)

  • A large refactor of the core Collection with: (#155)

    • a change to not use Store internally and emit fine grade changes with subscribeChanges and subscribeKeyChanges methods.
    • changes to the Collection api to be more Map like for reads, with get, has, size, entries, keys, and values.
    • renames config.getId to config.getKey for consistency with the Map like api.
  • Updated dependencies [5c538cf, 9553366, b4602a0, 02adc81, 06d8ecc, c50cd51]:

    • @tanstack/db@0.0.8

0.0.9

Patch Changes

  • 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 .utils namespace, with full TypeScript typing.

    • Refactored createCollection in packages/db/src/collection.ts to accept options with utilities directly
    • Added utils property 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
  • Updated dependencies [8b43ad3]:

    • @tanstack/db@0.0.7

0.0.8

Patch Changes

  • This change introduces a more streamlined and intuitive API for handling mutations by allowing onInsert, onUpdate, and onDelete handlers to be defined directly on the collection configuration. (#156)

    When collection.insert(), .update(), or .delete() are called outside of an explicit transaction (i.e., not within useOptimisticMutation), the library now automatically creates a single-operation transaction and invokes the corresponding handler to persist the change.

    Key changes:

    • @tanstack/db: The Collection class now supports onInsert, onUpdate, and onDelete in its configuration. Direct calls to mutation methods will throw an error if the corresponding handler is not defined.
    • @tanstack/db-collections:
      • queryCollectionOptions now accepts the new handlers and will automatically refetch the collection's query after a handler successfully completes. This behavior can be disabled if the handler returns { refetch: false }.
      • electricCollectionOptions also accepts the new handlers. These handlers are now required to return an object with a transaction ID ({ txid: string }). The collection then automatically waits for this txid to be synced back before resolving the mutation, ensuring consistency.
    • Breaking Change: Calling collection.insert(), .update(), or .delete() without being inside a useOptimisticMutation callback and without a corresponding persistence handler (onInsert, etc.) configured on the collection will now throw an error.

    This new pattern simplifies the most common use cases, making the code more declarative. The useOptimisticMutation hook remains available for more complex scenarios, such as transactions involving multiple mutations across different collections.


    The documentation and the React Todo example application have been significantly refactored to adopt the new direct persistence handler pattern as the primary way to perform mutations.

    • The README.md and docs/overview.md files have been updated to de-emphasize useOptimisticMutation for simple writes. They now showcase the much simpler API of calling collection.insert() directly and defining persistence logic in the collection's configuration.
    • The React Todo example (examples/react/todo/src/App.tsx) has been completely overhauled. All instances of useOptimisticMutation have been removed and replaced with the new onInsert, onUpdate, and onDelete handlers, resulting in cleaner and more concise code.
  • Updated dependencies [856be72, 0455e27, 80fdac7]:

    • @tanstack/db@0.0.6

0.0.7

Patch Changes

  • Collections must have a getId function & use an id for update/delete operators (#134)

  • Switch to Collection options factories instead of extending the Collection class (#145)

    This refactors ElectricCollection and QueryCollection into factory functions (electricCollectionOptions and queryCollectionOptions) that return standard CollectionConfig objects and utility functions. Also adds a createCollection function to standardize collection instantiation.

  • Updated dependencies [1fbb844, 338efc2, ee5d026, e7b036c, e4feb0c]:

    • @tanstack/db@0.0.5

0.0.6

Patch Changes

  • Updated dependencies [8ce449e]:
    • @tanstack/db@0.0.4

0.0.5

Patch Changes

  • Replace queryCollection.invalidate() with queryCollection.refetch(). (#109)

    This means that we actually wait for the collection to be updated before discarding local optimistic state.

0.0.4

Patch Changes

  • Added staleTime support for QueryCollection (#104)

0.0.3

Patch Changes

  • Updated dependencies [b29420b]:
    • @tanstack/db@0.0.3

0.0.2

Patch Changes

  • Added QueryCollection (#78)

  • Updated dependencies [4c82edb]:

    • @tanstack/db@0.0.2