Domain 3 β€” Module 2 of 2 100%
10 of 26 overall
Domain 3: Implement Power Apps Improvements Free ⏱ ~12 min read

Troubleshoot & Optimise Apps

When apps misbehave or run slowly, you need the right tools. Learn to diagnose issues with Monitor and browser dev tools, and optimise performance with delegation-aware queries and form tuning.

Finding and fixing problems

Simple explanation

Think of debugging like being a doctor.

A patient says β€œmy arm hurts.” You do not guess β€” you examine, run tests, and look at X-rays. The Monitor tool is your X-ray machine for Power Apps. It shows you exactly what is happening behind the scenes: every data call, every formula evaluation, every error.

Performance optimisation is like a health check-up. The app works, but is it efficient? Is it making unnecessary trips to the server? Is it loading 10,000 records when the user only needs 10? Delegation is the key concept β€” it determines whether your query runs on the server (fast) or pulls everything to the client and filters locally (slow).

Debugging with Monitor

The Monitor tool captures everything your app does behind the scenes.

What Monitor ShowsWhy It Matters
Network requestsSee every call to Dataverse, connectors, and APIs β€” including timing and payload size
Formula evaluationsWhich formulas are running, how long they take, and what they return
Errors and warningsDetailed error messages that may not appear in the app UI
Delegation warningsWhich queries are running client-side instead of server-side
User actionsTrack what the user clicked and the resulting data flow

Common debugging patterns

  1. App returns wrong data β†’ Check Monitor for the network request. Is the filter correct? Is the query delegated?
  2. App is slow β†’ Sort Monitor events by duration. Find the slowest network requests.
  3. Intermittent errors β†’ Run Monitor with β€œJoin session” to capture a user’s live session remotely.
  4. Connector failures β†’ Monitor shows the raw HTTP response including error codes and messages.
Scenario: Kai debugs a slow shipment app

Kai’s shipment tracking app takes 15 seconds to load the main screen. He opens Monitor and sees:

  1. Three sequential Dataverse queries β€” each takes 3-4 seconds. They load Shipments, Drivers, and Vehicles.
  2. A delegation warning on the Shipments query β€” the filter uses a Left() function, which is not delegable. Dataverse returns only the first 500 records, then the app filters 10,000 records locally.
  3. A large payload β€” the Drivers query returns all 50 columns when the screen only displays Name and Phone.

Fixes:

  • Replace Left() filter with a delegable StartsWith() function
  • Use Concurrent() to load all three queries in parallel
  • Add ShowColumns() to the Drivers query to fetch only Name and Phone
  • Result: load time drops from 15 seconds to 3 seconds

Delegation: the performance killer

Delegation means the data source (Dataverse, SQL, SharePoint) processes the query server-side. If a formula is not delegable, Power Apps downloads all records and filters locally β€” with a cap (default 500, max 2,000).

Memorise which functions delegate and which do not β€” the exam tests this
FunctionDelegable to Dataverse?Alternative
Filter with =, <>, <, >YesN/A β€” use these
StartsWithYesN/A β€” use this for text matching
Search (in view)YesUse Dataverse search for best results
Left, Right, MidYes (Dataverse)Note: delegable to Dataverse but NOT to SharePoint or SQL β€” check per data source
LenYes (Dataverse)Delegable to Dataverse; not all sources support it
in operator (collection)NoUse AddColumns + LookUp pattern instead
IsBlank (on lookup)NoFilter on the lookup column directly
Sort with formulaPartial β€” simple column sorts are delegableAdd a sort column in Dataverse

Pre-loading data

For data that does not change during a session, load it upfront:

  • Named formulas β€” define in App.Formulas for automatic caching
  • Concurrent() β€” load multiple data sources in parallel on App.OnStart or screen OnVisible
  • Collections β€” ClearCollect(LocalCache, Filter(BigTable, ...)) to create a local copy for non-delegable operations
Exam tip: The delegation warning trap

The exam often presents a scenario where an app works correctly in testing (small dataset, under 500 records) but fails in production (large dataset, 10,000+ records). The cause: a non-delegable formula that silently drops records beyond the delegation limit.

The fix is always: use delegable functions, increase the delegation limit (Settings β†’ max 2,000), or pre-filter with a delegable query before applying non-delegable transformations.

Model-driven app optimisation

Form performance

OptimisationImpact
Remove unused tabs and sectionsFewer components to render
Lazy-load tabs (expand by default = off)Tabs load only when clicked
Minimise JavaScript on form loadReduce OnLoad execution time
Batch Web API callsOne request instead of multiple
Use business rules instead of scripts for simple logicFaster, no JavaScript overhead

View performance

  • Limit columns β€” show only what users need (each column is a query join)
  • Add appropriate filters β€” avoid β€œall records” views on large tables
  • Use personal views for individual needs instead of modifying system views
Question

What is delegation in Power Apps?

Click or press Enter to reveal answer

Answer

Delegation means the data source (Dataverse, SQL) processes the query server-side and returns only the matching results. Non-delegable formulas download all records (capped at 500-2000) and filter locally. With large datasets, non-delegable queries silently return incomplete results.

Click to flip back

Question

How does Concurrent() improve canvas app performance?

Click or press Enter to reveal answer

Answer

Concurrent() runs multiple data loading operations in parallel instead of sequentially. If three queries each take 3 seconds, sequential loading takes 9 seconds but Concurrent() takes ~3 seconds (they run simultaneously). Use it for independent data sources on OnVisible or OnStart.

Click to flip back

Question

What does Monitor show that browser dev tools do not?

Click or press Enter to reveal answer

Answer

Monitor provides Power Apps-specific context: formula evaluations, delegation warnings, connector call details, and Power Fx errors. Browser dev tools show raw network traffic and JavaScript errors but do not understand Power Fx formulas or delegation. Use both together for complete debugging.

Click to flip back

Knowledge Check

A canvas app displays a gallery of Customer records filtered by the first three characters of the customer name. The app works correctly with 200 test records but shows incomplete results in production with 15,000 records. What is the most likely cause?

Next up: Client Scripting β€” writing JavaScript for model-driven app form events, the Client API, and Dataverse Web API calls.