PawaJs SSR
The Reactive Web Runtime
PawaJS extends the browser instead of replacing it. Fine-grained reactivity in 15.5kb.
Different by design
Every other framework treats the browser as a problem to solve around. PawaJS treats it as a platform to build on.
The server encodes state directly into HTML as a protocol. Static components never re-execute. Dynamic components re-execute once โ only to wire reactivity, never to rebuild the DOM.
The CRM protocol is encoded in plain HTML attributes. Any language that generates HTML can implement it. The client runtime is a single CDN script โ no Node.js server required.
Reactive effects wire directly onto real DOM nodes. No diffing, no reconciler, no virtual tree. Only the exact nodes that depend on changed state update.
No defineComponent,
no decorators, no compiler transforms.
Components are typed TypeScript functions.
setContext<T> and
$state<T>
are plain generics.
Quick Start
A reactive counter in under 15 lines. No build config, no boilerplate.
import { $state, useInsert, html, RegisterComponent } from 'pawajs'
export const Counter = () => {
const count = $state<number>(0)
const increment = () => count.value++
const decrement = () => count.value--
useInsert({ count, increment, decrement })
return html`
<div class="flex items-center gap-4">
<button on-click="decrement()">โ</button>
<span>@{count.value}</span>
<button on-click="increment()">+</button>
</div>
`
}
RegisterComponent(Counter)
</number>
$state creates reactive state.
useInsert exposes it to the template.
on-click wires the event โ
with full modifier support like on-click.prevent.debounce.
A complete ecosystem
PawaJS ships with everything you need โ no third-party dependencies required for a production app.
How PawaJS compares
| Feature | React | Vue | Svelte | PawaJS |
|---|---|---|---|---|
| Compiler required | โ JSX | โ Template | โ Yes | โ None |
| SSR model | Hydration | Hydration | Hydration | CRM Protocol |
| DOM model | Virtual | Virtual | Compiled | Real + Augmented |
| TypeScript | Ceremony | Ceremony | Limited | Native |
| Custom event modifiers | โ | โ | โ | โ |
| Runtime lazy loading | โ | โ | โ | โ |
| Any backend SSR | โ | โ | โ | โ |
| Branch pre-loading | โ | โ | โ | โ p:store |
Page Not Found
We couldn't find the page you're looking for. It might have been moved or deleted.
Go back home