Skip to content

Start here

Bind properties to state and data

Write supported expressions and connect inputs, app state, and records.

A binding calculates a property from the app's current state. Use a literal for fixed configuration and an expression between {{ and }} when a value should follow an input, data source, selection, or app state.

Three binding roots

RootExamplePurpose
app{{ app.activeDocument }}State initialized by the definition or changed by actions; also explicitly exposed interface parameters.
components{{ components.Topic.value }}A component's declared published state, such as an input value or selected row.
dataSources{{ dataSources.orders.data }}A source's records and its loading/run state.

Exact field names depend on the component or source. Use the component reference's Publishes list; do not guess that every component exposes value or selectedRow.

Create a binding

Select the component, open Properties, and choose a binding-capable field. Type {{ and part of a path to see suggestions. Complete the expression and inspect the live diagnostic and Preview.

An expression containing only the binding can produce a typed number, boolean, object, or array. Mixed text interpolates values into a string. A table's data field should receive an array, while a label usually expects text. Validate the type as well as the path.

Calculations

The supported expression language includes ordinary value selection, comparisons, arithmetic, and helper functions such as len, first, last, sum, round, number, string, json, parseJson, keys, values, min, max, and abs. Expression-body arrow callbacks are supported for methods such as map, filter, and reduce. Statement blocks, arbitrary scripts, and eval are unavailable. See the Expression reference for every helper, method, type rule, and limit.

Keep expressions small and readable. Use app state and explicit event actions for multi-step interactions rather than hiding a whole workflow inside a display expression. Expressions have execution, length, nesting, string, and array limits, so a large calculation can be rejected even when syntactically correct.

Avoid broken references

Renaming or removing a component or source can leave authored expression text pointing to an old id. Review every reported location. Guard empty selections or unloaded data when the expression expects a row or document.

A binding is interface logic, not an authorization rule. See Visibility and Events.