Why Do Some Actions in AppSheet Execute One by One While Others Run in Batch?

When working with grouped actions or actions that execute on a set of rows, you may notice that sometimes rows are processed one by one, while other times they are executed all at once.

If you want to improve your app’s performance and efficiency, it’s important to understand what causes this difference and how to control the behavior of your actions.


🔍 Why Are Actions Executing One by One?

1️⃣ Executing an Action on a Set of Rows from the Client (Frontend)

  • If an action runs when closing a form or from a button in the app, it executes on the client-side, meaning AppSheet will process each row sequentially.
  • This happens because each action must complete before moving to the next row.

2️⃣ Grouped Actions ("Grouped: Execute a Sequence of Actions")

  • When you use a grouped action, AppSheet runs each action in order, row by row.
  • This means that if you're adding records, they will be inserted one at a time into the database.

3️⃣ Row Dependencies

  • If an action depends on values generated in another row, AppSheet may process them one by one to ensure that each row has the necessary information before continuing.

🚀 How to Ensure Rows Are Processed in Batch?

If you want your rows to be processed all at once, try these strategies:

Use a Bot Instead of a Manual Action

  • Bots run on the server, allowing all rows to be inserted at the same time instead of one by one.
  • Create an event that triggers when a record is saved, and use a task to add multiple rows at once.

Use a Single Add Action Instead of a Grouped Action

  • Instead of executing an action on each row individually, use a single action that adds all rows in one step.
  • Use SPLIT([EnumList_Column], " , ") to pass the list of IDs in a single execution.

Run the Action from the Backend with the AppSheet API

  • If you have API access, send a single POST request containing all the rows in the request body.
  • This ensures fast and efficient batch insertion into the database​.

🎯 Conclusion

If your rows are being processed one by one, AppSheet is likely executing the actions sequentially on the client-side. To improve performance and achieve batch processing:
🔹 Use Bots whenever possible.
🔹 Consolidate row additions into a single action rather than processing each row separately.
🔹 Consider the API for handling large amounts of data efficiently.

💡 Have you noticed this behavior in your app? Share your experience in the comments! 👇

@WillowMobileSys @OptimiX_XcrY 

7 4 225
4 REPLIES 4

Yes, I use BOT method and its quick.

💪🏻

Thank you, this is a great an simple to understand tip for everyone,myself included.

You use this

Use SPLIT([EnumList_Column], " , ") to pass the list of IDs in a single execution.


In an action on a set of rows,instead of a select() formula? In case I misunderstood this step

 

Thank you

 

Sometimes yes (when the selection depends on the user and said selection is visible in a form), the answer is "yes". In cases where the selection does not depend on the user but simply depends on a list with some criteria, I use FILTER() or SELECT() as the case may be.

Top Labels in this Space