v5.3.0
This release is focussed on a few API improvements and quality-of-life changes. These include:
React SSR support
Thanks to contributor Muhammad Muhajir (@muhajirdev) for ensuring that TinyBase runs in server-side rendering environments!
In the persisters module...
All Persister objects now expose information about whether they are loading or saving. To access this Status, use:
- The getStatus method, which will return 0 when it is idle, 1 when it is loading, and 2 when it is saving.
- The addStatusListener method, which lets you add a StatusListener function and which is called whenever the status changes.
These make it possible to track background load and save activities, so that, for example, you can show a status-bar spinner of asynchronous persistence activity.
In the synchronizers module...
Synchronizers are a sub-class of Persister, so all Synchronizer objects now also have:
- The getStatus method, which will return 0 when it is idle, 1 when it is 'loading' (ie inbound syncing), and 2 when it is 'saving' (ie outbound syncing).
- The addStatusListener method, which lets you add a StatusListener function and which is called whenever the status changes.
In the ui-react module...
There are corresponding hooks so that you can build these status changes into a React UI easily:
- The usePersisterStatus hook, which will return the status for an explicitly provided, or context-derived Persister.
- The usePersisterStatusListener hook, which lets you add your own StatusListener function to a Persister.
- The usePersister hook, which lets you get direct access to a Persister from within your UI.
And correspondingly for Synchronizers:
- The useSynchronizerStatus hook, which will return the status for an explicitly provided, or context-derived Synchronizer.
- The useSynchronizerStatusListener hook, which lets you add your own StatusListener function to a Synchronizer.
- The useSynchronizer hook, which lets you get direct access to a Synchronizer from within your UI.
In addition, this module also now includes hooks for injecting objects into the Provider context scope imperatively, much like the existing useProvideStore hook:
- The useProvideMetrics hook, which lets you imperatively register Metrics objects.
- The useProvideIndexes hook, which lets you register Indexes objects.
- The useProvideRelationships hook, which lets you register Relationships objects.
- The useProvideQueries hook, which lets you register Queries objects.
- The useProvideCheckpoints hook, which lets you register Checkpoints objects.
- The useProvidePersister hook, which lets you register Persister objects.
- The useProvideSynchronizer hook, which lets you register Synchronizer objects.
All of these new methods have extensive documentation, each with examples to show how to use them.
Please provide feedback on this new release on GitHub!