Build native iOS, Android, web and desktop apps in Rust
See the codeBuild native iOS, Android, desktop, and web apps in Rust with a fine-grained reactive runtime, Taffy layout, and native Host renderers. No virtual DOM.
use whisker::prelude::*;
#[whisker::main]
fn app() -> Element {
render! {
Counter
}
}
#[component]
fn counter() -> Element {
let count = signal(0);
render! {
View(style: css!(
flex_grow: 1.0,
display: Display::Flex,
flex_direction: FlexDirection::Column,
justify_content: JustifyContent::Center,
align_items: AlignItems::Center,
gap: px(12),
background_color: Color::hex(0x0B0B0F),
)) {
Text(
value: computed(move || format!("Count: {}", count.get())),
style: css!(color: Color::hex(0xFFFFFF), font_size: px(28)),
)
View(
style: css!(
padding: (px(10), px(20)),
border_radius: px(10),
background_color: Color::hex(0x7C5CFF),
),
on_tap: move |_| count.set(count.get() + 1),
) {
Text(value: "+1", style: css!(color: Color::hex(0xFFFFFF)))
}
}
}
}
Edit, save — the running app hot-reloads in under a second, with state intact.
cargo install whisker-cli
rustup target add aarch64-apple-ios-sim # iOS Simulator on Apple silicon
whisker new my-app && cd my-app
whisker run ios # also: android, web, desktop
Each platform needs its Rust target: aarch64-linux-android for Android (plus
the Android SDK, NDK, and a JDK), wasm32-unknown-unknown for Web, and
x86_64-apple-ios instead for the iOS Simulator on an Intel Mac. Run
whisker doctor to see what is missing, or follow
Installation.
whisker run watches your source and hot-patches the running app in under
a second, without a restart. Components you didn't edit keep their state.
App metadata and platform settings live in whisker.rs. whisker run and
whisker build generate the native projects from it under gen/, so there is
nothing else to run. Add plugins with cargo add and configure them there.
Everything — installation, core concepts, guides, and the full API reference — lives at whisker.rs/docs.
Pre-alpha. The retained Rust runtime, typed styling, Host renderers, modules,
routing, and hot reload work across iOS, Android, Web, and Desktop. APIs may
still change before 1.0.
Licensed under either of Apache-2.0 or MIT at your option.
95 followers · starred Jun 2026
184 followers · starred Jun 2026
117 followers · starred Aug 2026
Rust
83.1%
Swift
8.0%
Kotlin
7.7%
C
1.2%
Build native iOS, Android, web and desktop apps in Rust
See the codeBuild native iOS, Android, desktop, and web apps in Rust with a fine-grained reactive runtime, Taffy layout, and native Host renderers. No virtual DOM.
use whisker::prelude::*;
#[whisker::main]
fn app() -> Element {
render! {
Counter
}
}
#[component]
fn counter() -> Element {
let count = signal(0);
render! {
View(style: css!(
flex_grow: 1.0,
display: Display::Flex,
flex_direction: FlexDirection::Column,
justify_content: JustifyContent::Center,
align_items: AlignItems::Center,
gap: px(12),
background_color: Color::hex(0x0B0B0F),
)) {
Text(
value: computed(move || format!("Count: {}", count.get())),
style: css!(color: Color::hex(0xFFFFFF), font_size: px(28)),
)
View(
style: css!(
padding: (px(10), px(20)),
border_radius: px(10),
background_color: Color::hex(0x7C5CFF),
),
on_tap: move |_| count.set(count.get() + 1),
) {
Text(value: "+1", style: css!(color: Color::hex(0xFFFFFF)))
}
}
}
}
Edit, save — the running app hot-reloads in under a second, with state intact.
cargo install whisker-cli
rustup target add aarch64-apple-ios-sim # iOS Simulator on Apple silicon
whisker new my-app && cd my-app
whisker run ios # also: android, web, desktop
Each platform needs its Rust target: aarch64-linux-android for Android (plus
the Android SDK, NDK, and a JDK), wasm32-unknown-unknown for Web, and
x86_64-apple-ios instead for the iOS Simulator on an Intel Mac. Run
whisker doctor to see what is missing, or follow
Installation.
whisker run watches your source and hot-patches the running app in under
a second, without a restart. Components you didn't edit keep their state.
App metadata and platform settings live in whisker.rs. whisker run and
whisker build generate the native projects from it under gen/, so there is
nothing else to run. Add plugins with cargo add and configure them there.
Everything — installation, core concepts, guides, and the full API reference — lives at whisker.rs/docs.
Pre-alpha. The retained Rust runtime, typed styling, Host renderers, modules,
routing, and hot reload work across iOS, Android, Web, and Desktop. APIs may
still change before 1.0.
Licensed under either of Apache-2.0 or MIT at your option.
95 followers · starred Jun 2026
184 followers · starred Jun 2026
117 followers · starred Aug 2026
Rust
83.1%
Swift
8.0%
Kotlin
7.7%
C
1.2%