Beautiful UIs in Rust. Cross-platform. Dead simple.
See the code
Ply is an engine for building apps in Rust that run on Linux, macOS, Windows, Android, iOS, and the web. One codebase, every platform. GPU-accelerated rendering, text editing, styling, accessibility, shaders, networking, sound and more, made easy and fast.
cargo install plyx
plyx init
ui.element().width(grow!()).height(grow!())
.background_color(0x262220)
.corner_radius(12.0)
.layout(|l| l.direction(TopToBottom).padding(24))
.children(|ui| {
ui.text("Hello, Ply!", |t| t.font_size(32).color(0xFFFFFF));
});
Everything is an element. Builder pattern, closure-based children, one import. Read the docs →
ply.set_debug_mode(true)render_to_texture, procedural vectorsui.hovered(), ui.pressed(), ui.focused() inline, callback events, ID-based queries| Platform | Build command |
|---|---|
| Desktop (Linux, macOS, Windows) | cargo build |
| Web (WASM) | plyx web |
| Android | plyx apk |
| iOS | plyx ios |
| Feature | What it adds |
|---|---|
a11y | Screen reader support via AccessKit (default) |
text-styling | Rich text with inline colors, animations, effects |
tinyvg | TinyVG vector graphics |
built-in-shaders | Pre-made shader effects (foil, glow, CRT, etc.) |
shader-build | Shader compilation pipeline (SPIR-V Cross) |
net | HTTP and WebSocket |
net-json | JSON deserialization for network responses |
storage | Cross-platform persistent file storage |
audio | Sound playback (WAV, OGG) |
See the interactive examples on the website:
Zero-Clause BSD. Use it for anything. No attribution required.
(top 24 of 33)
3,743 followers · starred Mar 2026
580 followers · starred Mar 2026
912 followers · starred Jul 2026
721 followers · starred Mar 2026
Beautiful UIs in Rust. Cross-platform. Dead simple.
See the code
Ply is an engine for building apps in Rust that run on Linux, macOS, Windows, Android, iOS, and the web. One codebase, every platform. GPU-accelerated rendering, text editing, styling, accessibility, shaders, networking, sound and more, made easy and fast.
cargo install plyx
plyx init
ui.element().width(grow!()).height(grow!())
.background_color(0x262220)
.corner_radius(12.0)
.layout(|l| l.direction(TopToBottom).padding(24))
.children(|ui| {
ui.text("Hello, Ply!", |t| t.font_size(32).color(0xFFFFFF));
});
Everything is an element. Builder pattern, closure-based children, one import. Read the docs →
ply.set_debug_mode(true)render_to_texture, procedural vectorsui.hovered(), ui.pressed(), ui.focused() inline, callback events, ID-based queries| Platform | Build command |
|---|---|
| Desktop (Linux, macOS, Windows) | cargo build |
| Web (WASM) | plyx web |
| Android | plyx apk |
| iOS | plyx ios |
| Feature | What it adds |
|---|---|
a11y | Screen reader support via AccessKit (default) |
text-styling | Rich text with inline colors, animations, effects |
tinyvg | TinyVG vector graphics |
built-in-shaders | Pre-made shader effects (foil, glow, CRT, etc.) |
shader-build | Shader compilation pipeline (SPIR-V Cross) |
net | HTTP and WebSocket |
net-json | JSON deserialization for network responses |
storage | Cross-platform persistent file storage |
audio | Sound playback (WAV, OGG) |
See the interactive examples on the website:
Zero-Clause BSD. Use it for anything. No attribution required.
(top 24 of 33)
3,743 followers · starred Mar 2026
580 followers · starred Mar 2026
912 followers · starred Jul 2026
721 followers · starred Mar 2026