Skip to content

Reactive state with fine-grained signals for ReScript

A lightweight, high-performance reactive signals library with zero dependencies, fine-grained reactivity, and full type safety.

Everything you need for reactive state

Signals, computed values, and effects — three powerful primitives for predictable, efficient reactivity.

Zero Dependencies

Ships with no runtime dependencies. Minimal bundle size for maximum performance in production.

Get Started

Fine-Grained Reactivity

Automatic dependency tracking ensures only affected computations re-run. No unnecessary re-renders.

Learn about Signals

Type Safe

Built for ReScript with full type inference. Catch errors at compile time, not at runtime.

View API Reference

Glitch-Free Updates

Computed values are recalculated in topological order, preventing intermediate inconsistent states.

Computed Values

Derive reactive state with automatic caching. Values are lazily evaluated and only recompute when dependencies change.

Computed docs

Effect System

Run side effects when dependencies change, with automatic cleanup and disposal for resource management.

Effect docs

Signals, Computeds, and Effects

Three powerful building blocks for seamless reactivity. Your mental model stays simple and predictable.

Counter.res
Temperature.res
Timer.res
1open RescriptSignals
2
3let count = Signal.make(0)
4
5let increment = (_evt) =>
6 Signal.update(count, n => n + 1)
7
8let decrement = (_evt) =>
9 Signal.update(count, n => n - 1)
10
11// Read the current value
12let value = Signal.get(count)
13
14// Update based on previous value
15Signal.update(count, n => n + 1)
localhost:5173
0

Get started today

rescript-signals is open source, zero-dependency, and built for developers who value simplicity, type safety, and fine-grained reactivity.