UI Bakery Docs
RoadmapRelease notesSign In
  • 👋Welcome to UI Bakery!
  • 🌟Overview
    • 💡Video intro
    • ✨Main features
    • 🔖Glossary
  • 🛠️Getting started
    • Create an application
    • Build UI
      • Data mocking methods
    • Link components
    • Connect a data source
    • Load data
    • Bind data to UI
    • Transform data with JavaScript
      • Data mapping & transforming
    • Change component data
    • Send a form
    • Create a filter
    • Note on debugging
    • Deploy your application & invite users
  • 📌Concepts
    • Components
      • Component basics
      • Component methods
      • Components best practices
        • Input validation
        • Linking a Table to a Form/Detail
        • Using a single Form to add and update data
        • Searching Table based on input value
        • Configuring server-side pagination
        • Managing Date object time zones
        • Role-based Menu component items
        • Field types & types recognition
        • Expanding component to fit screen/container
        • Controlling component's visibility
    • Custom components
      • Unrestricted custom components
    • Data sources
      • Data source environments
      • Connecting local database via ngrok
      • SSH Tunneling
    • Actions
      • Actions basics
        • Calling actions from code
      • Actions management & shortcuts
      • Actions settings
      • Actions library
      • Server actions
      • Logs and debugging
    • UI Bakery variables
    • State variables
    • Local storage
    • Modules
    • Custom JavaScript
      • JavaScript files
    • Workspace management
      • Account & workspace
      • Seats & Shared permission groups in UI Bakery
      • Roles in UI Bakery
      • Role permissions
      • Explore the interface
      • App environments
        • Release management
      • Audit logs
      • Multi-factor authentication
    • Export & import an app
    • Mobile layout
    • Theme editor
      • Changing theme from the app
    • UI Bakery source control
      • Git controls overview
      • Migrating your app model to the latest version
  • ⚡How-tos
    • File management
      • Working with PDF files
      • CSV import & export
      • Uploading files using methods
      • Displaying files from Google Drive and Dropbox
      • Parsing and sending XML
    • Styling
      • Modifying components with CSS
    • Layout & navigation
      • Adding navigation to application
      • Reading query params from URL
      • Hiding UI Bakery loader in the Embedded mode
    • Data
      • Managing user data with the {{user.email}} variable
      • Using JS libraries
        • Internationalization (i18n) & Localization: Translating UI Bakery Apps
      • Implementing row-level security
      • Copying to clipboard
    • Custom code
      • Communicating with external sites via Iframe
      • Implementing custom app hotkeys
      • Retrying API with HTTP status code 202
  • 🔎Extras
    • UI Bakery Automations
      • Environment and release strategy
      • Git in automations
      • Using external Node libraries
    • UI Bakery Database
      • Database migration
  • 💻On-premise
    • UI Bakery on-premise
    • Install & update
      • Installing on-premise
        • Azure virtual machine
        • Azure container instance
        • AWS EC2 instance
        • Google Cloud Compute Engine VM instance
        • DigitalOcean 1-click droplet
        • Manual w/ docker compose
        • Manual w/ docker run
        • Windows installation
        • Kubernetes
          • AWS EKS with Fargate
          • Scaling and resource optimization
      • Troubleshooting installation errors
      • Updating on-premise
      • Updating license key
      • Updating environment variables
      • Recommendations
        • Architecture overview
        • UI Bakery in production
        • Resource optimization
        • Running a standalone database instance
        • Generating custom secrets
    • On-premise features
      • External analytics
      • Branding
      • Embedding
      • SCIM 2.0
      • Instance API
      • Activating features under a feature flag
    • Additional configurations
      • Health check API
      • Email configuration
      • Google Sheets connection setup
      • Salesforce connection setup
      • Azure blob storage configuration
      • Adding python backend code to existing installation
      • UI Bakery Postgres
    • Networking & security
      • Setting up a domain name
      • Configuring custom certificate authority
      • Custom base URL
      • Getting requests to the local network
      • Setting up SSL on Ubuntu
    • SSO
      • OpenID
        • Google OAuth2
        • Okta ODIC
        • Azure AD OAuth2
        • Token refresh
      • SAML
        • Okta SAML
        • Azure AD SAML
      • Role synchronization
      • Multiple SSO
      • Logout redirect
      • Troubleshooting
    • Git source control
      • Manage multi-instance deployment
      • Custom PR URL
      • Automate GitHub releases
      • Automate GitLab releases
      • Automate Bitbucket releases
    • Environment variables
  • 📚Reference
    • Data security measures
    • Improving app security
    • ✨AI Assistant
    • List of Components
      • S3 file uploader
      • Azure Blob Storage file uploader
      • Accordion
      • Alert
      • Avatar
      • Boolean
      • Breadcrumbs
      • Bubble map
      • Button
      • Card
      • Chart
      • Chat
      • Checkbox
      • Collapsible card
      • Color picker
      • Composite form
      • Container
      • Context menu button
      • Currency
      • Currency input
      • Date picker
      • Date & time
      • Date & time picker
      • Detail
      • Divider
      • Email input
      • Embedded App
      • File
      • File dropzone
      • File picker
      • Flex container
      • Form
      • Frame drawer
      • Grid view
      • Heading
      • Horizontal menu
      • Icon
      • iFrame
      • Image
      • Image picker
      • JSON editor
      • JSON viewer
      • Link
      • List view
      • Map
      • Menu
      • Metric
      • Modal
      • Multi-select
      • Number
      • Number input
      • Password input
      • PDF viewer
      • Percent
      • Pop-up form
      • Progress bar
      • QR code
      • Radio
      • Range slider
      • Rating
      • Reusable header
      • Reusable sidebar
      • Select
      • Signature
      • Slider
      • Steps
      • Stepper
      • Table
        • Conditional formatting based on cell value
        • Display name instead of ID for relation
        • Row context referencing
        • Select multiple table rows
        • How to Highlight Text in a Table Using mark.js
      • Tabs
      • Tabset
      • Tags
      • Text
      • Text annotate
      • Text input
      • Time picker
      • Toggle
      • Tree component
      • Video
      • Dynamic structure properties
      • Card (deprecated)
      • Input (deprecated)
    • Upgrading components
    • List of Data sources
      • Airtable
      • AWS S3
        • S3 compatible endpoints (DigitalOcean spaces)
      • AWS API
      • AWS Athena
      • AWS DynamoDB
      • AWS Lambda
      • AWS Redshift
      • Azure Blob Storage
      • Big Query
      • Databricks
      • Exasol
      • Firestore, Firebase Auth & Realtime DB
        • Firebase authentication
        • Managing database data
        • Firebase client-side SDK
        • Firebase libraries
      • GitHub
      • Google Sheets
      • GraphQL
      • HTTP API
        • API Authentication
      • HubSpot
      • Twilio
      • JDBC
      • MariaDB
      • MongoDB
      • MySQL
      • OpenAI
      • OpenAPI
      • Oracle
      • PostgreSQL
      • Presto
      • Redis
      • Salesforce
      • SAP Hana
      • SMTP
      • SendGrid
      • Slack
      • Snowflake
      • Spanner
      • SSH
      • Stripe
      • SQL Server
      • Supabase
      • UI Bakery AI
    • List of Action steps
      • Azure Blob Storage query
      • Bulk Create Rows
      • Bulk Delete Rows
      • Code step
      • Condition step
      • Create Row
      • Delete Row
      • DynamoDB request
      • Execute another action
      • Firebase query
      • Generate file
      • GraphQL query
      • HTTP request
      • Interval step
      • Load Table
      • Load Row
      • Loop action
      • MongoDB command
      • Navigation action
      • Open API request
      • Python backend code
      • Redis command
      • S3 query
      • Save to local storage
      • Save to state
      • Show notification
      • Slack messages
      • SMTP request
      • SSH command
      • SQL query
        • Writing SQL Queries
      • Update Row
    • Troubleshooting techniques
    • Performance optimization
