Skip to main content
Derivation creates new signals without performing external work. Derivation functions must be synchronous and pure.

Property access

Accessing a property creates a derived signal:
Functions reached through property access remain callable, so names.join(", ") returns a signal. Generic JavaScript methods can lose precise inference; use .transform() when TypeScript reports a result such as Signal<unknown[]>.

.transform()

Use .transform() when a result depends on one signal:
An arbitrary transform does not retain a source’s .keyBy() or .globally() annotation. Apply the desired partition to the result before passing it to a cross-context operator.

transform()

Use the top-level function when a result depends on several signals:
The result waits for every input. Input closure closes it, and input failure fails it.

t

Use the t tagged template to interpolate signals with static values:
t returns Signal<string> and requires at least one signal interpolation. Use an ordinary template literal when every value is already in memory.

isSignal()

isSignal(value) is a TypeScript type guard for reusable helpers that accept either an ordinary value or a signal:
Most action inputs already accept compatible signals, so ordinary automations rarely need isSignal. See route and scope work to conditionally materialize derived values, or inspect outcomes to turn closure and failure into values.