mrkeyoor.com_
Mon 09 Nov 01:46 UTC
Dev Toolsevaluationupdated 20 Oct 2026

wails review

Wails packages a Go backend and an HTML, CSS, and JavaScript interface as a desktop application. It uses native rendering engines and generates bindings so your frontend can call Go methods without building a separate browser-based service.

+82stars / 7d
Verdict

Our Wails v2 build succeeded in 41 seconds, but the test step reported 9 failures out of 57, leaving this checkout short of a clean validation result. Wails remains worth a trial when your backend is already Go and you can own platform-specific desktop checks. Reproduce the failures with full logs before treating this run as a release baseline.

We ran it

Lab card: what happened when we ran wailsScreenshot of wails (wails.io)
Install✓ · 44s147 packages
Build✓ · 41s
Tests✗ · 27s48 passed · 9 failed of 57 (go test)
Repo15360 files~329,704 lines of source · 237.2 MB · 23 CI workflows · tests dir

Answers from our run

Does wails build from source?

Dependencies installed in 44 seconds (147 packages), and the build succeeded in 41 seconds. We cloned commit aa1c3c6 into a clean Debian container with 3 CPUs and no project-specific setup.

Do wails's tests pass?

No. The project's own test command finished in 27 seconds and reported 48 passed, 9 failed (go test).

Who should not use wails?

Teams needing one bundled rendering engine: Wails uses native engines, so a working interface on one platform does not establish compatibility elsewhere.

What are the alternatives to wails?

Electron, Tauri. Our Wails v2 build succeeded in 41 seconds, but the test step reported 9 failures out of 57, leaving this checkout short of a clean validation result.

Setup3/5Install and build passed, but the test step failed and native platform setup remains part of adoption.
Docs4/5Installation and architecture documentation describe native prerequisites, bindings, and the stable-v2 versus beta-v3 split.
CommunityN/AThe public issue list was inspected, but reliable last-push metadata and maintainer support outcomes were not established.
MaturityN/AStable v2 is documented, but this sandbox did not verify graphical behavior, delivery, or operation across supported desktops.

Discussed on

  1. hnWails – Electron Alternative Powered by Go394 points
  2. hnBuild desktop applications using Go and Web Technologies98 points
  3. hnWails: Desktop apps using Go and Web Technologies3 points
  4. hnWails [Beta]: Create Desktop Apps Using Go and HTML/CSS/JS3 points

Who it’s for

Go developers adding a desktop interface to an existing local tool.
Teams with web UI skills who can check rendering and native behavior on each supported platform.
Applications that need Go method bindings, generated TypeScript definitions, and native menus or dialogs.

Who it’s NOT for

Teams needing one bundled rendering engine: Wails uses native engines, so a working interface on one platform does not establish compatibility elsewhere.
Developers expecting a Go-only workstation setup: the installation guide also requires NPM and platform-specific tools, including WebView2 on Windows and GTK/WebKit on Linux.
Products requiring a settled v3 API: the README labels v3 beta and v2 stable.
Teams treating downloaded templates as inert assets: the v2.17.0 release notes warn that template commands execute during development and builds.

Setup reality

Our Wails v2 sandbox install succeeded in 44 seconds with 147 recorded dependencies, and the build succeeded in 41 seconds. The test step exited 1 after 27 seconds: the supplied summary reports 48 passed and 9 failed out of 57. Its tail shows successful packages followed by FAIL, without the failing diagnostics.

The documented workstation needs Go and NPM plus native tools for the target platform. Windows needs WebView2, macOS needs Xcode command-line tools, and Linux needs GCC, GTK, and WebKit. Wails itself does not require a hosted-service credential, though your application may.

Our run covered ./v2/ at commit aa1c3c6 on 2026-10-10 with 3 CPUs and 8 GB RAM. The recorded golang:1.24-bookworm image does not establish the actual toolchain or OS version. These results do not assess beta v3 or certify a graphical application on another desktop.

Wails makes the most sense when the backend is already Go

Moving a Go tool into a desktop window is a good reason to consider Wails. Its README describes bundling Go code with a web frontend into a single binary, with generated TypeScript definitions and native dialogs and menus. You can keep application logic in Go while using the UI technology your team knows.

The choice of renderer follows you into maintenance. Wails uses native rendering engines instead of bundling its own browser. That makes the target machine part of the compatibility story. A team choosing Wails should be willing to verify its interface on every desktop it promises to support, including the native features that a screenshot cannot establish.

What happened when we ran it

