Sairin is a fine‑grained reactive UI framework built around a virtual filesystem model. Every piece of state lives at a path, and reactivity flows through those paths like a living directory tree.

Sairin means “reappearance” or “return” in Japanese: a familiar cycle coming back in a clearer form. The engine mirrors that idea, renewing your application’s reactive flow with clarity and precision.

Features

Path-Based Graph

Every signal lives at a path like /user/name. Subscribe to namespaces and get notified on any child change.

Fine-Grained Updates

Only exactly what changes gets updated. No Virtual DOM, no re-renders, no diffing.

Three Scheduling Tiers

Sync, microtask, and idle effects. Pick the right tier for the job.

Memory Efficient

Incremental cleanup, effect pooling, and retained memory caps. Built for long-running apps.

Virtual Filesystem Model

Signals, effects, and stores live at paths. Structure your app like a directory tree and let reactivity flow through it.

Quick Example

import { signal, effect, path } from 'sairin';

const count = signal(path("counter", "value"), 0);

effect(() => {
  console.log("Count is now:", count.get());
});

count.set(1);  // Logs: "Count is now: 1"

Installation

npm install @nisoku/sairin

Next Steps