Powered by GitBook

© 2025 UI Bakery

On this page
  • Creating actions
  • Action step variables
  • Triggering actions
  • Referencing the result of a specific action step
  • Reusing actions

Was this helpful?

Export as PDF
  1. Concepts
  2. Actions

Actions basics

PreviousActionsNextCalling actions from code

Last updated 1 month ago

Was this helpful?

Within any action, you have the ability to include multiple Action steps. These steps encompass predefined logic and can take various forms, such as SQL queries, custom JavaScript code, HTTP requests, conditions, navigation, etc. By combining these steps together you can construct functional workflows that enable you to merge requests from different data sources, validate input data or trigger data reloads based on specific conditions. This flexibility allows you to create powerful and adaptable processes to meet your specific needs.

Creating actions

You can create actions from the Actions panel at the bottom of the screen. First, you need to choose between a global or page-specific action, and then click the plus sign next to the corresponding section.

From there, based on the data source selected, you'll get the list of all available action types to choose from. It's also possible to create complex actions:

  • Multi-step actions - all steps are executed sequentially in the defined order. By default, if one step fails, the entire action will also fail. However, you can change this behavior by enabling the Allow next step execution when this step has failed setting. Once enabled, the next step will still be executed even if the current step fails. The {{data}} variable that would have been passed to the next step will be empty (null), and an error message indicating the nature of the failure will be stored in the {{error}} variable.

  • Condition step - allows you to define different paths of execution based on specific conditions or validate the input before executing a request. Conditions are written in plain JavaScript.

