Build reactive web appswith Rust.
Build reactive web apps
with Rust.Write your UI in HTML files. Keep state and frontend logic in Rust. No markup inside Rust macros.
Get started → Read the introduction ↗
Each example is a component: an HTML template and a Rust module.
Read the guide ↗
Counter Live search Keyed lists Async data
Running in your browser
Component <> rs
Page <> rs
↗
These are complete source files. The component files define ``; the page files place that tag inside `<App>`, which starts the app. Four things connect HTML and Rust:
`rust:component`Names the Rust struct. Its fields and methods are available as state.
``Shows a Rust value as text or an attribute, and updates when the signals it reads change.
`on:click` · `bind:value`Runs Rust when an event fires, or keeps an input and a signal in sync.
`template!(…)`Connects the module to its HTML, so the compiler checks both together.
`fusor new` creates `Cargo.toml`, `build.rs`, and `src/lib.rs`; declare the additional component modules in `src/lib.rs`. The App boundary →
How it works
What you write, and what fusor does with it.
Markup in HTML files
Templates are `.html` files with the elements, classes, labels, and forms you would write anyway. Style them with CSS. Rust goes in double-brace bindings and attributes such as `on:click`.
Logic in Rust modules
State is a Rust struct and behavior is its methods, with ordinary imports and types. The compiler checks every expression in your templates against that code.
Fine-grained updates
Your Rust compiles to WebAssembly and runs in the browser. Each binding tracks the signals it reads. When a signal changes, the bindings that read it run again; the rest of the component does not re-render.
Owned cleanup and async
Listeners, effects, and requests belong to the component that started them and stop when it is removed. `<Async>` can keep the previous view until related data is ready.
Try fusor
Install the CLI and create an app. The starter includes a component to edit in HTML and Rust.
1. ### 01Install the CLI macOS / Linux Windows `` 2. ### 02Create your app ``` fusor new my-app cd my-app fusor dev ``` Open the local URL printed in your terminal.