Our sandbox installed the Wails v2 project in 44 seconds and built it in 41 seconds, then the test step failed with exit 1 after 27 seconds. The supplied summary reports 48 passed and 9 failed out of 57. Installation recorded 147 dependencies. We ran commit aa1c3c6 on 2026-10-10, entering the project under ./v2/.

The failing log tail lists successful packages, including build assets, bindings, menus, templates, and the regression directories test/4882 and test/5034, then ends with FAIL. It does not show the diagnostics behind the failures. Missing native libraries, a container limitation, and a code defect would each require evidence absent from that tail. We cannot assign a cause.

The recorded configuration had 3 CPUs, 8 GB RAM, and the image golang:1.24-bookworm. The image name does not confirm the actual Go or operating-system version. A successful repository build also does not establish that a packaged graphical application opens, renders correctly, or behaves properly on Windows and macOS. Those are separate acceptance checks.

A single binary still has native prerequisites

The installation guide calls for Go and NPM before the platform-specific requirements. Windows needs WebView2. macOS needs Xcode command-line tools. Linux needs GCC plus GTK and WebKit libraries. The guide documents wails doctor as a dependency check, so the setup story is more involved than copying a Go binary onto a development machine.

Linux users also need to match their distribution's WebKit packaging. The guide describes a WebKitGTK alternative and a corresponding build tag where the older development package is unavailable. That is documented platform work, not an explanation for our failed suite. Keep that distinction when investigating a failure: the existence of a prerequisite does not prove it was missing.

For an adoption trial, use a workstation representative of the machines your developers and users actually have. Start with the operating system you know least well. A successful check there will teach you more than another compile on your main development laptop.

Generated bindings reduce glue while defining a public interface

The architecture documentation explains how bound Go methods become callable JavaScript methods. It also describes generated TypeScript declarations for methods and structs. This is useful when a local desktop utility needs to expose operations such as opening a document or running existing Go processing code without maintaining a separate HTTP API.

That convenience makes interface design consequential. Choose which structs to bind and what errors callers should receive. The documentation says generated calls return promises and that Go error values can reject them. A sensible trial should exercise a failed operation as well as a successful one, so the frontend proves it can recover instead of leaving the user staring at a spinner.

The same guide says anonymous nested structs are unsupported and that fields need valid JSON tags for generated TypeScript. Those are concrete constraints for an existing Go codebase. Inspect the models you intend to expose before assuming the generated interface will match every internal type unchanged.

Stable v2 and beta v3 require separate decisions

The README labels v2 stable and v3 beta, with separate commands and documentation. Our measurements cover v2 only. Choose the generation before following examples or collecting issue reports. A v3 feature or defect cannot establish how the measured v2 checkout behaves.

The v2.17.0 release notes describe development-server protections against cross-origin and DNS-rebinding attacks. They also warn that remote templates contain commands that execute during development and builds. Those are reasons to inspect the release and the template you choose. The release postdates our sandbox run, so its documented fixes are not findings from that run.

Electron changes the runtime choice; Tauri changes the backend language

Electron is based on Chromium and Node.js. Prefer it when that runtime and a JavaScript application fit the product better than keeping Go behind the interface. Tauri uses a Rust backend and system webviews, so it retains the platform-rendering consideration while changing the backend ecosystem. Neither comparison establishes a speed or memory advantage here.

Our setup score of 3/5 means repository setup worked through the build but validation stopped at a failed suite. Documentation earns 4/5 for concrete prerequisites and binding details, with actual platform behavior still requiring verification. Support quality and production maturity remain unscored.

Before committing to Wails, build a small slice of your actual application: a bound Go operation, its error path, and the native dialog it needs. Run that slice on the desktop you are least comfortable supporting, and keep the full failure logs.

Alternatives

ProjectWhat it isPick it when
Electron gh↗A desktop framework based on Chromium and Node.js for JavaScript, HTML, and CSS applications.Pick this instead when choosing a Chromium-based application runtime and staying with JavaScript matters more than keeping the backend in Go.
Tauri gh↗A web UI application framework with a Rust backend and system webviews.Pick this instead when Rust fits your team and you want its app bundler and desktop or mobile platform options.

What people are saying

  1. [github-trending] wailsapp/wails

Sources

  1. Wails README
  2. Wails installation guide source
  3. Wails architecture guide source
  4. Wails v2.17.0 release
  5. Electron README
  6. Tauri README

More dev tools reviews

google-colab-cli · mujoco · SteamTools · git-cliff · blackbird · czkawka · the whole board →