Delegation in canvas apps: why you only see 500 records
Understand delegation in Power Apps, spot the warning before it bites, and rewrite common formulas so they work on large Dataverse tables.
What you'll learn
- What delegation is and why the row limit exists
- How to read the delegation warning
- Rewrite common non-delegable formulas
- Test with the row limit set low
Your gallery shows the right data in testing, then users report missing records in production. The cause is almost always delegation.
What delegation means
When a formula is delegable, Power Apps sends it to the data source — Dataverse does the filtering and returns only matching rows. When it isn't, Power Apps downloads the first rows and filters them on the device. By default that's only 500 rows (you can raise it to 2,000 in the app settings), so anything beyond that is silently ignored.
Spot it early
Power Apps shows a yellow warning triangle and a blue underline on non-delegable parts of a formula. Never ignore it on a table that can grow.
Common fixes
Searching text. Search() is delegable for Dataverse in many cases, but some patterns like in on text are not. Prefer StartsWith, which delegates well:
Filter(
Accounts,
StartsWith(Name, txtSearch.Text) // delegable
)Filtering on a calculated value. Build the value first, then compare — don't wrap the column in a function:
// Not delegable: function applied to the column
Filter(Orders, Year('Order Date') = 2026)
// Delegable: compare the column to fixed values
Filter(
Orders,
'Order Date' >= Date(2026, 1, 1) && 'Order Date' < Date(2027, 1, 1)
)Counting rows. CountRows on a filtered table may not delegate. For dashboards, use a Dataverse rollup or calculated column, or a view with a count.
Test properly
Go to Settings → General → Data row limit and set it to 1 while you build. Anything that relies on local filtering will break immediately, so you find problems in minutes instead of in production. Set it back before you publish.
Quick reference
| Pattern | Delegable on Dataverse? |
|---|---|
Filter with =, <, > on columns | Yes |
StartsWith | Yes |
Sort / SortByColumns on a column | Yes |
Function wrapped around a column, such as Year(Column) | No |
First, Last with complex filters | Check the warning |
Always confirm against the current delegation list for your data source in the Power Apps docs.