A Go framework for building cross-platform desktop apps with a web frontend (React, Vue, Svelte, etc.) using native rendering engines.
egoist/mygo
A Go framework for building desktop apps with either a web frontend in the OS webview or a native UI drawn on the GPU.
- Stars
- 5,015
- Forks
- 303
- Open issues
- 100
- Last commit
- 20 hours ago
What is it?
MyGo lets developers build desktop applications in Go with two kinds of window: one that shows a web page in the webview already provided by the operating system (WKWebView on macOS, WebKitGTK on Linux, WebView2 on Windows), and one that uses a native Go UI toolkit drawn by MyGo on the GPU, with no HTML, JavaScript or webview. A single window or app can mix both.
For web frontends, Go services are bound and exposed through a TypeScript client generated from the Go code, with typed IPC, channels for streaming values and typed events. The project is pure Go without cgo, so it can be cross-compiled from any machine. Desktop APIs cover windows, menus, tray, dialogs, notifications, global shortcuts, deep links, file associations and system accent color.
The project also includes packaging and distribution tooling: app bundles, disk images, Windows installers, Debian packages, code signing, notarization and signed auto-updates with delta updates.
Key features
- 01Web page windows that call Go code through a generated TypeScript client.
- 02Native UI toolkit written in Go with flexbox and grid layout, widgets and virtualized lists.
- 03Pure Go with no cgo, enabling cross-platform builds from any machine.
- 04Desktop APIs for menus, tray, dialogs, notifications, global shortcuts and deep links.
- 05Packaging and signed auto-updates for macOS, Windows and Linux.
Use cases
- Building a desktop tool where the team wants Go for both backend logic and UI.
- Creating lightweight native-UI apps that open quickly and use little memory.
- Shipping a cross-platform desktop app with code signing and auto-updates.
- Adding a Go-backed web frontend to a desktop app using the system webview.
Quick start
- 1
Install Go 1.27.3+ and Bun
- 2
Create a web-frontend app
bunx mygo-cli init my-app - 3
Enter the project folder
cd my-app - 4
Start the development server
bun run dev
Things to know
- The quick start requires Go 1.27.3 or newer and Bun.
Featured in Repolode Weekly
- Issue #3 · Big MoE models streamed from SSD, and millisecond Rust rebuilds
A Go desktop framework where you choose a web frontend in the OS webview or a native GPU-drawn UI. It is pure Go with no cgo, so you can cross-compile from any machine.
In collections
Topics
FAQ
- What is mygo?
- A Go framework for building desktop apps with either a web frontend in the OS webview or a native UI drawn on the GPU. MyGo lets developers build desktop applications in Go with two kinds of window: one that shows a web page in the webview already provided by the operating system (WKWebView on macOS, WebKitGTK on Linux, WebView2 on Windows), and one that uses a native Go UI toolkit drawn by MyGo on the GPU, with no HTML, JavaScript or webview. A single window or app can mix both.
- Is mygo free to use? What license does it have?
- mygo is open source under the MIT license. Check the license terms before using it in commercial products.
- Is mygo still maintained?
- Actively maintained. The last commit to mygo was on Nov 6, 2026.
- What can I use mygo for?
- Building a desktop tool where the team wants Go for both backend logic and UI. Creating lightweight native-UI apps that open quickly and use little memory. Shipping a cross-platform desktop app with code signing and auto-updates. Adding a Go-backed web frontend to a desktop app using the system webview.
- How do I install mygo?
- Install Go 1.27.3+ and Bun Create a web-frontend app: bunx mygo-cli init my-app Enter the project folder: cd my-app Start the development server: bun run dev
- Where can I get mygo?
- The source code and installation instructions are on GitHub: https://github.com/egoist/mygo
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
A Python GUI toolkit that renders apps with each operating system's native widgets.
A Zig toolkit for building desktop apps with native UI drawn on the GPU, or with a web page in the system webview.
A tiny C/C++ library that embeds a native web view in desktop apps, using WebKit on Linux and macOS and WebView2 on Windows.
A Rust engine for native cross-platform UI, letting you write apps in Rust or TSX and render with each platform's own widgets.
A cross-platform native UI engine where app logic runs in Go and each platform draws with its own native views.