Supported platforms
See which targets are supported today, what CI proves, and where preview status still applies.
Current support matrix
Desktop and WebAssembly are the supported product targets. Android and iOS use the same models, widgets, layout, text, and WGPU renderer, but remain explicit preview targets until physical-device, assistive-technology, lifecycle, and owner-signing validation is complete.
| Target | Status | Validated today | Important boundary |
|---|---|---|---|
| Linux | Supported · runtime-tested | Native gallery, hidden-display interaction, WGPU, accessibility, all features | Some integrations require Wayland/GTK system packages |
| Windows | Supported · CI-compiled | Complete workspace, native implementation, DirectX 12 and Vulkan fallback paths | Platform behavior still receives focused release validation |
| macOS | Supported · CI-compiled | Complete workspace, AppKit integration, Metal surface, bundle-oriented updater path | Signing and notarization belong to the application owner |
| WebAssembly | Supported · browser-tested | WebGPU, browser semantics, responsive live gallery, documentation examples | Requires a WebGPU-capable secure browser context |
| Android | Preview | Cross-compile, debug APK, release AAB, IME, safe areas, activity progress | Physical devices, TalkBack, lifecycle breadth, and Play signing need validation |
| iOS | Preview | Cross-compile, XCFramework, Simulator app, safe areas, IME, ActivityKit bridge | Physical devices, VoiceOver, provisioning, archive signing, and TestFlight need validation |
Select platform integrations deliberately
Core UI capabilities are selected by Cargo target. Native entry points and integrations such as trays, system dialogs, WebViews, native popovers, desktop backdrops, Android services, and iOS ActivityKit stay opt-in because their dependencies and lifecycle rules differ.
Reference files
These are the implementation and guide files used for this chapter.
README.mddocs/native-mobile.md.github/workflows/ci.ymlThe current support matrix rendered by Argui
The Rust file below is imported verbatim by this page and compiled into the WebAssembly application running underneath it.
use argui::{
runtime::{Context, Render},
text::TextStyle,
ui::{Axes, Element, Overflow, ScrollConfig, Sides, length, percent},
widgets::default_theme,
};
const PLATFORMS: [(&str, &str, &str); 6] = [
(
"Linux",
"Supported · runtime-tested",
"Native WGPU, input, accessibility, windows, and the complete gallery.",
),
(
"Windows",
"Supported · CI-compiled",
"Native WGPU with DirectX 12 and Vulkan fallback paths.",
),
(
"macOS",
"Supported · CI-compiled",
"Native AppKit windowing, Metal rendering, and desktop integration.",
),
(
"WebAssembly",
"Supported · browser-tested",
"WebGPU rendering, browser semantics, and the complete live gallery.",
),
(
"Android",
"Preview",
"Cross-compilation, APK/AAB packaging, IME, safe areas, and activity progress.",
),
(
"iOS",
"Preview",
"XCFramework/Simulator packaging, safe areas, IME, and ActivityKit progress.",
),
];
pub struct Example;
impl Render for Example {
fn render(&mut self, cx: &mut Context<Self>) -> Element {
let themes = default_theme(cx.environment());
let theme = themes.resolve(cx.environment().color_scheme);
let cards = PLATFORMS.into_iter().map(|(platform, status, detail)| {
Element::column([
Element::text(platform).text_style(TextStyle {
color: theme.foreground,
font_size: 18.0,
weight: 700,
..TextStyle::default()
}),
Element::text(status).text_style(TextStyle {
color: theme.primary,
font_size: 13.0,
weight: 650,
..TextStyle::default()
}),
Element::text(detail).text_style(TextStyle {
color: theme.muted_foreground,
font_size: 13.0,
..TextStyle::default()
}),
])
.padding(Sides::length(16.0))
.gap(7.0)
.background(theme.card)
.border(argui::paint::Border::all(1.0, theme.border))
.radius(argui::paint::CornerRadii::all(10.0))
});
Element::column([
Element::text("Argui platform support").text_style(TextStyle {
color: theme.foreground,
font_size: 28.0,
weight: 760,
..TextStyle::default()
}),
Element::text(
"Desktop and Web are supported today. Android and iOS are explicit preview targets.",
)
.text_style(TextStyle {
color: theme.muted_foreground,
font_size: 14.0,
..TextStyle::default()
}),
Element::column(cards).gap(10.0),
])
.width(percent(1.0))
.height(percent(1.0))
.min_height(length(0.0))
.padding(Sides::length(24.0))
.gap(16.0)
.background(theme.background)
.overflow(Axes {
x: Overflow::Hidden,
y: Overflow::Auto,
})
.scroll_config(ScrollConfig::default().scrollbar(theme.scrollbar.clone()))
}
}
Starting this lesson’s WebAssembly module…