Skip to main content
Persistence is opt-in. By default createStorage() keeps data in memory only.

Built-in adapters

On Node.js or during SSR, local / session resolve to null and behave as memory-only.

Custom SyncPersist

Implement the synchronous storage interface for React Native, Electron, or encrypted backends:

Factory helpers

Envelope format

Persisted values are wrapped in a versioned envelope:
Expired envelopes are removed on read. v1 @brushy/localstorage on-disk format is not read automatically. See Migration.

Compression

Enable at instance level:
Payloads larger than 1 KB are compressed with lz-string before write. Per-key override via set(key, value, { compress: true }).

Write-through behavior

  • set / ttl write to memory first, then persist
  • get hydrates memory from persist on miss
  • del / flushAll / expiry remove from both layers
  • Persist failures call onError and may cause set to return false

Quota errors

DOMException with name QuotaExceededError is mapped to StorageError with code QuotaExceeded. Handle via onError or try/catch around set.