Skip to main content

frus documentation

frus is a cross-platform UI framework written entirely in Rust. One codebase runs on the desktops (Windows, Linux, macOS), on Android and in the browser, drawn on the GPU by frus itself. The renderer, layout, widgets, gestures, theming, animation and accessibility are all Rust: there is no embedded VM, no second language for the application's logic, and no bridge between your code and the pixels.

Pre-alpha

The crates are on crates.io, and any release may break the API. The roadmap says what is next, and what is known to be missing.

Where to begin​

PageWhat it covers
Starting a frus applicationInstall the frus command, make a project, run it on this computer, a phone and the browser
The guideOne topic per page — layout, style, input, lists, navigation, network, animation, testing, the system around the window
Structuring an applicationWhere each part of a growing application goes
The frus commandcreate, doctor, devices, run, build, hot reload, and the keys while it runs
The VS Code extensionA device picker, F5 with the log in the Debug Console, reload on save, the inspector in the palette
ArchitectureHow the crates fit together, and where a given kind of code belongs

Platforms​

PlatformState
Windows, Linux, macOSWorking: winit and wgpu, screen readers through AccessKit, notifications, the tray, file dialogs, hot reload
AndroidWorking: native activity, Vulkan or OpenGL ES, a real IME, insets, notifications, hot reload
Web (wasm and WebGPU)Functional: rendering, input, fetch, the clipboard, notifications, accessibility through a DOM bridge, hot reload
iOS, native macOSNot started: the shell is isolated, so a new target is a contained job

Every example in the guide is a complete piece of Rust, and frus's own test suite compiles it, so none of them is out of date.