project

Glaze

Desktop WebView binding for Go, without CGO, focused on explicit integration, practical utilities, and interactive examples.

0 related articles GitHub

Glaze is a Go binding for desktop WebViews. It’s built on top of webview/webview and purego to keep CGo out of the picture.

The project started as a fork of go-webview but has diverged enough to live as a separate codebase with its own goals.

The reason for avoiding CGo: dragging a C toolchain into a Go project just to open a window with HTML breaks too much of what I like about the Go ecosystem – easy cross-compilation, reproducible builds, go install that works for whoever clones the repo. With purego, the native library is loaded at runtime via dlopen / LoadLibrary. The native libraries ship embedded in the binary and are extracted at runtime, with BLAKE2b-256 verification to make sure the file on disk matches the embedded bytes.

What sits outside the core:

  • BindMethods – registers every exported method on a Go struct as a JavaScript function, with snake_case names. Useful when you have a service object and want to expose a consistent API without writing one Bind call per method.
  • RenderHTML – renders a Go html/template for use with SetHtml. For when you want server-style template rendering without running a server.
  • AppWindow – wraps an http.Handler in a native window backed by a local HTTP server. macOS and Linux default to Unix sockets, Windows uses TCP loopback. The shortest path from an existing HTTP app to a desktop app without rewriting routes, templates, or assets.

Works on Windows, macOS, and Linux. Examples in the repository include Game of Life, Mandelbrot, Doom Fire, Raycasting, and a REPL for Filo.