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.