Repository navigation
feat: batch persist saves and add key-value and IndexedDB storages - #54
Merged
Merged
Conversation
Persisted stores were serialized with a deep toJS of the whole store on every change, including other stores referenced from plain fields, and every change rewrote the whole storage value. - track only persisted attributes, referenced stores are not traversed - batch changes per `persistDelay` (default 100 ms, 0 keeps save-on-every-change, the server always saves immediately) - flush queued changes on page hide, before a store is destroyed, on destroy() and on `manager.flushPersist()` - write every changed storage once per batch, compare stores by JSON and serialize each store once - add optional `IStorage.saveChanges` for incremental saves, built-in single-value storages assemble JSON from cached store JSON - add KeyValueStorage (a key per store: AsyncStorage, MMKV, localStorage) and IndexedDBStorage, both with migration from an existing storage - CookieStorage warns once when the value exceeds 4 KB
|
|
🎉 This PR is included in version 4.6.0 🎉 The release is available on: Your semantic-release bot 📦🚀 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Promotes the persistence changes from #53 (released as
4.6.0-beta.1) tolatest.options.persistDelay(default 100 ms,0keeps save-on-every-change) and flushed on page hide, before a store is destroyed, ondestroy()and onmanager.flushPersist()IStorage.saveChangesfor incremental savesKeyValueStorageandIndexedDBStoragewith migration from an existing storageExisting storages keep their data format. See #53 for details and benchmark.