a reactive (signals based) hypermedia web framework (wip)
stormlightlabs.github.io/volt/
hypermedia
frontend
signals
1---
2version: 1.0
3updated: 2025-10-18
4---
5
6# signal
7
8Creates a new signal with the given initial value.
9
10@param initialValue - The initial value of the signal
11@returns A Signal object with get, set, and subscribe methods
12
13@example
14const count = signal(0);
15count.subscribe(value => console.log('Count:', value));
16count.set(1); // Logs: Count: 1
17
18## signal
19
20Creates a new signal with the given initial value.
21
22```typescript
23export function signal<T>(initialValue: T): Signal<T>
24```
25
26**Example:**
27
28```typescript
29const count = signal(0);
30count.subscribe(value => console.log('Count:', value));
31count.set(1); // Logs: Count: 1
32```
33
34## computed
35
36Creates a computed signal that derives its value from other signals.
37The computation function is re-run whenever any of its dependencies change.
38
39```typescript
40export function computed<T>( compute: () => T, dependencies: Array<Signal<unknown> | ComputedSignal<unknown>>, ): ComputedSignal<T>
41```
42
43**Example:**
44
45```typescript
46const count = signal(5);
47const doubled = computed(() => count.get() * 2, [count]);
48doubled.get(); // 10
49count.set(10);
50doubled.get(); // 20
51```
52
53## effect
54
55Creates a side effect that runs when dependencies change.
56
57```typescript
58export function effect( effectFunction: () => void | (() => void), dependencies: Array<Signal<unknown> | ComputedSignal<unknown>>, ): () => void
59```
60
61**Example:**
62
63```typescript
64const count = signal(0);
65const cleanup = effect(() => {
66 console.log('Count changed:', count.get());
67}, [count]);
68```