Filter Array and Select Instead of Apply to Each in Power Automate
Filter Array and Select replace Apply to Each for filtering and reshaping arrays and run noticeably faster.
"Auf alle anwenden" processes lists item by item and often appears unintentionally. How the loop works, why it slows things down, and when it can be removed.
"Apply to each", in the German interface "Auf alle anwenden", is the loop of Power Automate: it runs the contained steps for each element of a list individually, for every email, every row, every attachment. Two peculiarities make it the most discussed building block of the platform: it often appears automatically, without having been inserted, and it is the most common reason why flows become slow. Both have the same cause, and both can be controlled. As of: July 2026.
Power Automate inserts the loop automatically as soon as you use dynamic content that is a list, even if you only expect a single element. The classic case: a SharePoint query technically always delivers a list, even if only one match exists, and the designer immediately wraps the following step in an "Auf alle anwenden". Anyone who wants to address the single element specifically avoids the loop with a formula such as first over the query result, or filters the list beforehand down to exactly one match. The loop is therefore not an error, but the honest answer of the system to a list, just not always the intended one.
The fastest loops are the ones that never run. Three patterns replace "Apply to each" in many cases: "Filter array" reduces a list to the matching elements without a loop, "Select" transforms all elements in a single step, and formulas such as join or concat build a text directly from a list, for example for a collective email. A flow that first filters, then transforms with Select, and sends the result in one step, accomplishes in three actions what the loop variant needs hundreds for. Such patterns are the difference between a tinkered flow and one that also runs through with 5,000 records, and this exact kind of craft is what we teach in our Power Automate consulting. Our article on Compose.
Filling a variable inside the loop is the usual way: initialize it before the loop, append to it or increment it inside, continue using it after the loop. With loops running in parallel, however, this is risky, because simultaneous write accesses can overtake each other, so it is better to work sequentially or to generate the result using "Select" and join entirely without a variable.
Because the upstream query step, without pagination activated, delivers only the first page of results, for many connectors that is 100 entries. The solution does not lie in the loop, but in the query step: activate pagination in its settings and set the threshold to the expected quantity.
Yes, "Apply to each" can be nested, for example for orders with line items. However, the number of actions then multiplies, and readability suffers quickly. It has proven effective to outsource the inner processing into a separate child flow, or to reshape the data structure beforehand using "Select" so that a single level is sufficient.
Founder of NordFlux. Spent four years automating processes at enterprise scale at Dräger, and now brings that depth to the mid-market — pragmatic and with full data sovereignty.
Certifications
Filter Array and Select replace Apply to Each for filtering and reshaping arrays and run noticeably faster.
Apply to each limits and pagination in Power Automate: how the 100,000 iteration limit works and how to work around it.
What dynamic content in Power Automate is, how to insert it, and where beginners typically stumble.
The loop that appears automatically looks harmless, until it multiplies a flow's runtime with large data volumes and blows past action limits. NordFlux optimises existing flows with Filter Array, Select and targeted parallelism so Apply to each doesn't become a silent performance killer. In an initial conversation, we analyse your slowest flows.