Skip to main content

Bindings

Bindings make your app dynamic. They let you insert live values — data from a row, input from a user, or shared app state — into component settings, text, queries, and conditions.

Binding syntax​

Bindings use double curly braces:

Hello {{ Current User.firstName }}

Wherever you see the binding icon (a small lightning bolt) next to a setting, you can open the binding panel to browse the available values and insert them.

JavaScript bindings​

Bindings can also be JavaScript, which is ideal for more complex value transformations that handlebars can't express — iterating over a list, reshaping data, or applying conditional logic. Switch the binding to JavaScript and return the value you want. Readable values are available through the $("...") helper, and the code runs in a secure sandbox.

For example, this binding takes the files from a file upload field and returns an object whose images array maps each one to its compressed .avif key:

return {
images: $("[New File Upload].Value").map(img => img.key + ".avif")
}

For simple cases like joining two fields, prefer a plain handlebars binding such as {{ Current User.firstName }} {{ Current User.lastName }} — JavaScript is only worth reaching for when the transformation is genuinely beyond handlebars.

What you can bind to​

SourceExamples
Component dataThe current row in a Repeater or Data Provider, a selected table row, a form's values.
Current userThe logged-in user's email, name, role, and other attributes.
URL parametersDynamic segments of the screen's path, such as :id.
Query/datasource resultsValues returned by a SQL query or API.
App stateCustom values you set and read across components — see App state.

Using bindings in data​

Bindings also work inside SQL queries and API requests, so a query can react to user input — for example filtering by a search box or by the currently selected row.