When building apps in Power Apps, understanding what happens behind the scenes is essential for smooth performance and reliable functionality. The Monitor tool provides a powerful way to observe your app in action, offering real-time insights into its behavior and interactions.
Monitor acts as a live event viewer, capturing everything from data operations to user-triggered actions. It helps makers identify issues quickly, optimize performance, and validate logic without guesswork. Whether you’re troubleshooting a connector, analyzing load times, or verifying formula execution, Monitor gives you the visibility you need.
With Monitor, you can capture:
- Performance metrics (load times, data refresh times)
- Function calls (e.g.,
ClearCollect,Patch,Navigate) - Network requests (to SharePoint, Dataverse, APIs)
- Errors and warnings
- Trace logs (from
Trace()statements)
How to use the monitor tool
- In Power Apps Studio, from the app list, select Details → Live monitor under the app’s menu (3 dots).
- The Monitor window will open for your app.
- Click Play published app to run the app. It will open in a new browser tab.
- Use the app as you normally would, focusing on the parts you want to monitor.
- Events will appear live in the Monitor window as you interact with the app.
- Use filters to narrow down event types such as Errors, Warnings, or Trace messages.
- Click any event to view detailed information, including formula execution, data payload, and timing.
How to use Trace()
The Trace function allows you to send custom messages to the Monitor log while your app runs. This is useful for debugging and understanding the flow of your app. You can log simple text messages, variable values, or even complex objects and collections. You can also specify the severity of the message, such as Information, Warning, or Error. Trace is only available in canvas apps and does not work in model-driven apps.
To send a message only when a specific condition is met, wrap the Trace function inside an If statement. This helps you log errors or warnings only when they occur, instead of flooding the log with unnecessary messages.
Trace("Start of OnScreen"); // Manual text message
Trace("Value of varCompHeigh" & varCompHeight); // A variable
Trace("Value of gblAppColors" & JSON(gblAppColors)); // An object as JSON
Trace("Trace Warning", TraceSeverity.Warning); // Trace of type warning
Trace("Trace Critical", TraceSeverity.Critical); // Trace of type Critical
Trace("Trace Error", TraceSeverity.Error); // Trace of type Error
Trace("Trace Information", TraceSeverity.Information); // Trace of type Information
If(IsEmpty(colDesks), Trace("Collection is empty: " & JSON(colDesks), TraceSeverity.Error)) // Trace within If condition
Trace("End of OnStart"); // Manual text message














