Power Apps delegation
What is Power Apps delegation?
Delegation is when Power Apps translates a Power Fx expression into a query that the data source runs itself. The source filters, sorts, or aggregates across the whole dataset and sends back only the result, rather than shipping every row to the user's device.
This is what makes a canvas app scale. A server can search millions of records without first copying them all to a phone or a browser. The app asks a precise question and gets a precise answer back.
When an expression cannot be delegated, Power Apps does the opposite. It pulls a limited batch of records and processes them locally. The app can feel fast because it is working on a small local set, but the answer may be wrong, because the record you needed was never brought down in the first place.
The record limit
For a non-delegable query, Power Apps retrieves the first 500 records by default. You can raise the Data row limit in app settings to a maximum of 2,000.
That limit is not paging across the whole source. A filter for surnames starting with Z searches only inside the records already retrieved, so a matching record at position 501 or 500,001 is simply missed. There is no error, just a shorter answer than the truth.
Raising the limit to 2,000 delays the problem and can slow the app down, especially on wide tables with many columns. It does not make a non-delegable formula correct for a table that keeps growing. A useful trick when testing is to set the limit to 1: anything that is not delegated then returns a single record, which makes the gap obvious before it reaches production.
A warning and a delegable alternative
Say an app searches for active cases in Microsoft Dataverse. A supported comparison can be run by the source:
Filter(Cases, Status = 'Status (Cases)'.Active && StartsWith(Title, SearchBox.Text))Add a function the Dataverse connector cannot translate in this context, and the whole query drops to local processing. Which functions are delegable depends on the connector, the column type, and the shape of the formula. A function that is delegable to SQL Server may not be delegable to Excel, so check the current delegation table for the data source you are using rather than assuming.
Delegation warnings
Power Apps Studio shows a warning, a yellow triangle and a blue underline under the formula, when a non-delegable expression sits on a delegable source. Read the underlined part and the tooltip to see exactly what cannot be delegated.
No warning is not a universal guarantee. Collections and local tables are already in memory, so they never raise a delegation warning, yet they may already hold only a truncated subset from an earlier step. Test with more records than your configured limit and put known matches deliberately beyond the first batch. An app that only ever saw small development data hides this class of bug completely.
The whole expression counts
If any part of a query is non-delegable, Power Apps cannot send the query to the source at all. A delegable Filter wrapped around an unsupported calculation is therefore not automatically safe. The framework looks at the expression as a whole, not clause by clause.
Constant values are the exception. A pre-calculated date or a context variable that is the same for every record can often be passed to the source as a parameter, because it does not need per-record evaluation. Watch lookups and joins too: Dataverse supports many query functions but has limits on expand depth and the number of related tables in a single query.
Redesigning for delegation
The fix is usually to reshape the query, not to raise the limit. Use filterable source columns and supported operators. Where a search or classification value is expensive to compute, calculate it in the source ahead of time instead of per record in the app.
When the query you want cannot be expressed cleanly through the connector, build a Dataverse view, a SQL view, or an API endpoint and let server logic do the selection. Avoid using ClearCollect as a way to copy a large table down locally. Collections are useful for small app state, not as a stand-in for a database query.
Treat delegation as a correctness requirement, not only a performance tweak. A partial list can drive a wrong decision with no visible error, and design targeted filters regardless: a gallery rarely needs to show every case in the organisation at once.