PowerBlocks

Troubleshooting guides

Free, no-login guides to fix the most common Power Apps and Power Automate errors — available in English and French. Built from real-world debugging.

Power Apps

Fix the Power Apps delegation warning

A blue squiggly underline in the formula bar means part of your formula is non-delegable, so Power Apps only pulls the first 500 rows (up to 2000) from the data source and runs that formula locally — records beyond the limit are silently missed. Immediate fix: replace non-delegable functions with delegable ones (Filter() with =, <, >, StartsWith() instead of Search() or non-delegable expressions), and move computed conditions out of the query into a precomputed column or variable. Durable fix: filter on the server first, then do non-delegable work only on the smaller result. Raising the row limit to 2000 is a stopgap, not a real solution.

Increase the Power Apps data row limit from 500 to 2000

By default, Power Apps caps non-delegable queries at 500 rows. Immediate fix: in Power Apps Studio, open Settings (gear icon) > General, find "Data row limit for non-delegable queries," set it to 2000, save, and republish the app — that’s the maximum you can set. Durable fix: tables larger than 2000 rows still lose rows, and loading 2000 rows per screen hurts performance, so make your queries delegable so the data source does the filtering instead.

Power Apps gallery shows no data — how to fix it

An empty Power Apps gallery is almost always a data, filter, or refresh problem — not a broken template. First check the gallery’s Items property: if it points to a collection, confirm the ClearCollect in OnVisible or OnStart actually ran; if Items is a Filter() returning nothing, temporarily set Items to the raw data source to confirm the data exists at all. Other common causes: a filter comparing mismatched types (text vs number) or a blank variable, a delegation limit silently dropping expected rows, or a data source that needs Refresh() after a Patch or external change. To diagnose fast, add a temporary label with Text = CountRows(YourGalleryItems) — zero rows means the query is the problem, not the gallery template.

Power Apps syntax error: semicolon vs comma

A Power Apps syntax error mentioning unexpected commas or semicolons usually comes from a mismatch between your studio’s language and the formula’s separators, not from the formula logic itself. Power Fx adapts syntax to your region: English studios separate function arguments with a comma and write decimals with a dot (If(x = 1, "a", "b"), 0.5); French (and similar) studios use a semicolon between arguments and a comma for decimals (If(x = 1; "a"; "b"), 0,5). Fix: match every separator to your studio’s language. When pasting a formula written in the other language, swap commas between arguments for semicolons (or vice versa).

Power Apps Patch() does not save or create the record

Power Apps Patch() fails silently or errors almost always because of a missing required column, a type mismatch (text into a number/choice, or a string into a lookup/choice expecting a record), or because you patched a local copy/variable instead of the actual data source. Immediate fix: wrap the call in IfError(Patch(...), Notify("Patch failed: " & FirstError.Message, NotificationType.Error)) to surface the real error, then check the column’s logical name and pass the actual record or choice value for lookups/choices — for example {Value:"Active"} or a LookUp() result. Durable fix: confirm the user has create/update permission on the table and always patch the data source directly, not a collection or variable.

Power Apps app loads slowly — how to speed it up

A Power Apps app loads slowly or feels laggy mainly because App.OnStart runs too much work before the app can render, filters aren’t delegable, or the same data source gets queried repeatedly. Immediate fix: move non-essential logic out of OnStart into each screen’s OnVisible, load only what the first screen needs, and use Concurrent() to run independent data loads in parallel instead of sequentially. Durable fix: replace ClearCollect of large tables with delegable queries fetched on demand, keep filters delegable so the server processes rows instead of pulling 500-2000 rows locally, and set DelayOutput on text inputs to avoid re-querying on every keystroke.

Build a responsive Power Apps screen with containers

A Power Apps screen breaks on different screen sizes when controls are pinned with fixed X/Y coordinates instead of sizing relative to the window. Immediate fix: in Settings > Display, turn off Scale to fit (this also turns off Lock aspect ratio; turn off Lock orientation too if the app should rotate), then base sizes on App.Width and Parent.Width instead of hard-coded pixels. Durable fix: rebuild the screen with horizontal and vertical auto-layout containers. Give fixed elements a fixed size, turn on Flexible width or height with Fill portions so the other children share the extra space in proportion, and nest containers to form rows and columns without manual X/Y math. For phones, switch a container’s direction or visibility based on the screen’s Size or App.Width so a two-column layout stacks.

Power Apps combo box / dropdown shows no items

An empty combo box or dropdown is usually the Items source, the display field, or delegation. Confirm Items points to a real, non-empty source — for a choice or lookup column, use Choices([@YourTable].YourColumn) instead of the raw column, and test the raw source if a Distinct/Filter returns nothing. Set the Primary text (DisplayFields/SearchFields) to the column you want shown; blank items usually mean a wrong or empty display field. Finally, keep the Items query delegable — a non-delegable query can return nothing on large sources — and confirm the bound field is text/choice, not an un-dotted record.

