@homeostate/persist-local-storage
v0.1.1
Published
localStorage persistence adapter for @homeostate/core
Maintainers
Readme
@homeostate/persist-local-storage
localStorage storage for createPersistence from
@homeostate/core. It keeps
a Yjs, Loro or Automerge document in the browser, so its state survives reloads, offline starts
and every peer leaving the room.
Install
npm install @homeostate/core @homeostate/persist-local-storage @homeostate/crdt-yjs yjsUsage
import * as Y from "yjs";
import { createPersistence, createSyncEngine } from "@homeostate/core";
import { createYjsBackend, createYjsPersistable } from "@homeostate/crdt-yjs";
import { createLocalStorageAdapter } from "@homeostate/persist-local-storage";
const doc = new Y.Doc();
const persistence = createPersistence(
createYjsPersistable(doc),
createLocalStorageAdapter(),
{ key: "todos" },
);
await persistence.whenLoaded;
createSyncEngine(createYjsBackend(doc, "shared"), adapter).connect();Connect the engine after whenLoaded, so it adopts the restored state instead of seeding the
store's defaults over it. Its result tells whether a stored document was found and restored in
full; see the persistence guide.
createLocalStorageAdapter({ prefix, storage }) takes an optional key prefix (default
"homeostate:") and storage, such as sessionStorage.
Browsers allow about 5 MB per origin, and each document is rewritten on every update. For
larger documents use
@homeostate/persist-indexeddb.
License
MIT — see LICENSE.
