@stainless-code/persist
preact-persist
51 linesSource
Gate Preact UI on Persist hydration with useHydrated (preact/compat useSyncExternalStore). Use when avoiding flash of default state on async backends or wiring HydrationSignal into Preact.
Preact hydration gate
@stainless-code/persist/frameworks/preact mirrors the React adapter via preact/compat useSyncExternalStore (SSR snapshot always true). Not a state source — pair with a ./sources/* adapter.
Install
shell
bun add @stainless-code/persist preactPeer: preact >=10.19.0.
Minimal wiring
tsx
import { useHydrated } from "@stainless-code/persist/frameworks/preact";
const { hydrated } = useHydrated(prefsHydration);
if (!hydrated) return <Skeleton />;
return <PrefsView />;prefsHydration = toHydrationSignal(persist) from your store module.
Common mistakes
- Importing /frameworks/react in a Preact app. Use this subpath.
- Treating the hook as state. Read the store separately.
- Null signal ≠ loading — means no persist → hydrated.
API surface
- useHydrated(signal) → { hydrated: boolean }
See also: react-persist (same contract).