Packages
Rasen is a monorepo: the paradigm lives in @rasenjs/core, and everything else is a reactive-runtime adapter or a render target.
Framework
| Package | Version | What it is |
|---|---|---|
| @rasenjs/core | The Mountable contract, structural components (each, when, match, show, lazy, fragment), the reactive-runtime boundary and the host-agnostic JSX runtime | |
| @rasenjs/compiler | in repo | JSX transform, static hoisting, structural rewrites and HMR — one plugin for Vite/webpack/Rspack/esbuild plus a Babel adapter for Metro |
| @rasenjs/dom | DOM renderer: element factories, bindings, hydration, compiled templates | |
| @rasenjs/html | HTML string renderer for SSR/SSG | |
| @rasenjs/web | Isomorphic bundle: DOM in the browser, HTML on the server — same imports |
Routing
| Package | Version | What it is |
|---|---|---|
| @rasenjs/router | Headless router: typed route trees, params, guards, history adapters | |
| @rasenjs/router-dom | <a>-based link, DOM RouterView, scroll restoration, layout | |
| @rasenjs/router-html | The same components for the SSR string host |
Reactivity adapters
| Package | Version | Reactivity system |
|---|---|---|
| @rasenjs/reactive-vue | @vue/reactivity | |
| @rasenjs/reactive-signals | TC39 Signals (signal-polyfill) | |
| @rasenjs/reactive-nanostores | nanostores | |
@rasenjs/reactive-alien-signals | in repo | alien-signals (the signal core Vue Language Tools uses) |
@rasenjs/core also ships a zero-dependency built-in runtime, so no adapter is required to get started.
Render targets
| Package | Version | Target |
|---|---|---|
| @rasenjs/canvas-2d | Canvas 2D shapes, text, paths, sprites, groups | |
| @rasenjs/rn-dom | DOM-like document abstraction over React Native's Fabric pipeline | |
| @rasenjs/react-native | in repo | React Native components on top of rn-dom (no React) |
@rasenjs/gfx | in repo | WebGL/WebGPU renderer sharing canvas-2d's shape API |
@rasenjs/gpui | in repo | Native desktop through Zed's GPUI |
@rasenjs/lvgl | in repo | Embedded displays (LVGL + QuickJS) |
@rasenjs/lynx | in repo | Lynx main-thread rendering |
Utilities
| Package | Version | What it is |
|---|---|---|
| @rasenjs/tw | in repo | Tailwind-style class strings → style records |
| @rasenjs/rota | in repo | Headless UI component library (dialogs, popovers, menus, …) |
| @rasenjs/animation | Tween, spring and frame animations as refs | |
| @rasenjs/math | in repo | Vec2/3/4f, Mat3x3f, Mat4x4f, Quatf |
| @rasenjs/assets | in repo | Spine and glTF/GLB parsing, image loading via a host adapter |
@rasenjs/compiler/babel | in repo | Babel plugin for Metro / any Babel pipeline |
Release status
Packages marked with an npm badge are published (all of them are alpha — APIs can still change before 1.0). The rest live in the repository until the next release; install them with your package manager's workspace/link support or build them from source.
The canonical example of everything working together is templates/rasen-ts: SSR + hydration, isomorphic routing, signals and the compiler.