Skip to content

stainless-code/persist

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

@stainless-code/persist

Any store, any storage, one middleware — no flash.

Hydration-aware persistence for any reactive store — no hydrate flash, no SSR mismatch. Store-agnostic via a structural PersistableSource (TanStack Store, zustand, jotai, valtio, mobx, or a hand-rolled atom); three composable seams (backend × codec × source) so you swap storage, serialization, or framework without rewriting. A first-class hydration signal gates UI on async backends; opt-in cross-tab sync, versioned migrations, encrypted/compressed backends, and retry-on-quota. Framework adapters for React, Solid, Vue, Svelte, Angular, and Preact.

core size

Docs: https://stainless-code.com/persist

Install

bun add @stainless-code/persist

Quick start

import { Store } from "@tanstack/store";
import { createSerovalStorage } from "@stainless-code/persist/codecs/seroval";
import { persistStore } from "@stainless-code/persist/sources/tanstack-store";
import { toHydrationSignal } from "@stainless-code/persist";
import { useHydrated } from "@stainless-code/persist/frameworks/react";

const store = new Store({ theme: "light" });
const persist = persistStore(store, {
  name: "app:prefs:v1",
  storage: createSerovalStorage(() => localStorage),
});
export const prefsHydration = toHydrationSignal(persist);

// in a component:
const { hydrated } = useHydrated(prefsHydration);

Documentation

Getting started Install, peers, quick start
Guides Hydration, IndexedDB + React, migrations, FAQ
Recipes Encrypt, options, wrapping stores, cross-tab
Concepts Three seams, storage/codec choice, entry points
Reference Generated API (TypeDoc)
Changelog GitHub Releases

About

Persist any reactive store — no hydrate flash, no SSR mismatch. Store-agnostic, zero-dep, hydration-aware; composable backend × codec × source seams — swap without rewriting. Opt-in: cross-tab, versioned migrations, encrypted, compressed. TanStack/zustand/jotai/valtio/mobx + React/Solid/Vue/Svelte/Angular/Preact × IDB/MMKV/AsyncStorage.

Topics

Resources

License

Contributing

Stars

3 stars

Watchers

0 watching

Forks

Sponsor this project

 

Packages

 
 
 

Contributors