@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
58 lines (42 loc) • 1.4 kB
Markdown
name: svelte-store-persist
description: Gate Svelte store-based UI on Persist hydration with hydratedStore (Readable). Use for Svelte 3–4 or Svelte 5 apps that still use stores; runes UI → svelte-persist.
license: MIT
metadata:
type: framework
library: "@stainless-code/persist"
library_version: "0.4.1"
framework: "svelte-store"
requires:
- persist
sources:
- stainless-code/persist:src/adapters/frameworks/svelte-store.ts
# Svelte stores hydration gate
`@stainless-code/persist/frameworks/svelte-store` exports `hydratedStore(signal) → Readable<boolean>`. Use `$hydrated` auto-subscribe in templates. **Separate public entry** from `./frameworks/svelte` (runes).
## Install
```bash
bun add @stainless-code/persist svelte
```
Peer: `svelte` `>=3.0.0`.
## Minimal wiring
```svelte
<script>
import { hydratedStore } from "@stainless-code/persist/frameworks/svelte-store";
const hydrated = hydratedStore(prefsHydration);
</script>
{#if !$hydrated}
<Skeleton />
{:else}
<Prefs />
{/if}
```
## Contracts
Null/undefined → `readable(true)`. SSR: hydrated `true`.
## Common mistakes
- **Using this for Svelte 5 runes UI.** Use `svelte-persist` / `hydratedRune`.
- **Forgetting the `$` prefix** in templates.
- **Null signal ≠ loading** → `readable(true)`.
## API surface
- `hydratedStore(signal) → Readable<boolean>`
See also: `svelte-persist`.