GitPedia

V webui

Use any web browser as GUI, with V in the backend and modern web technologies in the frontend.

From webui-dev·Updated June 12, 2026·View on GitHub·

[build-status]: https://img.shields.io/github/actions/workflow/status/webui-dev/v-webui/ci.yml?branch=main&style=for-the-badge&logo=V&labelColor=414868&logoColor=C0CAF5 [last-commit]: https://img.shields.io/github/last-commit/webui-dev/v-webui?style=for-the-badge&logo=github&logoColor=C0CAF5&labelColor=414868 [release-version]: https://img.shields.io/github/v/release/webui-dev/v-webui?style=for-the-badge&logo=webtrees&logoColor=C0CAF5&labelColor=414868&color=7664C6 [license]: https://img.shields... The project is written primarily in V, distributed under the MIT License license, first published in 2022. Key topics include: brave-browser, browser, chrome, chromium, cross-platform.

Latest release: v2.4.0
October 29, 2023View Changelog →
<div align="center">

Logo

V-WebUI

Features · Installation · Usage · Documentation · WebUI




Use any web browser or WebView as GUI.
With V in the backend and modern web technologies in the frontend.

Screenshot

</div>

Features

  • Parent library written in pure C
  • Fully Independent (No need for any third-party runtimes)
  • Lightweight ~200 Kb & Small memory footprint
  • Fast binary communication protocol between WebUI and the browser (Instead of JSON)
  • Multi-platform & Multi-Browser
  • Using private profile for safety

Installation

sh
v install https://github.com/webui-dev/v-webui

Usage

[!NOTE]
It is recommended to use GCC or Clang to compile a WebUI V program.
TCC is currently not working due to missing header files. E.g.:

v -cc gcc run .

Example

v
import vwebui as ui const html = '<!DOCTYPE html> <html> <head> <script src="webui.js"></script> <style> body { background: linear-gradient(to left, #36265a, #654da9); color: AliceBlue; font: 16px sans-serif; text-align: center; margin-top: 30px; } </style> </head> <body> <h1>Welcome to WebUI!</h1> <br> <input type="text" id="name" value="Neo"> <button onclick="handleVResponse();">Call V</button> <br> <br> <div><samp id="greeting"></samp></div> <script> async function handleVResponse() { const inputName = document.getElementById("name"); const result = await webui.greet(inputName.value); document.getElementById("greeting").innerHTML = result; } </script> </body> </html>' fn greet(e &ui.Event) string { name := e.get_arg[string]() or { panic('expected an argument') } println('${name} has reached the backend!') return 'Hello ${name} 🐇' } fn main() { mut w := ui.new_window() w.bind('greet', greet) w.show(html)! ui.wait() }

Find more examples in the examples/ directory.

Documentation

[!TIP]
Until our online documentation is finished, you can refer to src/lib.v or use V's built-in v doc -comments vwebui in the terminal for the latest overview of exported functions.

  • To use WebUI's debug build in your V-WebUI application, add the -d debug flag. E.g.:

    sh
    v -d webui_log run examples/call_v_from_js.v
  • Run tests locally:

    sh
    VJOBS=1 v -stats test tests/

Supported Web Browsers

BrowserWindowsmacOSLinux
Mozilla Firefox✔️✔️✔️
Google Chrome✔️✔️✔️
Microsoft Edge✔️✔️✔️
Chromium✔️✔️✔️
Yandex✔️✔️✔️
Brave✔️✔️✔️
Vivaldi✔️✔️✔️
Epic✔️✔️not available
Apple Safarinot availablecoming soonnot available
Operacoming sooncoming sooncoming soon

License

Licensed under the MIT License.

Contributors

Showing top 5 contributors by commit count.

View all contributors on GitHub →

This article is auto-generated from webui-dev/v-webui via the GitHub API.Last fetched: 6/22/2026