Getting Started
Everything you need to go from zero to a working PraxisJS application.
Getting Started
Three steps to your first working PraxisJS app. After these, move straight into Core Concepts to understand the reactive model in depth.
Understand the model
Read Introduction to learn what PraxisJS is and how signals eliminate the need for a virtual DOM. It takes five minutes and answers 90% of future "why does this work this way?" questions.
Create your project
Run npm create praxisjs@latest to scaffold a ready-to-go project, or follow Quick Start for manual setup. You'll have a running counter component in under two minutes.
Learn the core
Work through Core Concepts — components, reactivity, JSX, lifecycle hooks, and async data. Read them in order the first time; each builds on the previous.
The three rules
All of PraxisJS follows from just three rules. Internalize these and everything else clicks into place.
render() runs once
The DOM is built on first mount. After that, only reactive effects update individual nodes — render() is never called again.
Arrow functions are reactive
{() => this.count} subscribes to count and updates when it changes. {this.count} is a static snapshot read at render time. The difference is always visible in the code.
Decorators are explicit
@State makes a property reactive. @Watch runs a side effect. @Prop receives a parent value. PraxisJS code says exactly what it does — no hidden conventions.