Skip to content

Create a reactive value that triggers updates when changed.

function signal<T>(initialValue: T): Signal<T>
ParamTypeDescription
initialValueTThe initial value

Signal<T> with:

PropertyTypeDescription
.valueTRead or write (triggers reactivity)
.peek()TRead without tracking
.set(value)voidSet a new value
.update(fn)voidUpdate via function
.subscribe(fn)() => voidSubscribe to changes, returns unsubscribe
import { signal } from "@whisq/core";
const count = signal(0);
count.value; // 0 (read — triggers tracking)
count.value = 5; // (write — triggers updates)
count.update(n => n + 1); // 6
count.peek(); // 6 (read — no tracking)
  • computed() — derived values (read-only signals that recompute when their inputs change).
  • effect() — run side effects when tracked signals change.
  • batch() — group multiple writes into one notification.
  • persistedSignal() — a Signal<T> backed by localStorage / sessionStorage (sub-path import).
  • signalMap(), signalSet() — reactive collections with per-key / per-value subscriptions.
  • partition() — split a signal-held array into matching / not-matching derived signals.

Docs current to v0.1.0-alpha.9 . All releases →