PraxisJS

Tooling

Developer tools for PraxisJS — Vite plugin, in-app DevTools overlay, Storybook adapter, and the project scaffolder.

Tooling


Required setup for every project

Every PraxisJS project needs these two files configured correctly:

Install and configure the Vite plugin

npm install -D @praxisjs/vite-plugin
// vite.config.ts
import { defineConfig } from 'vite'
import { praxisjs } from '@praxisjs/vite-plugin'

export default defineConfig({
  plugins: [praxisjs({ hmr: true })],
})

Configure TypeScript

// tsconfig.json
{
  "compilerOptions": {
    "target": "ES2022",
    "module": "ESNext",
    "moduleResolution": "bundler",
    "jsx": "react-jsx",
    "jsxImportSource": "@praxisjs/jsx",
    "useDefineForClassFields": false,
    "strict": true,
    "noEmit": true
  }
}

`useDefineForClassFields: false` is required

With true, TypeScript compiles class fields via Object.defineProperty, which runs after decorator initializers and overwrites the signal wiring they set up. Set it to false so field assignments are treated as constructor assignments and decorators work correctly.

Mount your app

// src/main.ts
import { render } from '@praxisjs/runtime'
import { App } from './App'

render(() => <App />, document.getElementById('app')!)

Start from scratch

Skip the manual setup entirely:

npm create praxisjs@latest

Choose from Minimal, With Router, or Full templates — all pre-configured with TypeScript, Vite, JSX, and HMR.

On this page