gui/docs/ref/wails-v3/quick-start/why-wails.mdx
Snider 4bdbb68f46
Some checks failed
Security Scan / security (push) Failing after 9s
Test / test (push) Failing after 1m21s
refactor: update import path from go-config to core/config
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-14 10:26:36 +00:00

133 lines
4.6 KiB
Text

---
title: Why Wails?
description: Understand why Wails is the right choice for your desktop application
sidebar:
order: 1
---
Wails combines **Go's performance and simplicity** with **modern web UI flexibility**, enabling you to build beautiful, native desktop applications with the tools you already know.
## Performance That Users Notice
**Wails Applications:**
- **~15MB binaries** (vs Electron's 150MB)
- **~10MB baseline memory** (vs Electron's 100MB+)
- **&lt;0.5s startup time** (vs Electron's 2-3s)
- **Native rendering** using the OS-provided WebView
Users perceive your application as fast, lightweight, and professional.
## Developer Experience
**Write Once, Run Everywhere:**
- One Go codebase for Windows, macOS, and Linux
- Use any web framework (React, Vue, Svelte, vanilla JS)
- Hot reload during development
- TypeScript bindings auto-generated from Go code
Ship faster with less code to maintain.
## Production-Ready Features
**Everything you need:**
- Multiple windows with independent lifecycles
- Native menus (application, context, system tray)
- File dialogs with platform-native UI
- System integration (notifications, clipboard, keyboard shortcuts)
- Code signing and packaging for all platforms
Build professional applications, not prototypes.
## Faster Development
- **One codebase, three platforms** - Write once, build for Windows, macOS, and Linux
- **Use existing skills** - Go for backend, HTML/CSS/JS for UI
- **Instant feedback** - Hot reload during development, compile times measured in seconds
- **Small binaries** - 15MB apps mean faster builds, faster downloads, faster iteration
## When to Choose Wails
**Wails is Perfect For:**
- **Business applications** (CRM, inventory, dashboards, admin tools)
- **Developer tools** (database clients, API testers, deployment tools)
- **Productivity apps** (note-taking, task managers, time trackers)
- **Creative tools** (image editors, video processors, design utilities)
- **Internal tools** (company-specific applications, automation tools)
## Real-World Success Stories
:::tip[Production Applications]
Wails powers real applications used by thousands of users:
- **Database management tools** with complex UIs
- **Financial dashboards** processing real-time data
- **Video editing tools** with native performance
- **Development utilities** used by engineering teams
[See the showcase →](/community/showcase)
:::
## How Wails Works
Unlike Electron which bundles an entire browser and Node.js runtime, Wails takes a fundamentally different approach: your Go code compiles to a native binary, and your UI runs in the operating system's built-in WebView. This architecture delivers the small binaries, fast startup, and low memory usage that make Wails applications feel native.
### Architecture
Wails applications consist of two main parts that communicate seamlessly: a Go backend handling business logic and system operations, and a web-based frontend for your user interface. The OS-provided WebView renders your UI without bundling a browser, while the bindings layer provides type-safe communication between Go and JavaScript.
<div style="display: flex; justify-content: center; align-items: center; margin: 2rem 0;">
<div style="max-width: 600px;">
```d2
direction: down
Application: {
Go: "Go Backend" {
shape: rectangle
style.fill: "#00ADD8"
}
WebView: "Native WebView" {
shape: rectangle
style.fill: "#3B82F6"
Frontend: "Your UI\n(React/Vue/etc)" {
shape: rectangle
style.fill: "#8B5CF6"
}
}
Go <-> WebView: "Bindings & Events"
}
```
</div>
</div>
This simple architecture enables JavaScript code to call Go functions directly (through auto-generated bindings), while Go can send events and data back to the frontend. Both layers communicate through an efficient in-memory bridge with sub-millisecond overhead.
**How Wails achieves performance:**
1. **No runtime bundled** - Uses Go's compiled binary
2. **Native WebView** - OS-provided rendering engine
3. **Direct Go ↔ JS bridge** - In-memory communication, no network overhead
4. **Compiled binary** - Instant startup, no JIT compilation
## Next Steps
Now that you understand what Wails provides, let's get you set up:
1. **Install Wails** - Set up your development environment in 5 minutes
[Installation Guide →](/quick-start/installation)
2. **Build Your First App** - Create a working application and understand the basics
[First App Tutorial →](/quick-start/first-app)
3. **Explore Features** - Discover what Wails can do for your application
[Feature Overview →](/quick-start/next-steps)
---
**Still have questions?** Join our [Discord community](https://discord.gg/JDdSxwjhGf) and ask the team directly.