Skip to content

SignalisA lightweight library for reactivity

Composable, performant primitives for building reactive programs simply

Quick Example

typescript
import { createSignal, createDerived, createEffect } from '@signalis/core';

const count = createSignal(0);
const doubled = createDerived(() => count.value * 2);

createEffect(() => {
  console.log(`Count: ${count.value}, Doubled: ${doubled.value}`);
});
// Logs immediately: "Count: 0, Doubled: 0"

count.value = 5; // Logs: "Count: 5, Doubled: 10"

Three Core Primitives

Signals are the foundation—a box around a value that tells other things when it has changed. Read and write via .value.

Derived values are readonly reactive computations. They're lazy and smart about recomputation, only updating when accessed and when their dependencies actually change.

Effects are reactive functions for side effects. They run eagerly (not lazy) and can return cleanup functions for disposal.

Inspiration

Signalis is influenced by @preact/signals, SolidJS, and reactively.

Packages

Released under the MIT License.