Skip to Content
Dynamic Properties

Dynamic Properties

Any property — style, prop, visibility, click action, or custom CSS — can have multiple conditional values. Dynamic Properties let you define an if/else-if/else chain for any property on any component.

How It Works

A dynamic property is an ordered list of values, each optionally gated by a condition:

┌─ if answers.goal == "profit" → color: #22c55e ├─ if answers.goal == "learning" → color: #3b82f6 └─ (no condition) → color: #6b7280 ← fallback

Values are evaluated top to bottom. The first value whose condition matches is applied. A value with no condition always matches — use it as the fallback (else) at the end of the list.

If no value matches and there is no fallback, the dynamic property has no effect and the static property value is used.

Setting Up Dynamic Properties

  1. Select a component and open the property panel.
  2. Click the dynamic icon next to any property to open the dynamic property editor.
  3. Add values with conditions. Each condition uses the same format as routing conditions: variable + operator + value, with AND/OR groups.
  4. Reorder values by dragging — order matters because first match wins.
  5. Leave one value without a condition as the fallback.

Dynamic Property Editor Insert image: The dynamic property editor panel for a “color” property, showing two conditional values with variable conditions and a fallback value at the bottom

Condition Operators

Conditions use the same operators as variable conditionsequals, notEquals, contains, greaterThan, lessThan, exists, includes, and more. Conditions can be combined into groups with AND/OR logic. See the Condition Operator Reference for the full list.

Conditions also support Liquid expressions as the evaluated value for computed comparisons.

What Can Be Dynamic

Every property category supports dynamic values:

CategoryExamples
Stylecolor, background, fontSize, width, opacity, borderColor, display, and all other CSS properties.
Propstext, src, placeholder, optionValue, and any element-specific prop.
Visibilityhidden — conditionally show or hide a component.
Click ActionsclickActions — different action chains based on conditions.
AnimationanimationBehavior — conditional tap feedback.
Custom CSScustomCSS — swap entire CSS blocks based on conditions.

Common Use Cases

Conditional Visibility

The most common pattern. Show or hide a component based on a variable:

Property: hidden ┌─ if data.showDiscount == true → false (visible) └─ (no condition) → true (hidden)

This shows a discount badge only when data.showDiscount is true. Pair with a Set Variable click action or a timer to toggle the variable.

Dynamic Text

Show different text based on user answers:

Property: text ┌─ if answers.experience == "advanced" → "Welcome back, pro!" ├─ if answers.experience == "beginner" → "Let's get you started" └─ (no condition) → "Welcome!"

For simple text personalization, Liquid templates inside a regular text prop are often simpler than dynamic properties. Use dynamic properties when you need entirely different text content per condition, not just variable interpolation.

Dynamic Colors

Change a button’s appearance based on state:

Property: background ┌─ if payment.loading == true → #9ca3af └─ (no condition) → #22c55e
Property: text ┌─ if payment.loading == true → "Processing..." └─ (no condition) → "Pay Now"

Dynamic Click Actions

Route users differently based on their answers:

Property: clickActions ┌─ if answers.hasAccount == true → [goToNextPage (to: login)] └─ (no condition) → [goToNextPage (to: signup)]

Conditional Page Type Styling

Style a component differently based on the page’s purpose:

Property: background ┌─ if purchase.success == true → #dcfce7 └─ (no condition) → #ffffff

Dynamic Properties vs. Active Style

Both systems modify a component’s appearance based on conditions, but they serve different purposes:

Active StyleDynamic Properties
StatesBinary (active / inactive)Unlimited conditional values
InheritanceCascades to all childrenPer-component, per-property
SetupToggle between Default/Active in property panelDynamic editor per property
Best forOption selection, coordinated group stateComplex per-property conditional logic
ConditionsOne condition per stack (or automatic via options)One condition per value per property

Merge Priority

Dynamic Properties always take precedence over Active Style, which takes precedence over static values. See Active Style — Merge Priority for the full priority chain.

If a dynamic property has conditions but none match and there is no fallback value, the dynamic property is skipped. In that case, the active style or static value is used. Always add a fallback value unless you intentionally want this behavior.

Last updated on