User-interface Definition

The user-interface definition is a YAML file in the jamovi/ directory with the extension .u.yaml. While jamovi can automatically generate a UI from your analysis definition, the .u.yaml file allows you to customize the layout and appearance of the analysis options panel.

The header section defines the structure of the options panel. The file must be named to match the name of the analysis, but converted to lowercase (e.g., ttest.u.yaml).

name:  ttest
title: Independent Samples T-Test
jus:   '2.0'
compilerMode: tame
children:
  - type: ...
    name: ...
PropertyDescription
nameThe internal name of the analysis.
titleThe title displayed at the top of the options panel.
jusThe jamovi UI spec version (typically '2.0'). Must be wrapped in quotes.
compilerModeControls how jmvtools handles the file. Either tame or aggressive. Defaults to aggressive.
events(Optional) Maps view-level events (e.g., update) to JavaScript handlers.
childrenAn array of UI controls that define the layout of the panel.

Compiler Modes

The compilerMode property determines how the jamovi compiler (jmvtools) interacts with your .u.yaml file. It defaults to aggressive when an analysis is first created.

UI Interactivity (JavaScript)

For more complex UI behaviors, such as dynamically hiding controls or responding to user input with custom logic, jamovi allows you to attach JavaScript event handlers. These handlers are defined in a .js file in the jamovi/js directory and linked via the events property in your .u.yaml.

For a comprehensive guide on building interactive interfaces and a complete list of available events, see the Advanced Customisation tutorial.

UI Controls

The UI is built using a hierarchy of controls. These controls are organized into three primary categories:

Layout & Containers

Used to organize and group other controls.

Input Controls

Directly map to analysis options defined in the .a.yaml.

Specialized Controls

Common Control Properties

Most UI controls share these fundamental properties:

PropertyDescription
typeThe class of the UI control (e.g., CheckBox).
name(For option controls) The name of the corresponding option in .a.yaml.
labelThe text label displayed next to or above the control.

Automatic UI Generation

If no .u.yaml file is provided, jamovi automatically generates a functional interface based on your Analysis Definition.

Option Type (.a.yaml)Default UI Control
BoolCheckBox
ListComboBox
VariableTargetLayoutBox containing a VariableLabel
VariablesTargetLayoutBox containing multiple VariableLabels
Integer / NumberTextBox