Skip to content
v1.4.0  ·  Stable

Update exactly
what changed.

Signals connect state directly to the DOM nodes that depend on it. No virtual DOM. No component re-renders. No guesswork.

$npm create praxisjs@latest
No Virtual DOMTypeScript-firstDecorator APIFine-grained signals

Design principles

The ideas behind every decision in PraxisJS.

Render once

render() is called exactly once per mount. Reactive updates happen via arrow functions in JSX — {() => this.value} — never via re-renders.

Explicit by design

Decorators make reactivity visible at a glance. You see @State, @Watch, @Computed in the class definition — no hooks, no magic strings.

No virtual DOM

Signals update specific DOM nodes directly via effects. Skip reconciliation entirely — only the exact nodes that depend on a signal update.

Quick Start

Start in seconds

Scaffold a new project with the official CLI or follow the manual setup guide.

npm create praxisjs@latest

Released under the MIT License.