Create native desktop apps with the simplicity of Go and JavaScript
C

Create native desktop apps with the simplicity of Go and JavaScript

Create native desktop apps with the simplicity of Go and JavaScript

JavaScript
35,019 stars
N/A forks
N/A contributors

README

Project documentation from GitHub

Build Native Desktop Apps with Go and JavaScript

Ever feel like building a desktop app means choosing between performance and productivity? You could go native with C++ or .NET for speed, but then you're managing UI toolkits and complex build systems. Or you could wrap a web app in Electron for that web dev familiarity, but end up with a hefty memory footprint. What if there was a middle ground?

Enter Wails. It's a framework that lets you build lightweight, native desktop applications using Go for the backend and standard web technologies (HTML/CSS/JS) for the frontend. It stitches these two worlds together seamlessly, producing a single binary that runs without a browser engine the size of a small planet.

What It Does

In short, Wails provides a bridge. Your Go code runs the business logic, handles system calls, and manages data. Your frontend, built with whatever JS framework or vanilla code you prefer, provides the user interface. Wails handles the window creation, the communication between the two layers, and the final packaging into a clean executable for Windows, macOS, and Linux.

Think of it like this: you get the power and type-safety of Go for the heavy lifting, combined with the immense ecosystem and rapid UI development of the web, all without the overhead of a full Chromium instance in every app.

Why It's Cool

The magic is in the design choices. Wails uses the native webview component of each operating system (WebKit on macOS, Edge WebView2 on Windows, and WebKitGTK or other on Linux). This means your app is truly native – it uses the system's own web renderer, which keeps the binary small and memory usage low. Your final .app or .exe is often just a few tens of megabytes, not hundreds.

The developer experience is sharp. The CLI tool (wails init) scaffolds your project in seconds. During development, it runs a live-reload server for your frontend and compiles your Go code on the fly. You can call Go methods directly from your JavaScript, and the tooling even generates TypeScript definitions for your Go backend API, giving you autocomplete and type safety across the whole stack.

How to Try It

Getting started is straightforward. First, make sure you have Go installed. Then, install the Wails CLI:

go install github.com/wailsapp/wails/v2/cmd/wails@latest

From there, create and run a new project:

wails init -n MyApp -t react # or svelte, vue, lit, vanilla...
cd MyApp
wails dev

That's it. The wails dev command opens a development window with hot reloads for both your frontend and backend. When you're ready to build, wails build packages everything into a production-ready binary for your current platform.

Final Thoughts

Wails hits a sweet spot for a lot of

Did you like this issue?

Join our weekly newsletter

Related Projects

Love discovering amazing projects?

Help us continue bringing you the best open-source discoveries every week.

Back to Projects
Last updated: Mar 4, 2026