mrkeyoor.com_
Fri 25 Sept 00:01 UTC
Dev Toolsevaluationupdated 26 Aug 2026

wails review

Wails turns a Go backend and a web frontend into a desktop application that uses the operating system's webview. It gives Go developers an Electron-like workflow without shipping a separate browser engine inside every app.

+49stars / 7d
Verdict

Our Wails v2 build finished in 33 seconds, but 4 of 28 tested packages failed in the 25-second suite, so adopters should reproduce the full cross-platform matrix before shipping. Wails is a good fit when the backend is already Go and a web UI is the fastest route to a desktop product. Choose Electron for one bundled browser runtime, or Fyne when avoiding JavaScript matters more than frontend flexibility.

We ran it

Lab card: what happened when we ran wailsScreenshot of wails (wails.io)
Install✓ · 35s147 packages
Build✓ · 33s
Tests✗ · 25s24 passed · 4 failed of 28 (go test)
Repo11949 files~319,485 lines of source · 160.7 MB · 20 CI workflows · tests dir

Answers from our run

Does wails build from source?

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

Do wails's tests pass?

Not all of them: 24 of 28 passed and 4 failed when we ran the project's own test command (go test). Some failures need services or credentials a bare container does not have.

Who should not use wails?

Teams that need identical rendering across every desktop: Wails uses each operating system's native webview, so engines and installed runtimes differ.

What are the alternatives to wails?

Tauri, Electron, Fyne. Our Wails v2 build finished in 33 seconds, but 4 of 28 tested packages failed in the 25-second suite, so adopters should reproduce the full cross-platform matrix before shipping.

Setup3/5Fast Go build, with native webview dependencies per platform
Docs4/5Clear version split and extensive platform documentation
Community5/5Fresh release, daily changes, and active proposal process
Maturity4/5Stable v2 is established; v3 remains a separate beta

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 command-line or local service.
Web developers who want to use React, Vue, Svelte, or plain JavaScript for a native-window app.
Teams willing to test behavior on Windows WebView2, macOS WebKit, and Linux WebKitGTK separately.
Projects that benefit from generated TypeScript bindings for Go methods and structs.

Who it’s NOT for

Teams that need identical rendering across every desktop: Wails uses each operating system's native webview, so engines and installed runtimes differ.
Developers expecting one dependency-free cross-build: Linux requires native WebKitGTK tooling, and Wails relies on platform packaging and signing steps.
Applications with heavy Windows bridge traffic unless they test it under load: issue #4418 reports v2 JavaScript promises that never resolve through WebView2.
Strict TypeScript projects that assume generated slice and map types always include null: issue #3588 documents a v2 mismatch.
Teams seeking a settled mobile framework: the README calls v3 beta, and current Android work belongs to that moving branch.

Setup reality

Our sandbox installed 147 Go packages in 35 seconds and built the v2 project in 33 seconds. Tests finished with exit 1 after 25 seconds: 24 packages passed and 4 failed out of 28. The supplied log tail names successful template and regression packages, then ends with FAIL, so it does not identify the 4 failures.

A working app also needs a frontend toolchain and the native webview dependencies for each target. Windows uses WebView2, macOS uses the system webview, and Linux uses WebKitGTK. Code signing, notarization, installers, and cross-platform release jobs remain application work.

The repository contains stable v2 and beta v3 in parallel. Our measurements came from ./v2/, so they should not be read as a test of v3 or its mobile work.

Wails puts a Go API behind the operating system webview

Wails packages Go code, compiled frontend assets, and a desktop window into one application. JavaScript can call exported Go methods, while generated TypeScript definitions describe the bound structs and functions. Native dialogs, menus, theme detection, window effects, and an event bus cover the common gaps between a browser UI and a desktop program. The frontend can use familiar frameworks or plain HTML, CSS, and JavaScript.

The main architectural choice is the system webview. Windows runs WebView2, macOS uses WebKit, and Linux uses WebKitGTK. This keeps Wails from bundling a full Chromium copy with every application. It also means the rendering engine and native dependencies vary by platform. A design that looks correct on one machine still needs testing on the other 2 desktop families, especially around window controls, file dialogs, drag and drop, and frontend-to-Go calls.

Stable v2 and beta v3 are different adoption decisions

The repository houses 2 active generations. The README labels v2 stable and v3 beta, with separate install commands and documentation sites. Release v2.14.0 was published on August 10, 2026, and fixed error handling around downloading the WebView2 bootstrapper. v3 contains newer APIs and mobile work, but its beta status makes it a poor default for a product that needs a settled compatibility contract today.

