Skip to content

Hydration

Saves and restores serializable atom state.

dehydrate reads atoms marked with Atom.serializable from an AtomRegistry and returns encoded entries keyed by their serialization keys. hydrate preloads those entries into another registry before the atoms are read. Initial AsyncResult values can be ignored, encoded as values, or represented by promises that update the target registry once the result is no longer initial.

5 exports Added in v4.0.0 Source

Converting

toValues

Added in v4.0.0 Source

Returns dehydrated state entries as DehydratedAtomValue records.

Signature

declare function toValues(state: readonly Array<DehydratedAtom>): Array<DehydratedAtomValue>

Dehydration

dehydrate

Added in v4.0.0 Source

Encodes the serializable atoms currently stored in a registry into dehydrated state.

Details

Only atoms marked with Atom.serializable are included. encodeInitialAs controls whether AsyncResult.Initial values are ignored, encoded as values, or represented by promises that resolve when the atom leaves the initial state.

Signature

declare function dehydrate(
registry: AtomRegistry,
options?: {
readonly encodeInitialAs?: "ignore" | "promise" | "value-only";
},
): Array<DehydratedAtom>;

Hydration

hydrate

Added in v4.0.0 Source

Applies dehydrated atom state to a registry.

When to use

Use to preload serialized atom values into a target registry before those atoms are read.

Details

Encoded values are preloaded by serialization key. Entries with a resultPromise update the matching registry node, or preload the resolved value, when the promise resolves.

Signature

declare function hydrate(registry: AtomRegistry, dehydratedState: Iterable<DehydratedAtom>): void;

Models

DehydratedAtom interface

Added in v4.0.0 Source

Marker interface for entries in a dehydrated atom registry state.

Signature

interface DehydratedAtom {
readonly "~effect/reactivity/DehydratedAtom": true;
}

DehydratedAtomValue interface

Added in v4.0.0 Source

A dehydrated serializable atom value.

Details

It stores the atom serialization key, encoded value, dehydration timestamp, and an optional promise used when an AsyncResult.Initial value is encoded as a future non-initial value.

Signature

interface DehydratedAtomValue extends DehydratedAtom {
readonly dehydratedAt: number;
readonly key: string;
readonly resultPromise?: Promise<unknown>;
readonly value: unknown;
}