Delegation improvements – Async, UpdateIf, and miscellaneous functions

We are excited to announce that several key delegation improvements will roll out this month that should improve your app’s performance and correctness and significantly reduce formula authoring confusion.

Today, when you author a Power Fx query expression to get data, for instance a Filter, Power Apps will show a double blue underline to indicate when an expression cannot be run (or “delegated”) to the data source’s server. Rather than return no data Power Apps will fetch the first 500/2000 unfiltered records and finish the query operation with the data it can retrieve. While this can be super helpful at times, it can lead to wrong results if you are not careful. And your app will likely be slower if you use workarounds to overcome these limitations or if you bring back more data than you need to. These new delegation features significantly reduce the number of scenarios where the Power Fx query expression is not delegated to the data source server.

First, Power Fx expressions that require asynchronous evaluation will now be delegated. This means you do not have to divide up the parts of an expression into separate formulas for it to be correctly delegated. The parts of the expression that require separate evaluation will automatically be ordered and evaluated independently for you. Named formulas depend on this feature.

Secondly, the list of functions listed below will no longer break delegation. They will be evaluated on the client and evaluated for a delegated expression.

  • GUID
  • IsToday
  • Now
  • Rand
  • RandBetween
  • Today

These first two features roll out starting June 12th and will be in all commercial regions by June 26.

Finally, we are also excited to announce the experimental preview of UpdateIf. UpdateIf will request the set of records that meet the If criteria and then also expands delegation range to be the greater of the (500/2000) row limit or the page size limit. Additionally, it will fully delegate to the back-end data source when it is supported.

RemoveIf will follow under this same feature flag. Both features delegate by identifying individual records and send the update/removes to the server.

The UpdateIf feature has started rolling out in some regions and will be in all commercial regions by June 21.