Action step variables

In any action step, you can access app variables like {{ui.component.value}} or {{app.env}}. Moreover, there are several built-in variables available for every action step:

  • {{data}} - the result of the previous step

  • {{error}} - the error response of the previous step

  • {{params}} - incoming action parameters passed in by components, Execute/Loop Action steps, or when calling the action from the code

  • {{res}} - the response of the request if the step follows an HTTP API step

  • {{steps.name.data/error}} - the result of a particular action step

While {{data}} and {{error}} are specific to each step, {{params}} can be accessed in all steps.

Triggering actions

There are two ways to trigger actions:

  • Automatic

    • Auto trigger - when the component values used in the first action step change. For example, if the action uses {{ui.input.value}}, it will be triggered when the value of the input is modified.

    • On first reference - when an action is referenced in the app for the first time, it will be triggered. For example, a table can use {{action.name.data}} to load data from the action, in this case, the action is triggered when the table is rendered for the first time.

  • Manual

    • Component trigger - when an action is connected to a built-in component trigger. For example, the button component has an On Click trigger.

    • Execute action, Loop action - action can be triggered by another action. For example, you can create a loop action that will execute another action multiple times.

    • On Page Load/On App Load/On App Data - similar to a component trigger, special app and page triggers are available. These triggers allow you to load an app configuration and reuse it later in page actions and components.

    • Execute action button - manually run the action in the development mode while you are developing and testing the action.

    • Proceed from step - manually run the action from a selected step. This is especially useful during development when you want to re-run only a certain part of the action.

Actions that load data are auto-callable. It means that if you've assigned an action to the Data property of the component, you don't need to trigger the action manually. It will be called automatically when the component is displayed on page load. You can deselect this setting, if needed, and manually trigger an action via user interaction (clicking a button) or via code.

Actions can be also assigned to particular component triggers, for example, when submitting a form, performing a search, or reloading a table with button click.

Referencing the result of a specific action step

You can also reference the result of a specific action step by its name using the syntax {{steps.stepName.data}}. It may come in handy when you want to utilize the outcome of multiple steps in a single step.

Here is an example of using the result of two steps - mapping user orders to the user object:

const users = {{steps.loadUsers.data}};
const orders = {{steps.loadOrders.data}};

return users.map(user => {
  const userOrders = orders
    .filter(order => order.userId === user.id);

  return {
    ...user,
    userOrders,
  };
});

Double-click the action step to change its name.

Reusing actions

Actions can be called from other actions using the Execute action step. It's useful when it comes to reloading data after creating a new item.

By default, the result of a step that goes before the Execute action step will appear as a {{data}} variable in the first step of the action being called. The result of the action being called using the Execute action step will appear in the next step that comes right after it.

Additionally, you can trigger another action for On Success or On Error results.

Once you've created an action, you can assign it to a component's Data field. You can learn more about binding your data to UI .

You can also configure specific settings for the action execution flow, such as toasts, confirmation dialogs, and execution delays. For more details, refer to this .

From code - an action can be called from any code field using the await {{actions.actionName.trigger()}} syntax. You can also pass an argument to an action and it will appear as a {{data}} variable in the first action step, for example: await {{actions.actionName.trigger({ limit: 10 })}} More examples of specific use cases .

If you have a global action that you'd like to reuse across multiple applications, you can extract it to the .

📌
here
section
here
Actions library