Portal Community

The Two Systems

SystemControlsEvaluated WhenUse For
modeVisibilitySettingsWhich operating modes show this controlOnce per mode change (static per session)Admin-only fields, design-mode hints, preview-mode cleanup
visibilityRuleWhether to show this control given current field valuesReactively on every value changeConditional fields ("Show address if different billing"), required-if patterns

AND Logic Between Systems

A control is visible only when BOTH systems say it is visible:

// A control is shown only when:
//   modeVisibilitySettings[currentMode] === true
//   AND
//   visibilityRule evaluates to true (or is absent)

isControlVisible = modeCheck(control, currentMode) && expressionCheck(control, values)

Quick Comparison

AspectmodeVisibilitySettingsvisibilityRule
Schema locationcontrol.modeVisibilitySettingscontrol.visibilityRule
TypeObject of boolean flags per modeString expression
Dynamic?No — fixed at schema authoring timeYes — evaluated reactively
Depends on other fields?NoYes
Default (when omitted)Visible in all modesAlways visible

Pages in This Guide

PageTopic
modeVisibilitySettingsPer-mode boolean flags: edit, view, design, admin, preview
Default VisibilityWhat happens when modeVisibilitySettings is omitted
visibilityRuleExpression-based conditional visibility
Expression SyntaxHow to reference field values in visibility expressions
Combining Both SystemsMode + expression AND logic in practice
useFormVisibility HookisVisible(), getVisibleControls() for custom players
Practical ExamplesAdmin-only fields, conditional address block, view-only summary