@stainless-code/persist
Version:
Hydration-aware persistence for any reactive store — zero-dep persistSource core; codecs, backends, cross-tab transport, source + framework hydration adapters ship as opt-in recipes
50 lines (35 loc) • 1.25 kB
Markdown
name: solid-persist
description: Gate Solid UI on Persist hydration with useHydrated (Accessor). Use when avoiding flash of default state on async backends; read hydrated() in reactive scopes.
license: MIT
metadata:
type: framework
library: "@stainless-code/persist"
library_version: "0.4.1"
framework: "solid"
requires:
- persist
sources:
- stainless-code/persist:src/adapters/frameworks/solid.ts
# Solid hydration gate
`@stainless-code/persist/frameworks/solid` returns an `Accessor<boolean>` — call `hydrated()` inside tracking scopes (`createEffect`, JSX, …).
## Install
```bash
bun add @stainless-code/persist solid-js
```
Peer: `solid-js` `>=1.6.0`.
## Minimal wiring
```tsx
import { useHydrated } from "@stainless-code/persist/frameworks/solid";
const hydrated = useHydrated(prefsHydration);
// <Show when={hydrated()} fallback={<Skeleton />}>…</Show>
```
## Contracts
Null/undefined signal → hydrated `true`. SSR policy: treat as hydrated `true`.
## Common mistakes
- **Using `hydrated` as a boolean** — it's an accessor; call it.
- **Reading outside a reactive scope** — won't update.
- **Null signal ≠ loading** → hydrated true.
## API surface
- `useHydrated(signal) → Accessor<boolean>`