Declarative API, retained core
Describe the UI with immutable Views and let the framework reconcile the tree. Stable keys retain focus and editing state while your application owns its data.
Understand views and state
A Go GUI framework for Windows, macOS, and Linux. Declarative views meet retained updates in an event-driven runtime, with CGO-free builds, multiple windows, and typed components, layouts, and themes.

Describe the UI with immutable Views and let the framework reconcile the tree. Stable keys retain focus and editing state while your application owns its data.
Understand views and state
Windows share an event loop while keeping independent UI and interaction state. Idle windows do not repaint continuously, and paint-only changes avoid unnecessary layout measurement.
Explore runtime behavior
Build the framework and applications with CGO_ENABLED=0, using familiar Go modules and compilation workflows for each desktop platform.
Run and build
Configure layout, appearance, and interaction states with concrete Go types. Primitive, Semantic, and Component tokens provide consistent customization with validated theme updates.
Explore styles and themes
Fixed-height VirtualList mounts only visible and overscan rows. Stable keys and scroll anchoring keep large datasets manageable.
Use virtual lists
Choose from 2,066 official icon names and aliases with theme colors and configurable stroke widths. Reference only the constructors you need so the Go linker can discard unused icons.
Use icon resources
Start here
Compose components and handle lifecycle events through a typed Go API. This complete program takes a window from creation to shutdown.
package main
import (
"github.com/dxui-org/dxui"
"log"
)
func main() {
app := dxui.NewApp(dxui.AppOptions{
Background: dxui.RGBA(248, 250, 252, 255),
Title: "Hello dxui",
Width: 640,
Height: 400,
})
if err := app.Run(func() dxui.View {
return dxui.Box(
dxui.BoxProps{
Gap: 16,
Style: dxui.Style{
Padding: dxui.Padding(24),
},
},
dxui.Label("Hello, dxui!"),
dxui.TextButton(dxui.ButtonProps{
OnPress: app.Close,
}, "Close"),
)
}); err != nil {
log.Fatal(err)
}
}Learn at your pace
Window → state and events → layout and styles → forms → background tasks. Each step explains how the code works.
Start the guide 02 / Practice23 components with standalone programs, complete props, and interaction rules. Run an example, then adapt it.
Browse component examples 03 / ReferenceLook up parameters, defaults, and limitations for lifecycle, themes, fonts, images, and every official icon.
Open the API indexCommon tasks
© 2026 DXUI · MIT