macOS · Windows · Linux

Native desktop applications, written in Go.

Viva draws windows, text and components straight through each operating system's own APIs and the GPU. There is no WebView, no browser engine and no bundled runtime, and an idle application does no work at all.

stripped executable
1.6 MiB
GPU submissions while idle
0
idle CPU
0.0%

This is the real component

The control below is the production Go component compiled to WebAssembly, not an HTML imitation. The browser build draws with Canvas2D; native builds use Metal, Direct3D 11 or Vulkan.

Enable JavaScript to run the preview. Go source and install commands remain available.

What Viva is built around

Native, not a browser

macOS calls Cocoa and Metal, Windows calls Win32 and Direct3D 11, Linux calls XCB and Vulkan from the system's own libraries. An application links system frameworks and the Go runtime, nothing else.

Idle means idle

An unchanged frame does no layout, rebuilds no scene and submits nothing to the GPU. There are no background timers or polling loops by default.

Components you own

viva add copies a component's Go source into your project. There is no component registry and no stylesheet parser at runtime: a component is ordinary Go that you are free to edit.

Testable without a window

A headless driver runs the real painter, input router and focus rules from explicit calls and, on macOS, can capture the pixels a window would show, so tests need no desktop session.

One API, three native backends

Cocoa and Metal on macOS, Win32 and Direct3D 11 on Windows, and X11 and Vulkan on Linux. An application links the system frameworks and the Go runtime, nothing else.

Desktop only

Viva targets macOS, Windows and Linux. Mobile is out of scope, so desktop APIs are never weakened to keep a mobile door open.

Measured, reproducibly

Every number is quoted from a benchmark report in the repository, on the machine and build named there — you can rerun them yourself.

Stripped executable
1.6 MiB1,697,506 bytes, a minimal macOS window with a Metal pipeline (M0, Apple silicon).
GPU submissions while idle
0After the first present an unchanged window submits nothing, and settled CPU reads 0.0% (M0).
Retained scene, 10,000 nodes
2.0 ns · 12.4 nsDraining an unchanged scene, then updating one node. Both take zero allocations (M1).
The component showcase
1.9 MiB1,972,834 bytes stripped: the native showcase application with its previews and icons (Apple M2 Pro).

Full benchmarks →

Where it runs today

macOS

Cocoa · Metal · CoreText

Native text input with Chinese IME composition, accessibility, status items, and packaging to .app, .zip and .dmg.

Windows

Win32 · Direct3D 11 · DirectWrite

Native windows, Direct3D rendering, system text and packaged amd64 and arm64 builds.

Linux

X11 · Vulkan · Pango/Cairo

X11 through system XCB and Vulkan libraries, with Pango/Cairo text and packaged builds.

Platform details →