A compile-time UI framework that turns ordinary classes and functions
into surgical DOM updates. No virtual DOM. No hooks. No signals. Just your code — made reactive at build time.
The fastest compiled UI framework — ahead of Solid, Svelte, Vue, and React.
No new primitives to learn. Stores are classes. Components are classes or functions. Computed values are getters. The compiler does the rest.
No signals, hooks, dependency arrays, or compiler directives. You already know the entire API — it's just JavaScript classes and functions.
The Vite plugin analyzes your JSX at build time, figures out which DOM nodes depend on which state, and wires up surgical patches — invisibly.
Updates go straight to the elements that changed. No diffing, no reconciliation, no overhead. Just direct DOM mutations, generated at compile time.
State lives in ordinary classes wrapped by a deep Proxy. Mutate properties directly — array methods, nested objects, everything just works.
State management and routing are built in — ~13 kb gzipped with the router, ~10 kb without. Zero runtime dependencies. No extra packages to choose between.
Built-in client-side router, 35+ accessible UI components, mobile primitives, VS Code extension, and a project scaffolder. Everything you need, nothing you don't.
Stores are classes with state and methods. Components return JSX. The compiler makes it reactive.
import { Store } from '@geajs/core' class CounterStore extends Store { count = 0 increment() { this.count++ } decrement() { this.count-- } } export default new CounterStore()
import { Component } from '@geajs/core' import store from './store' export default class Counter extends Component { template() { return ( <div class="counter"> <span>{store.count}</span> <button click={store.increment}>+</button> <button click={store.decrement}>-</button> </div> ) } }
import Counter from './Counter' const app = new Counter() app.render(document.getElementById('app'))
Faster than Solid. Faster than Svelte. Benchmarked with js-framework-benchmark — the standard stress test for UI frameworks.
Lower is better (1.00 = fastest). Weighted geometric mean from js-framework-benchmark.
A complete toolkit for building modern web applications, from single components to full SPAs.
Extend Component, add local reactive state, implement template(). OOP the way it was meant to be.
Export a function that returns JSX. Converted to a class component at build time — zero overhead.
Built-in RouterView, Link, route params, wildcards, and programmatic navigation. No extra packages.
All event handlers compile to a single delegated listener per event type. Efficient by default.
Array methods like push, splice, sort produce granular change events — append, reorder, swap — not full rerenders.
35+ accessible components built on Zag.js — dialogs, menus, selects, tabs, tooltips, accordions, comboboxes, and more. Ready to style.
ViewManager, sidebar, tab views, pull-to-refresh, infinite scroll, swipe gestures — all iOS-style smooth.
The Vite plugin provides hot module replacement. Edit a store or component and see it update instantly.
Component completion, prop inference, event attribute hints, hover details, and unknown component warnings.
Props follow JavaScript semantics. Objects and arrays are passed by reference — the child mutates them, both sides update. No emit, no v-model, no callback wiring. It's just how the language works.
Derived state is a standard
get
accessor on your store. No useMemo, no computed() wrapper. The compiler detects dependencies and subscribes
automatically.
Ships with agent skills that teach Cursor, Codex, and other AI assistants the full Gea API. Scaffold and iterate on Gea apps with complete AI assistance out of the box.
One command scaffolds a Vite project with TypeScript, stores, components, and the plugin pre-configured.
Click to copy
The fastest compiled UI framework is MIT licensed and open source. Jump in and build something extraordinary.