Real native widgets
GTK4 + libadwaita on Linux, AppKit on macOS — the same widget classes a native app would use, not a styled-to-look-native approximation.
A Bun/TypeScript child process renders a React tree over a local binary protocol (NDP) into a Zig
host that owns real native widgets. There is no embedded browser and no DOM — the widgets your
app renders are GtkBox, AdwHeaderBar, NSButton, NSSplitView. One React tree automatically
adopts both platforms’ current design languages (Liquid Glass on macOS, Adwaita on GNOME), because
there’s no facsimile layer standing between your JSX and the platform’s own widget toolkit.
Real native widgets
GTK4 + libadwaita on Linux, AppKit on macOS — the same widget classes a native app would use, not a styled-to-look-native approximation.
Automation-first
Every widget is inspectable and drivable over a JSON-RPC socket from the moment it mounts — coding agents are a first-class consumer, not an afterthought.
Theme-neutral styling
style is geometry (padding, layout), cssClasses reaches named design-language classes.
Dark mode follows the system automatically on both platforms.
React 19, for real
Hooks, Suspense, transitions, and hot reload — driving native widget trees instead of a DOM.