Power Automate

Power Automate "connection expired" / 401 Unauthorized

A 401 or "connection has expired" error means the stored connection behind that connector can no longer authenticate — the credential expired, the password changed, or consent was revoked. Immediate fix: open the failing action, check its connection, then in Power Automate > Connections find the broken one and click "Fix connection" or re-authenticate. Durable fix: run production flows on a dedicated service account whose password policy doesn’t force expiry, or use a connection type that supports long-lived authentication, so the connection doesn’t break when someone changes their password or leaves.

Power Automate 429 "Too Many Requests" — how to fix

A 429 means Power Automate hit the connector's rate limit — too many calls in too short a window, usually from a loop calling an action on every item or several flows running at once. Immediate fix: if concurrency is turned on for the Apply-to-each, lower it (loops run one item at a time by default), add a Delay between calls, or add an exponential-backoff retry policy on the action. Durable fix: batch the operation or filter rows before the loop so you call the connector less often.

Power Automate 404 and 500 errors — how to read and fix them

A 404 in Power Automate means the record, file, or item an action referenced doesn’t exist or its path/ID is wrong — often a deleted record, the wrong environment, or a blank dynamic ID. A 500 means the service accepted the request but failed processing it, usually a malformed body or unexpected null. Immediate fix: open the run history, check the failing action’s actual inputs, and confirm the record and environment are correct; for a 500, read the raw outputs for the underlying message. Durable fix: guard against blank IDs before the action, validate the request body and required properties, and add a retry policy for transient 500s.

Power Automate time zones: dates off by hours

Dates off by a few hours in Power Automate almost always mean a UTC vs. local time-zone mismatch: the flow works in UTC by default (utcNow(), trigger timestamps), so comparing or displaying against a local value without converting produces an offset equal to your time-zone difference. Immediate fix: convert explicitly for display with convertTimeZone(utcNow(), "UTC", "Romance Standard Time", "dd/MM/yyyy HH:mm") (use your own zone name). Durable fix: always store and compare dates in UTC, converting to local time only at the final display or email step, and be explicit about the source zone when parsing user-entered dates.

Move Power Automate flows across environments cleanly

Flows break on import because they bind to your personal connection and to hard-coded values (URLs, IDs) that don't exist in the target environment. Fix: put flows in a solution, replace direct connections with connection references (remapped per environment on import), and replace hard-coded values with environment variables. After import, turn the flow on and confirm the connection references resolved before testing.

Power Automate "Apply to each" is slow — how to speed it up

A slow "Apply to each" in Power Automate usually comes from processing items one by one with no parallelism, plus per-item API calls that add up fast. Immediate fix: open the loop’s Settings, turn on Concurrency Control, and raise the Degree of Parallelism (up to 50) — but only when each iteration is independent of the others. Durable fix: filter at the source (OData filter / Filter Query) or add a Filter array action before the loop so fewer items enter it, and replace per-iteration calls with a batch/bulk action or expression-based transforms where the connector supports it — this also avoids 429 throttling.

Power Platform — deployment & ALM

Complete ALM: ship Power Platform from dev to prod

A reliable Power Platform release rests on four parts: environments (dev/test/prod), the app schema packaged in solutions, Power Automate flows, and data split into reference vs. transactional. Golden rule: author only in dev, promote through test, and never edit production by hand. Ship in three steps: promote the solution dev → test → prod with Power Platform Pipelines, make flows portable with connection references and environment variables before turning them on in the target, then migrate only reference/config data with the Configuration Migration Tool or Dataflows — never transactional data. Before any production release: back up the target, deploy as managed, validate in test/UAT, remap connection references and environment variables, and smoke-test after turning flows on.

Set up a dev → test → prod deployment pipeline

Set up three environments — Dev, Test/UAT and Production — and package everything (tables, flows, the canvas app) inside a solution. Never edit production directly: author only in Dev, then promote Dev → Test → Prod with Power Platform Pipelines (or the pac CLI / Azure DevOps for automation), deploying as a managed solution to Test and Prod.

Transfer data between Power Platform environments

A Power Platform solution moves the schema (tables, columns, forms, apps, flows) but never the rows, so reference and configuration data must be migrated separately. Immediate fix: use the Configuration Migration Tool — define a schema of the tables/columns to export, export to a zip, then import into the target environment. For larger or recurring transfers, use Dataflows with alternate keys defined on the tables so rows upsert instead of duplicating on each run. The pac CLI, Excel import, or XrmToolBox also work for one-off or automated transfers. Never migrate transactional or user data between environments — only configuration/reference data — and keep alternate keys consistent so re-running a transfer stays idempotent.