Desktop apps in Go.Tiny, fast, fully typed.
One small binary for macOS, Windows and Linux. A web frontend or native UI in Go, with installers and auto-updates included.
- Binary
- ~7MB
- Memory, native UI
- ~44MB
- Memory, webview included
- ~62MB
- CPU at idle
- 0%
type Greeter struct{}
// Greet returns a greeting.
func (Greeter) Greet(name string) string { return "Hello, " + name }
func main() {
mygo.Bind(Greeter{})
mygo.App.WhenReady(func() {
mygo.NewWindow(mygo.WindowOptions{Title: "Hello", URL: "/"})
})
if err := mygo.App.Run(); err != nil {
log.Fatal(err)
}
}
import { Greeter } from "./mygo"; // generated
document.body.textContent = await Greeter.greet("Ada");./mygo is generated from main.go, with the types of your structs and the docs of your methods.
Web frontends
Any web stack, in the webview the OS already has: WKWebView, WebKitGTK, WebView2. No browser bundled.
Native UI
Interfaces written in Go alone and drawn on the GPU: flexbox and grid layout, widgets, text editing, screen reader support. No webview at all.
Typed IPC
Pages call bound Go services, stream values through channels and get typed events. The TypeScript client is generated from your Go code.
Desktop APIs
Windows, menus, tray, dialogs, notifications, global shortcuts, deep links, file associations and more, for windows of both kinds.
Pure Go, no cgo
Build for every platform from any machine.
Ready to ship
App bundles and disk images, Windows installers, Debian packages, code signing, notarization and signed auto-updates.