Isolate issues in canvas apps
Canvas apps allow you to design apps with numerous different visuals and various data connections. Use IntelliSense and the App checker as guards against common issues. Monitor and the Variables panel can help you with debugging.
Here are some other techniques to isolate problems in a canvas app.
Inspect formulas with debug labels
Formulas can be complex. When things go wrong, it can be difficult to pinpoint which part failed. Debug labels are a useful technique to see the results of different parts of a formula.
A debug label is a Label with its Text property set to a formula of interest. It lets you see exactly how Power Apps treats these formulas. To avoid scoping bugs, insert the debug label outside other controls like Gallery and Form.
Imagine that a Combo box control is showing less than expected and the dropdown options are blank.
Check if the Combo box is configured correctly. For example, the Items property is set to a complex formula below:
AddColumns(
GroupBy(
Filter( Products, Rating > 4 ),
"ProductType",
"Details"
),
"Total quantity",
Sum( Details, Quantity )
)
Start with the innermost expression Filter( Products, Rating > 4 )
. Insert a debug label and set its Text property to test the result of that expression. Some useful information to verify:
- Check if the number of results is as expected:
CountRows( Filter( Products, Rating > 4 ) )
- Examine the first result and verify the filter is working as expected:
"Rating of first result is " & First( Filter( Products, Rating > 4 ) ).Rating
- Check results by combining their names:
Concat( Filter( Products, Rating > 4 ), ProductName & ", ")
Tip
When working with datasets, debug tables are useful for previewing records. The concept is similar to debug labels. Insert a Data table with its Items property set to the dataset of interest.
You might want to use the FirstN and LastN functions for better performance with datasets.
Once you've confirmed that an expression is evaluated correctly, you can move on to the next outer expression GroupBy( Filter( Products, Rating > 4 ), "ProductType", "Details" )
. By proceeding methodically, you can find out which part of a complex expression isn't working.
When using empty dropdown options, start with the DisplayFields property. Imagine it's set to [ProductType]
. Use a debug label to verify that this field is recognized by Power Apps and contains text. Since all the dropdown options are empty, it's sufficient to examine any record. Let's pick the first record and see what its ProductType
field is. Set the debug label to:
First(
AddColumns(
GroupBy(
Filter( Products, Rating > 4 ),
"ProductType",
"Details"
),
"Total quantity",
Sum( Details, Quantity )
)
).ProductType
If the result is empty, it could be:
- The
ProductType
field for that record really is empty. If the dataset comes from outside the app, check it outside of Power Apps. - One or more of the expressions isn't working. Break it down as described above to narrow down. It could be a Power Apps bug or a mistake in writing the formula.
- Data isn't reaching Power Apps. It could be a networking issue, an issue with the data source, or a Power Apps bug.
If the result has text, then it's likely a Power Apps bug with the control. You can report the bug through a support request and use a different control as a workaround.
Try a different control
To find out if the issue is with a specific control, try using a different control that has the same data type of input or output.
Boolean
Choice and Table
Date and DateTime
Image and Media
- HTML text
- Image
- Image property of Audio, Video, and Microphone
Number
Text
All types
- Label, after converting a value to text
If the same problem happens on a different control, then the issue is with the formulas or data source used. Proceed with the debugging steps above to further isolate the issue.
If the problem only happens on a particular type of control, then it's likely a control bug. You can report the bug to Microsoft.
Try a different app structure
Formulas can behave differently for controls inside another control. For example, controls inside a Gallery can use ThisItem but controls outside the gallery can't. Controls outside a Gallery or Component can't reference the controls inside.
This different visibility of identifiers is called scope. Controls that contain other controls introduce a new scope.
- Component
- Container
- Display form
- Edit form
- Gallery
- Horizontal container
- Scrollable screen (Fluid grid)
- Vertical container
If a formula isn't working inside a contained control, it could be related to scoping. Try using the same formula outside the container.
For example, a Label control inside a Gallery should show each record's name but no text is appearing. Label.Text is set to ThisItem.Name
. Gallery.Items is set to Products
.
To check if it's a scoping issue, insert a debug label outside the Gallery, at the top-level of the app. Set its Text property to show the name of the first record of the dataset: First(Products).Name
.
The debug label should have the same result as the first row of the gallery. If not, it's likely a scoping bug with Power Apps that you can report through a support request. On the other hand, if both are blank, then the issue could be with the data source.
Some possible workarounds for scoping issues:
- Move controls outside of their containers
- Refer to data in global or context variables
- Use Patch to avoid using an Edit form control
Restore to an earlier version
If you haven't made major changes to an app and it suddenly stopped working after republishing it, try restoring it to the previous version. If it works again, examine the changes made to see what might have broken the app.
Sometimes, bugs may be introduced with new versions of Power Apps. Conversely, new versions may bring bug fixes. Microsoft Support can recommend whether you should revert to an older authoring version or upgrade to a newer one. Remember there's limited support for non-recommended versions if you change the authoring version on your own.
Create a minimal repro app
The process of creating a minimal repro app may uncover app configuration errors that aren't obvious with a complex app. Even if the problem isn't fixed, you would have narrowed the cause and made it easier to explain the problem to others.
Next steps
Debugging canvas apps with Monitor