The unified framework for the web

Brust serves compiled pages with zero JavaScript by default — and gives server templates, React islands, and native interactions one shared store the moment you add it.

Powered by one core

Brust is built like unified memory: a single state substrate every kind of component addresses directly — no bridges, no event buses, no syncing two worlds. This demo is real. The left panel is hydrated React; the right panel ships zero React. Click either side and both move, through the chip in the middle.

React island

useStore

A hydrated React component, subscribed through useStore.

one store0docs.unified

Native component

zero React

A compiled template with a small signal behavior — no React in its bundle.

0

One defineStore('docs.unified') — both sides write it, all three read it.

Built in, not bolted on

Everything a content site or an app shell needs ships with the framework — each piece reading the same store, typed end to end.

Under the hood, Brust renders compiled templates in a Rust core on the Bun runtime — a detail you mostly never have to think about.