This split can confuse research because current pull requests often target v3 while the production release remains v2. Pick a generation before reading examples or judging an issue. Our lab entered the ./v2/ project and used its Go module. None of our build or test results says whether a v3 desktop or Android application works.

For a new commercial desktop app, stable v2 is the conservative choice unless a specific v3 feature is worth migration work. Existing v2 teams should also resist copying a v3 fix into their plan without checking the branch and API. Wails uses enhancement proposals for public behavior changes, which gives larger changes a visible review trail.

What happened when we ran it

Our sandbox installed 147 Go packages in 35 seconds using Go 1.24 on fresh Debian with 3 CPUs and 8 GB of RAM. Building v2 succeeded in another 33 seconds. The repository was large, with 11,949 files, about 319,485 lines of source, and 160.7 MB checked out. It included 20 CI workflow files and a tests directory, though no Dockerfile.

The test command exited with status 1 after 25 seconds. Of 28 packages counted by the harness, 24 passed and 4 failed. The log tail supplied to this review shows template packages with no test files, successful runs for test/4882 and test/5034, and then the final FAIL. It does not include the error output for the 4 failed packages, so we cannot say whether system libraries, the container, or project code caused them.

A successful 33-second build is useful evidence that the v2 source and Go dependency graph assemble in a clean container. The 4 failures still matter because desktop frameworks touch platform behavior that a plain compile cannot exercise. Before adopting Wails, run its suite on the same Windows, macOS, and Linux versions that your users will run.

Native webviews save bundle weight and add platform variance

Wails is attractive when your business logic already lives in Go. You can expose selected methods directly to the frontend without maintaining an HTTP server, local port, authentication scheme, or browser launch flow. Generated bindings reduce handwritten glue and make Go structs visible to TypeScript. A single compiled application is also easier for many users to understand than a daemon plus a browser tab.

The bridge is part of the risk surface. Issue #4418 reports that a v2 Windows application with heavy WebView2 bridge traffic sometimes left JavaScript promises unresolved, while the same application worked on Linux. The reporter moved affected calls to HTTP as a workaround. The report cannot establish frequency across Wails apps. It gives teams with chatty frontends a precise stress test: fire concurrent bound-method calls soon after startup and fail any promise that never settles.

Generated types need runtime checks too. Issue #3588 shows a nil Go slice serialized as null while generated TypeScript interfaces described only an array under strict null checks. Teams should decide whether backend methods normalize nil collections to empty ones or frontend code accepts nullable values. Generated code saves time only when its contract matches the values crossing the bridge.

Linux dependencies and release packaging remain your job

Wails can create and build a project, yet desktop delivery reaches beyond go build. Linux needs GTK and WebKitGTK development packages. Issue #4457 reports a Fedora 41 case where wails doctor said the WebKit dependency was installed even though wails dev failed until the package was added. That report is narrow, though it argues for making an actual sample build part of workstation validation.

Windows distribution may need the WebView2 bootstrapper, installers, and signing. macOS releases bring signing and notarization. Frontend package installation, icons, application metadata, updates, and per-platform CI are owned by the app team. Wails supplies tooling around many of those steps, but it cannot provide certificates or decide support policy.

The repository was pushed on August 26, 2026, one day after several platform fixes moved through pull requests. GitHub showed 312 open issues and pull requests, which is a work queue rather than 312 confirmed defects. Wails is active, well documented, and mature enough for serious v2 desktop work. Its best users accept the system webview trade: smaller distribution and native integration in return for real cross-platform testing.

Alternatives

ProjectWhat it isPick it when
Tauri gh↗A Rust-backed desktop and mobile framework that also uses system webviews.pick this instead when Rust is acceptable and its security model, plugin system, or mobile direction fits better.
Electron gh↗A JavaScript desktop framework that bundles Chromium and Node.js for a consistent runtime.pick this instead when rendering consistency and the Node ecosystem matter more than binary size and memory use.
FyneA Go GUI toolkit that draws its own widgets instead of embedding a web frontend.pick this instead when you want a Go-only UI and can work within its widget and styling model.

What people are saying

  1. [github-trending] wailsapp/wails

Sources

  1. Wails README
  2. Wails v2.14.0 release
  3. WebView2 bridge report
  4. Generated TypeScript nullability report
  5. Fedora dependency detection report

More dev tools reviews

zeron · cs2-dumper · hackingtool · react-native-continued-task · selfdb · DLSS5oneclick · the whole board →