vivaui/viva
Developer ToolsBuild native Go desktop apps that render through each OS's own window and GPU APIs, without a WebView or bundled runtime.
Viva is a Go desktop UI framework for macOS, Windows, and Linux. Instead of hosting a WebView or shipping a browser engine, applications call the platform's own window and GPU APIs: Cocoa and Metal on macOS, Win32 with Direct3D 11 on Windows, and XCB with Vulkan on Linux. It targets small release binaries, low idle resource use, and direct reach into native platform features. Mobile is explicitly out of scope.
One concrete workflow
A new project starts from viva init, which writes a runnable window, a headless test, a viva.toml, and an AGENTS.md describing the programming model. viva dev gives hot reload: saving a file updates the window while keeping its state. viva build produces a reproducible release program for darwin, windows, linux, or web; viva package adds each platform's installer format. The viva command is a build tool only and is not linked into the shipped program.
How it works
The framework keeps a retained scene of stable nodes and updates only the rectangles that changed; the README reports O(1) localized updates with no hot-path allocations, event-driven repainting, and no idle frame loop. A scroll through a 1000-row list is claimed to virtualize to the visible window and repaint once. Drawing is event-driven, so there is no continuous render loop when nothing changes.
Viva also maintains a separate semantic accessibility tree mirrored into NSAccessibility, Windows UI Automation, and Linux AT-SPI objects, with actions flowing back to the app through a handler; this is documented separately in the accessibility notes. Status-area icons, multi-window apps, custom titlebars, and system secret storage round out the native integration surface.
Requirements and current status
Go 1.26 or newer is required, but the tooling can download the official toolchain on first use. macOS needs the Xcode command-line tools because Viva reaches Cocoa and Metal through cgo. Linux needs X11 with system XCB and Vulkan loaders. Windows needs Direct3D 11 and DirectWrite. System libraries are loaded at runtime and none are bundled.
The status list is candid about maturity: macOS is the fullest backend, while Windows and Linux are labeled experimental. Native label renderers draw single-line labels only, and the browser preview uses a Canvas2D backend. Cross-compilation, Wine/DXVK smoke tests, and conformance scenarios are described, but some paths are only checked on specific virtual machines or need real hardware. The repository's own measurements cover its own programs, so treat performance claims as author-reported for those settings.
License is Apache-2.0. See the build and packaging guide, the accessibility docs, and the live site for guides and component previews.
Written by AI from the project's README, updated October 30, 2026. The project's own docs are the source of truth.