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.