docs/src/content/docs/faq.mdx
Wails is a framework for building desktop applications using Go and web technologies. It provides native OS integration whilst allowing you to build your UI with HTML, CSS, and JavaScript.
Wails:
Electron:
Yes! Wails v3 is suitable for production applications. Many companies use Wails for their desktop applications.
Basic Go knowledge is helpful but not required. You can start with simple services and learn as you go.
Yes! Wails works with:
Use bindings:
// Go
func (s *Service) Greet(name string) string {
return "Hello " + name
}
// JavaScript
import { Greet } from './bindings/changeme/service'
const message = await Greet("World")
Yes! Wails generates TypeScript definitions automatically.
Use your browser's dev tools:
wails3 build
Your application will be in bin/.
Yes! Build for other platforms:
wails3 build -platform windows/amd64
wails3 build -platform darwin/universal
wails3 build -platform linux/amd64
Use platform-specific tools:
See the Installers Guide.
macOS:
codesign --deep --force --sign "Developer ID" MyApp.app
Windows: Use SignTool with your certificate.
Yes! Wails v3 has native multi-window support:
window1 := app.Window.New()
window2 := app.Window.New()
Yes! Create system tray applications:
tray := app.SystemTray.New()
tray.SetIcon(iconBytes)
tray.SetMenu(menu)
Yes! Wails provides native dialogs:
path, _ := app.Dialog.OpenFile().
SetTitle("Select File").
PromptForSingleSelection()
Yes — Wails v3 includes a built-in self-updater (app.Updater) with pluggable providers for GitHub Releases, keygen.sh, and Sparkle AppCast, cryptographic signature verification, and a default UI you can theme or replace. See the In-App Updater guide and the Self-Updating Wails App tutorial.
Go binaries include the runtime. Reduce size:
wails3 build -ldflags "-s -w"
See the Performance Guide.
Yes! Use dev mode:
wails3 dev
Regenerate bindings:
wails3 generate bindings
Check if you called Show():
window := app.Window.New()
window.Show() // Don't forget this!
Ensure event names match exactly:
// Go
app.Event.Emit("my-event", data)
// JavaScript
OnEvent("my-event", handler) // Must match
Common fixes:
go mod tidywails.json configurationcd frontend && npm run buildgo install github.com/wailsapp/wails/v3/cmd/wails3@latestv3 offers:
See the Migration Guide.
Yes, v2 will receive critical updates.
Yes, they use different import paths.
See the Contributing Guide.
Ask in Discord or open a discussion.