Skip to content

Build interfaces from typed C++ values

Learn the HuxerUI DSL, compose reusable components, and ship one application model across desktop, mobile, and Web.

HuxerUI interfaces are ordinary C++ functions that return View values. Braced containers describe children, typed modifiers configure reusable presentation, and typed events connect behavior without stringly typed property bags.

[[huxerui::scope]]
View Counter() {
auto count = UseState(0);
return Column {
Text::Format("Count: {}", count),
Button("Increment").OnClick([count] {
count += 1;
}),
}.With(
Padding(24.0F),
Spacing(12.0F)
);
}

The HuxerUI DSL

Learn component functions, braced children, .With(...), typed events, scopes, state, keys, and controlled values. Start with DSL fundamentals

Components

Use focused pages for every built-in control, layout, navigation surface, and platform-facing component. Browse components

Build applications

Add navigation, presentation, resources, asynchronous work, files, HTTP, lifecycle, and window behavior. Create your first application

API reference

Find every public type, function, enum, field, and overload, grouped by the module that owns it. Open the API reference

Extend HuxerUI

Choose among component functions, custom layouts, virtual layouts, retained node behavior, root services, and platform integration. Choose an extension point

Tooling and delivery

Use the CLI, CMake package, SDK artifacts, diagnostics, testing, packaging, and release workflows as one coherent toolchain. Open the CLI reference

The shared runtime owns state observation, recomposition, reconciliation, layout, interaction, text editing, animation, accessibility semantics, and retained rendering. Platform adapters connect that model to Windows, macOS, Linux, Web, Android, and iOS services.

Use the guides for application-facing contracts. The framework repository’s architecture notes describe implementation decisions and are intentionally not duplicated here.