--- title: API Reference description: Complete API documentation for Wails v3 sidebar: order: 1 --- import { Card, CardGrid, Tabs, TabItem } from "@astrojs/starlight/components"; ## About This Reference This is the complete API reference for Wails v3. It documents every public type, method, and option available in the framework. **Organisation:** - [Application](/reference/application) - Core application APIs - [Window](/reference/window) - Window creation and management - [Menu](/reference/menu) - Application, context, and system tray menus - [Events](/reference/events) - Event system and built-in events - [Dialogs](/reference/dialogs) - File and message dialogs - [Frontend Runtime](/reference/frontend-runtime) - Frontend runtime APIs - [CLI](/reference/cli) - Command-line interface ## API Conventions
Go API Conventions - For developers new to Go #### Naming - **Types**: PascalCase (e.g., `WebviewWindow`) - **Methods**: PascalCase (e.g., `SetTitle()`) - **Options**: PascalCase structs (e.g., `WindowOptions`) - **Constants**: PascalCase (e.g., `WindowStartStateMaximised`) #### Error Handling Most methods that can fail return `error` as the last return value: ```go window, err := app.Window.New() if err != nil { log.Fatal(err) } ``` #### Context Methods that may block or need cancellation accept `context.Context`: ```go err := app.RunWithContext(ctx) ``` #### Options Pattern Configuration uses option structs: ```go app := application.New(application.Options{ Name: "My App", Description: "A demo application", Services: []application.Service{ application.NewService(&MyService{}), }, }) ```
### JavaScript API Conventions #### Naming - **Functions**: camelCase (e.g., `setTitle()`) - **Constants**: SCREAMING_SNAKE_CASE (e.g., `WINDOW_EVENT_FOCUS`) #### Async by Default All Go method calls return Promises: ```javascript // Async/await (recommended) const result = await MyService.DoSomething() // Promise chain MyService.DoSomething() .then(result => console.log(result)) .catch(error => console.error(error)) ``` #### Error Handling Go errors become JavaScript exceptions: ```javascript try { await MyService.MightFail() } catch (error) { console.error('Go error:', error) } ``` #### Type Safety TypeScript definitions are auto-generated: ```typescript // Fully typed import { Greet } from './bindings/GreetService' const message: string = await Greet("World") ``` ## Package Structure ``` github.com/wailsapp/wails/v3/pkg/ ├── application/ # Core application package │ ├── application.go # Application type │ ├── webview_window.go # Window management │ ├── menu.go # Menu types │ ├── events.go # Event system │ └── dialogs.go # dialog APIs ├── events/ # Event constants └── services/ # Built-in services ├── badge/ # Badge service ├── notifications/ # Notifications service └── sqlite/ # SQLite service ``` ## Import Paths ### Go ```go import ( "github.com/wailsapp/wails/v3/pkg/application" "github.com/wailsapp/wails/v3/pkg/events" ) ``` ### JavaScript ```javascript // Auto-generated bindings import { MyMethod } from './bindings/MyService' // Runtime APIs import { Events, Window } from '@wailsio/runtime' ``` ## Type Reference ### Common Types ```go // Application type Application struct { /* ... */ } type Options struct { /* ... */ } // Window type WebviewWindow struct { /* ... */ } type WebviewWindowOptions struct { /* ... */ } // Menu type Menu struct { /* ... */ } type MenuItem struct { /* ... */ } // Events type Event struct { /* ... */ } type EventListener func(*Event) // Dialogs type OpenDialogOptions struct { /* ... */ } type SaveDialogOptions struct { /* ... */ } ``` ```typescript // Window runtime interface WindowOptions { title?: string width?: number height?: number // ... } // Events type EventCallback = (data: any) => void // Bindings (auto-generated) export function MyMethod(arg: string): Promise ``` ## Platform Differences Some APIs behave differently on different platforms: | Feature | Windows | macOS | Linux | |---------|---------|-------|-------| | **Application Menu** | Window menu bar | Global menu bar | Window menu bar | | **System Tray** | Notification area | Menu bar | System tray | | **Dock** | N/A | ✅ Available | N/A | | **File dialogs** | Native | Native | Native (GTK) | | **Transparency** | ✅ Full | ✅ Full | ⚠️ Limited | Platform-specific behaviour is documented in each API section. ## Versioning Wails v3 follows semantic versioning: - **Major** (v3.x.x): Breaking changes - **Minor** (v3.x.x): New features, backwards-compatible - **Patch** (v3.x.x): Bug fixes, backwards-compatible **Current status:** Alpha (API stable, refinements ongoing) ## Deprecation Policy When APIs are deprecated: 1. **Marked in docs** with deprecation notice 2. **Alternative provided** with migration guide 3. **Maintained for 1 major version** before removal 4. **Compiler warnings** (where possible) ## API Stability ### Stable APIs ✅ These APIs are stable and safe for production use: - Core application APIs - Window management - Menu system - Event system - File dialogs - Service bindings ### Unstable APIs ⚠️ These APIs may change before final release: - Some advanced window options - Platform-specific features - Experimental features Unstable APIs are marked in documentation. ## Getting Help ### API Questions 1. **Check this reference** - Complete API documentation 2. **Check examples** - [GitHub examples](https://github.com/wailsapp/wails/tree/v3-alpha/v3/examples) 3. **Search Discord** - [Discord server](https://discord.gg/JDdSxwjhGf) 4. **Ask the community** - Discord #help channel ### Reporting API Issues Found a bug or inconsistency? 1. **Check existing issues** - [GitHub issues](https://github.com/wailsapp/wails/issues) 2. **Create detailed report** - Include code, error, platform 3. **Provide reproduction** - Minimal example that demonstrates issue ## Related Documentation - [Tutorials](/tutorials/overview) - Learn by building real applications - [Guides](/guides/dev/project-structure) - Task-oriented guides for common scenarios - [Features](/features/windows/basics) - Feature-by-feature documentation - [Examples](https://github.com/wailsapp/wails/tree/v3-alpha/v3/examples) - Working code examples on GitHub --- **Browse the API:** Use the navigation on the left to explore specific APIs.