Native UIs at the density of Tailwind, the quality of Flutter.
Vel is a declarative UI framework that compiles to native C++ — with a reactive core, a from-scratch GPU renderer, and first-class C/C++ interop. Author UIs in 2.40× fewer tokens than React (3.44× vs Flutter), then ship one native binary to macOS, Windows and the web.
use "backend/users.h" #UserList @users: std::vector<User> = await fetchUsers() @filter = "" V g=md p=lg In placeholder="Search…" value=$filter if $users.size() > 0 List of=$users as=u Card -> click => open(u.id) H g=sm Avatar src=$u.avatar V T $u.name font=bold T $u.email fg=fgMuted else Spinner
#include "vel/App.h" #include "users.vel.h" int main() { vel::App app(900, 640, "Demo"); app.setRoot(std::make_unique<UserList>()); return app.run(); }
vel bench token vel bench layout VEL_PERF=60 glfwWaitEvents Three strictly-layered tiers
Registry → Framework → Engine
One-way dependencies, never the reverse. Each tier is independently useful — and the engine, Lume, stands on its own.
Registry
Opinionated, beautiful-by-default components — Btn, Card, Table, Tabs, Dialog, Chart. shadcn-grade UI in one-token names.
Framework
The reactive substrate. Signals, Computed, AsyncSignal, layout, router, net, storage — ~0 CPU when idle via damage tracking.
Lume Engine
A from-scratch GPU 2D renderer on Dawn/WebGPU. Analytic SDF shapes, FreeType glyph atlas, one source → Metal, D3D12, Vulkan, browser.
Why teams pick Vel
Compiles to native
velc emits idiomatic C++ that links into libvel. No VM, no JS bridge, no Electron. Just a native binary.
Beautiful by default
Every primitive renders well with zero config. Theme tokens (bg2, accent, md) are the language of styling.
Reactive substrate
Signals, Computed and AsyncSignal drive rebuilds. State, scroll, focus and drag survive hot reload.
First-class C/C++ interop
use "header.h" and call your backend directly. The framework knows nothing about your data layer.
One source, everywhere
macOS, Windows and the browser render identically — native WebGPU via WebAssembly.
Accessible on the web
A live DOM mirror gives screen readers, keyboard nav, IME and focus rings. Honors reduced-motion.
See what Vel builds.
Edit Vel live in your browser right now — or get in touch about access for your team.