UNPKG

@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

55 lines (41 loc) • 1.26 kB
--- name: angular-persist description: Gate Angular UI on Persist hydration with useHydrated (readonly Signal). Call inside an injection context; use when avoiding flash of default state on async backends. license: MIT metadata: type: framework library: "@stainless-code/persist" library_version: "0.4.1" framework: "angular" requires: - persist sources: - stainless-code/persist:src/adapters/frameworks/angular.ts --- # Angular hydration gate `@stainless-code/persist/frameworks/angular` returns a readonly `Signal<boolean>`. A real signal needs an **injection context** (`effect()`); null/undefined returns a shared `signal(true)` without `effect()`. ## Install ```bash bun add @stainless-code/persist @angular/core ``` Peer: `@angular/core` `>=17.0.0`. ## Minimal wiring ```ts import { useHydrated } from "@stainless-code/persist/frameworks/angular"; export class PrefsComponent { hydrated = useHydrated(prefsHydration); } ``` ```html @if (hydrated()) { <prefs-panel /> } @else { <skeleton /> } ``` ## Common mistakes - **Calling outside injection context.** - **Treating the signal as store state.** - **SSR / null signal** — both surface as hydrated `true`. ## API surface - `useHydrated(signal) → Signal<boolean>` (readonly)