@haragei/signals is a lightweight, framework-agnostic TypeScript library for fine-grained reactive state.
It provides:
- signals for reactive state with immutable reads
- memos for derived state
- effects for reactive side effects
- actions for imperative async writes
- resources for async derived state
- stores for isolated reactive graphs
pnpm add @haragei/signalsimport { action, batch, effect, memo, resource, signal, subscribe, untracked } from '@haragei/signals';import { effect, memo, signal } from '@haragei/signals';
const [count, setCount] = signal(0);
const doubleCount = memo(() => count() * 2);
effect(() => {
console.log(`${count()} x 2 = ${doubleCount()}`);
});
setCount(1);
setCount(2);pnpm add @haragei/signals @haragei/react-signals reactimport { useSignal, useSignalValue } from '@haragei/react-signals';
export function Counter() {
const count = useSignal(0);
const value = useSignalValue(count);
return (
<button type="button" onClick={() => count.update((current) => current + 1)}>
Count: {value}
</button>
);
}packages/signals/README.mdfor the complete core package overviewpackages/signals/docs/api/README.mdfor the API referencepackages/react-signalsfor the React bindings
@haragei/signals- the core framework-agnostic reactive state library@haragei/react-signals- React 19 bindings for@haragei/signals
MIT