{"id":6619,"date":"2019-10-18T12:59:37","date_gmt":"2019-10-18T19:59:37","guid":{"rendered":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/power-apps\/introducing-monitor-to-debug-apps-and-improve-performance\/"},"modified":"2025-06-11T08:01:40","modified_gmt":"2025-06-11T15:01:40","slug":"introducing-monitor-to-debug-apps-and-improve-performance","status":"publish","type":"post","link":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/power-apps\/introducing-monitor-to-debug-apps-and-improve-performance\/","title":{"rendered":"Introducing Monitor to debug apps and improve performance"},"content":{"rendered":"<p>I&#8217;m thrilled to announce a new tool to better understand, debug, and improve your apps.\u00a0 <strong>Monitor<\/strong> provides a running log of all the activity within your app allowing you to see how declarative formulas are actually doing their work.<\/p>\n<p>This first version is focused on network activity similar to a network trace in the browser.\u00a0 You can drill into details of each network call including how long they took, how much data was returned, and if there was an error.\u00a0 We also provide context for the request by mapping to the formula that made it.<\/p>\n<p>But this is just a first step.\u00a0 In the future we will log activities that don&#8217;t hit the network, allowing you to see variable and collection changes, performance implications of screen loading and rendering, and much more.\u00a0 And we have even more advanced tools in mind for power users and professional developers.<\/p>\n<p><strong>NOTE:\u00a0<\/strong>At this time, only network traffic for tabular data sources are included in the Monitor, such as Common Data Service, SharePoint, and SQL Server.\u00a0 There will be no activities shown for non-tabular connectors, custom connectors, and Flow.\u00a0 For example calls to the the Office 365 Users connector will not show any activity.\u00a0 We understand that these other sources are very important too and we are actively working on adding them.\u00a0 This blog will be updated when they are also included.<\/p>\n<h1>Basic operation<\/h1>\n<p>Let&#8217;s take a look.\u00a0 On the left hand side of Canvas Studio there is a new tool icon that opens up a tray of <strong>Advanced tools<\/strong>:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" class=\"alignnone size-full wp-image-6620\" height=\"321\" src=\"https:\/\/powerappsblogmedia.azureedge.net\/powerappsblog\/2019\/10\/2019-10-17_22h28_09.png\" width=\"424\" srcset=\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2019\/10\/2019-10-17_22h28_09.webp 424w, https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2019\/10\/2019-10-17_22h28_09-300x227.webp 300w\" sizes=\"auto, (max-width: 424px) 100vw, 424px\" \/><\/p>\n<p>Monitor is listed as an experimental feature.\u00a0 \u00a0Although it is experimental, there is no need to enable it in the File menu&#8217;s advanced settings like other experimental features since it has no impact on your app unless you turn it on and then only for that Studio session.\u00a0 You can use Monitor with any app in a test environment or in production.<\/p>\n<p>Selecting <strong>Open monitor<\/strong> opens up a new browser tab and connects to the existing Studio session.\u00a0 It immediately starts recording and displaying all the network activity in your app:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" class=\"alignnone size-full wp-image-6625\" height=\"720\" src=\"https:\/\/powerappsblogmedia.azureedge.net\/powerappsblog\/2019\/10\/2019-10-17_23h54_59.gif\" width=\"1424\"\/><\/p>\n<p>Note that we don&#8217;t start recording the log until you open the Monitor, and the Monitor can only be opened from Studio.\u00a0 So there is no way to obtain a log for a production app, something we may support in the future.<\/p>\n<p>You can drill into the details of an event by selecting a row.\u00a0 <strong>Details<\/strong> provides a high level overview of the event.\u00a0 To help keep the display manageable, portions of the JSON may be collapsed, as is <strong>&#8220;data&#8221;<\/strong> in this example:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" class=\"alignnone size-full wp-image-6627\" height=\"720\" src=\"https:\/\/powerappsblogmedia.azureedge.net\/powerappsblog\/2019\/10\/2019-10-18_00h03_47.png\" width=\"1425\" srcset=\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2019\/10\/2019-10-18_00h03_47.webp 1425w, https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2019\/10\/2019-10-18_00h03_47-300x152.webp 300w, https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2019\/10\/2019-10-18_00h03_47-1024x517.webp 1024w, https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2019\/10\/2019-10-18_00h03_47-768x388.webp 768w\" sizes=\"auto, (max-width: 1425px) 100vw, 1425px\" \/><br \/>\n<strong>Formula<\/strong> provides context on which formula in your app caused the event.\u00a0 The name of the control property is displayed both in the table and at the top of this tab.\u00a0 At this time, we can&#8217;t isolate the exact function call within a large formula, but this is one of many enhancements we have planned.\u00a0 Note that the operation is listed as<strong> createRow\u00a0<\/strong>which is not a formula language function; this is an internal operation name corresponding to the <strong>Patch<\/strong> function.\u00a0 In general, tighter mapping to what is in your formulas is on our backlog.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" class=\"alignnone size-full wp-image-6628\" height=\"720\" src=\"https:\/\/powerappsblogmedia.azureedge.net\/powerappsblog\/2019\/10\/2019-10-18_00h05_57.png\" width=\"1425\" srcset=\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2019\/10\/2019-10-18_00h05_57.webp 1425w, https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2019\/10\/2019-10-18_00h05_57-300x152.webp 300w, https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2019\/10\/2019-10-18_00h05_57-1024x517.webp 1024w, https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2019\/10\/2019-10-18_00h05_57-768x388.webp 768w\" sizes=\"auto, (max-width: 1425px) 100vw, 1425px\" \/><br \/>\n<strong>Request\u00a0<\/strong>is the actual network request that was made.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" class=\"alignnone size-full wp-image-6629\" height=\"720\" src=\"https:\/\/powerappsblogmedia.azureedge.net\/powerappsblog\/2019\/10\/2019-10-18_00h06_12.png\" width=\"1425\" srcset=\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2019\/10\/2019-10-18_00h06_12.webp 1425w, https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2019\/10\/2019-10-18_00h06_12-300x152.webp 300w, https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2019\/10\/2019-10-18_00h06_12-1024x517.webp 1024w, https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2019\/10\/2019-10-18_00h06_12-768x388.webp 768w\" sizes=\"auto, (max-width: 1425px) 100vw, 1425px\" \/><\/p>\n<p>And <strong>Response <\/strong>is what was returned.\u00a0 There are two ways to look at the response, first in a tabular format where tables and records are shown in a grid:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" class=\"alignnone size-full wp-image-6630\" height=\"720\" src=\"https:\/\/powerappsblogmedia.azureedge.net\/powerappsblog\/2019\/10\/2019-10-18_00h06_16.png\" width=\"1425\" srcset=\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2019\/10\/2019-10-18_00h06_16.webp 1425w, https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2019\/10\/2019-10-18_00h06_16-300x152.webp 300w, https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2019\/10\/2019-10-18_00h06_16-1024x517.webp 1024w, https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2019\/10\/2019-10-18_00h06_16-768x388.webp 768w\" sizes=\"auto, (max-width: 1425px) 100vw, 1425px\" \/><\/p>\n<p>But you can also display the response in JSON format using the drop down control on the right of the screen above the data:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" class=\"alignnone size-full wp-image-6631\" height=\"720\" src=\"https:\/\/powerappsblogmedia.azureedge.net\/powerappsblog\/2019\/10\/2019-10-18_00h06_27.png\" width=\"1425\" srcset=\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2019\/10\/2019-10-18_00h06_27.webp 1425w, https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2019\/10\/2019-10-18_00h06_27-300x152.webp 300w, https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2019\/10\/2019-10-18_00h06_27-1024x517.webp 1024w, https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2019\/10\/2019-10-18_00h06_27-768x388.webp 768w\" sizes=\"auto, (max-width: 1425px) 100vw, 1425px\" \/><\/p>\n<h1>Finding issues<\/h1>\n<p>In this ecample, I&#8217;m using the <strong>Northwind Sample Data<\/strong> app that is included with the <a href=\"https:\/\/docs.microsoft.com\/en-us\/powerapps\/maker\/canvas-apps\/northwind-install\">Northwind sample solution<\/a>.\u00a0 This is a Canvas app that pumps sample data into Common Data Service:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" class=\"alignnone size-full wp-image-6635\" height=\"688\" src=\"https:\/\/powerappsblogmedia.azureedge.net\/powerappsblog\/2019\/10\/sample-data-progress.png\" width=\"1174\" srcset=\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2019\/10\/sample-data-progress.webp 1174w, https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2019\/10\/sample-data-progress-300x176.webp 300w, https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2019\/10\/sample-data-progress-1024x600.webp 1024w, https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2019\/10\/sample-data-progress-768x450.webp 768w\" sizes=\"auto, (max-width: 1174px) 100vw, 1174px\" \/><\/p>\n<p>An earlier version of this app had poor performance and would randomly generate errors with no explanation or apparent pattern.\u00a0 Sometimes it failed and sometimes it worked fine.<\/p>\n<p>To debug this app, the first step was to understand the errors.\u00a0 Here&#8217;s one of them as seen in Monitor, with the key error message highlighted at the bottom right.\u00a0 This and other requests are returning 429 HTTP status codes, which indicates too many requests, with the specific error message &#8220;Rate limit is exceeded.&#8221;\u00a0 At present, this error message does not make it into the app.\u00a0 But in Monitor it is easy to see:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" class=\"alignnone size-full wp-image-6632\" height=\"720\" src=\"https:\/\/powerappsblogmedia.azureedge.net\/powerappsblog\/2019\/10\/2019-10-18_00h40_59.png\" width=\"1425\" srcset=\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2019\/10\/2019-10-18_00h40_59.webp 1425w, https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2019\/10\/2019-10-18_00h40_59-300x152.webp 300w, https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2019\/10\/2019-10-18_00h40_59-1024x517.webp 1024w, https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2019\/10\/2019-10-18_00h40_59-768x388.webp 768w\" sizes=\"auto, (max-width: 1425px) 100vw, 1425px\" \/><\/p>\n<p>What does this mean?\u00a0 Like many services, Common Data Service will throttle requests if there are too many requests or they are coming in too rapidly.<\/p>\n<p>So are requests coming in too rapidly?\u00a0 Let&#8217;s look at that Monitor log again.\u00a0 For each <strong>createRow<\/strong> call we are generating a lot of <strong>getRows<\/strong> requests from the <strong>ProgressCount.Text<\/strong> property, each to a different entity and not to the entity we are creating rows in.\u00a0 Let&#8217;s look at the formula:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" class=\"alignnone size-full wp-image-6633\" height=\"720\" src=\"https:\/\/powerappsblogmedia.azureedge.net\/powerappsblog\/2019\/10\/2019-10-18_00h40_59-1.png\" width=\"1425\" srcset=\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2019\/10\/2019-10-18_00h40_59-1.webp 1425w, https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2019\/10\/2019-10-18_00h40_59-1-300x152.webp 300w, https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2019\/10\/2019-10-18_00h40_59-1-1024x517.webp 1024w, https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2019\/10\/2019-10-18_00h40_59-1-768x388.webp 768w\" sizes=\"auto, (max-width: 1425px) 100vw, 1425px\" \/><\/p>\n<p>This formula is for the count of rows shown in the Records column to the right in the gallery.\u00a0 It appears that for each record added, this formula is being reevaluated and <strong>CountRows<\/strong> is being called on many of the entities, resulting in <strong>getRows<\/strong>\u00a0in the log since <strong>CountRows<\/strong> isn&#8217;t delegated for CDS.\u00a0 \u00a0For each 1 request to add a record, we are potentially making 12 additional requests.<\/p>\n<p>To test this hypothesis, comment out the formula and replace it with a static text string.\u00a0 \u00a0Sure enough, the number of requests comes way down, errors go away, and performance is greatly improved.\u00a0 \u00a0Not only were these extra requests sporadically causing the errors due to hitting the CDS request throttle but it also explained the performance problem.<\/p>\n<p>The permanent fix for this app was to do the <strong>CountRows<\/strong> manually for each entity as records were being created in it.\u00a0 \u00a0The animated Monitor log shown earlier is of that improved app and there are no <strong>getRows<\/strong>\u00a0operations after each <strong>createRow<\/strong>, instead they are all done after the rows have been added.<\/p>\n<h1>Declarative insights<\/h1>\n<p>Canvas apps are declarative.\u00a0 As a maker, you describe &#8220;what&#8221; you want the app to do without needing to say &#8220;how&#8221; it is to be done.\u00a0 \u00a0In this example, the formula for <strong>ProgressCount.Text<\/strong> described succinctly what was to be displayed.\u00a0 The maker didn&#8217;t need to say when the information was to be refreshed and that is a great thing.\u00a0 The original app was written correctly.<\/p>\n<p>Because the maker doesn&#8217;t specify &#8220;when&#8221; the system must determine when the information is to be refreshed.\u00a0 By doing analysis across the entire app, the system usually does a great job of optimizing this, far better than most makers would on their own.\u00a0 But there are cases where the system will be too careful and do more work than is needed, with performance implications and in this case functional errors due to throttling.\u00a0 The system can be smarter and only update the count for the entity with the added record, and in fact since I started showing this demo internally the team has made it increasingly hard for me to recreate the errors.<\/p>\n<p>The work around is too be less declarative, take some control back from the system, and do the work manually using imperative means, <strong>App.OnStart<\/strong>\u00a0and <strong>Screen.OnVisible<\/strong> events, and caching in state variables.\u00a0 <a href=\"https:\/\/powerapps.microsoft.com\/en-us\/blog\/powerapps-optimization-techniques\/\">Most performance optimizations in Canvas apps are based on doing this<\/a>.\u00a0 Use this sparingly and with care as imperative logic is often harder to understand and maintain.<\/p>\n<p>The key to figuring all this out is a better understanding what is actually happening in your app.\u00a0 There often isn&#8217;t enough information when looking at the app statically or even when investigating runtime errors.\u00a0 You need to watch the machine in operation and that is why we have added the Monitor.<\/p>\n<p>And we are in good company.\u00a0 SQL is one of the most popular declarative computer language.\u00a0 Most SQL implementations offer tools to understand how the declarative query is translated into concrete actions.\u00a0 For example, here is a SQL query and how it is translated into a query plan.\u00a0 With this information, the performance implications of doing joins and adding indices can be better understood.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" class=\"alignnone size-full wp-image-6639\" height=\"423\" src=\"https:\/\/powerappsblogmedia.azureedge.net\/powerappsblog\/2019\/10\/declarativequery.png\" width=\"1178\" srcset=\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2019\/10\/declarativequery.webp 1178w, https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2019\/10\/declarativequery-300x108.webp 300w, https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2019\/10\/declarativequery-1024x368.webp 1024w, https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2019\/10\/declarativequery-768x276.webp 768w\" sizes=\"auto, (max-width: 1178px) 100vw, 1178px\" \/><\/p>\n<p>Monitor is our first tool to expose the declarative implementation details so formula writers can make better decisions.\u00a0 Not everyone will want to get to this level of detail, and that&#8217;s just fine, we&#8217;ll keep improving our optimizations too for everyone&#8217;s benefit.<\/p>\n<h1>Your feedback<\/h1>\n<p>I can&#8217;t emphasize enough that this is but a first step.\u00a0 I&#8217;ve noted a number of places that could use improvement and those and more are being actively worked on.\u00a0 We wanted to get something basic out the door to gather your feedback.\u00a0 And we have already been finding it helpful within our team.<\/p>\n<p>How do you debug apps?\u00a0 What do you find helpful?\u00a0 What could we add to this tool to make it more helpful to you?\u00a0 What information is missing?\u00a0 What other diagnostic tools should we add?<\/p>\n<p>Really, we&#8217;re asking.\u00a0 You&#8217;ll notice a <strong>Provide feedback<\/strong> drop down at the bottom of the Monitor window.\u00a0 \u00a0This leads to our community forum.\u00a0 Please let us know what you think.<\/p>\n<p>Monitor grew out of our own experience helping customers debug apps.\u00a0 You may have a completely different experience and we&#8217;d love to learn from it.<\/p>\n<p>There are some obvious next steps which we are already pursuing:<\/p>\n<ul>\n<li><strong>Import\/Export<\/strong>.\u00a0 Export your log to a file so you can send it to a friend or helpdesk.<\/li>\n<li><strong>Remote<\/strong>.\u00a0 Share your Monitor session with a friend or helpdesk so they can watch and examine the log in real time.<\/li>\n<li><strong>Column selection<\/strong>.\u00a0 Today there is no way to adjust the columns displayed.\u00a0 There is more information we could offer and we&#8217;d also like to focus the columns when working on performance versus a functionality bug.<\/li>\n<li><strong>Timeline<\/strong>.\u00a0 See a graphical timeline of activities, similar to what is seen in most network traces in the browser.<\/li>\n<li><strong>Model-driven apps<\/strong>.\u00a0 Today Monitor is Canvas only.\u00a0 We plan to add it to Model-driven apps too.<\/li>\n<\/ul>\n<p>You may be wondering why we don&#8217;t yet offer a traditional debugger with breakpoints, watch windows, and the like.\u00a0 It has been discussed and we may add this in time for imperative behavior formulas.\u00a0\u00a0<span style=\"font-size: 1rem;\">But even if we did, it would not have helped much with my earlier example as the performance problem was coming from a data flow formula that is not imperative.\u00a0 There would be no breakpoint to set.\u00a0 Again using SQL as a guide, there is no way to set a breakpoint in the middle of a SQL query.\u00a0 Flow is another good example where the result and timing of each action is available for postmortem analysis after the run.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>You now have a new tool to better understand, debug, and improve your apps.\u00a0 Similar to a network trace, Monitor provides a running list of all the activity within your app.\u00a0 \u00a0You can examine what data requests are made from your app, how long they took, how much data was returned, and which resulted in an error.<\/p>\n","protected":false},"author":86,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ms_queue_id":[],"ep_exclude_from_search":false,"_classifai_error":"","_classifai_text_to_speech_error":"","_alt_title":"","ms-ems-related-posts":[],"footnotes":""},"audience":[3378],"content-type":[3424],"job-role":[],"product":[3473],"property":[],"topic":[3421],"coauthors":[2104],"class_list":["post-6619","post","type-post","status-publish","format-standard","hentry","audience-it-professional","content-type-news","product-power-apps","topic-application-modernization"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Introducing Monitor to debug apps and improve performance - Microsoft Power Platform Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2019\/10\/18\/introducing-monitor-to-debug-apps-and-improve-performance\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Introducing Monitor to debug apps and improve performance - Microsoft Power Platform Blog\" \/>\n<meta property=\"og:description\" content=\"You now have a new tool to better understand, debug, and improve your apps.\u00a0 Similar to a network trace, Monitor provides a running list of all the activity within your app.\u00a0 \u00a0You can examine what data requests are made from your app, how long they took, how much data was returned, and which resulted in an error.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/power-apps\/introducing-monitor-to-debug-apps-and-improve-performance\/\" \/>\n<meta property=\"og:site_name\" content=\"Microsoft Power Platform Blog\" \/>\n<meta property=\"article:published_time\" content=\"2019-10-18T19:59:37+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-11T15:01:40+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/powerappsblogmedia.azureedge.net\/powerappsblog\/2019\/10\/2019-10-17_22h28_09.png\" \/>\n\t<meta property=\"og:image:width\" content=\"424\" \/>\n\t<meta property=\"og:image:height\" content=\"321\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Greg Lindhorst\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Greg Lindhorst\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2019\/10\/18\/introducing-monitor-to-debug-apps-and-improve-performance\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2019\/10\/18\/introducing-monitor-to-debug-apps-and-improve-performance\/\"},\"author\":[{\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/author\/greg-lindhorst\/\",\"@type\":\"Person\",\"@name\":\"Greg Lindhorst\"}],\"headline\":\"Introducing Monitor to debug apps and improve performance\",\"datePublished\":\"2019-10-18T19:59:37+00:00\",\"dateModified\":\"2025-06-11T15:01:40+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2019\/10\/18\/introducing-monitor-to-debug-apps-and-improve-performance\/\"},\"wordCount\":1784,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2019\/10\/18\/introducing-monitor-to-debug-apps-and-improve-performance\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/powerappsblogmedia.azureedge.net\/powerappsblog\/2019\/10\/2019-10-17_22h28_09.png\",\"keywords\":[\"Developer\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2019\/10\/18\/introducing-monitor-to-debug-apps-and-improve-performance\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2019\/10\/18\/introducing-monitor-to-debug-apps-and-improve-performance\/\",\"url\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2019\/10\/18\/introducing-monitor-to-debug-apps-and-improve-performance\/\",\"name\":\"Introducing Monitor to debug apps and improve performance - Microsoft Power Platform Blog\",\"isPartOf\":{\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2019\/10\/18\/introducing-monitor-to-debug-apps-and-improve-performance\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2019\/10\/18\/introducing-monitor-to-debug-apps-and-improve-performance\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/powerappsblogmedia.azureedge.net\/powerappsblog\/2019\/10\/2019-10-17_22h28_09.png\",\"datePublished\":\"2019-10-18T19:59:37+00:00\",\"dateModified\":\"2025-06-11T15:01:40+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2019\/10\/18\/introducing-monitor-to-debug-apps-and-improve-performance\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2019\/10\/18\/introducing-monitor-to-debug-apps-and-improve-performance\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2019\/10\/18\/introducing-monitor-to-debug-apps-and-improve-performance\/#primaryimage\",\"url\":\"https:\/\/powerappsblogmedia.azureedge.net\/powerappsblog\/2019\/10\/2019-10-17_22h28_09.png\",\"contentUrl\":\"https:\/\/powerappsblogmedia.azureedge.net\/powerappsblog\/2019\/10\/2019-10-17_22h28_09.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2019\/10\/18\/introducing-monitor-to-debug-apps-and-improve-performance\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Introducing Monitor to debug apps and improve performance\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#website\",\"url\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/\",\"name\":\"Microsoft Power Platform Blog\",\"description\":\"Innovate with Business Apps\",\"publisher\":{\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#organization\",\"name\":\"Microsoft Power Platform Blog\",\"url\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/03\/Microsoft-Logo-e1685482038800.png\",\"contentUrl\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/03\/Microsoft-Logo-e1685482038800.png\",\"width\":194,\"height\":145,\"caption\":\"Microsoft Power Platform Blog\"},\"image\":{\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#\/schema\/person\/dbd4cb8af4503e696f240353831f05d4\",\"name\":\"Greg Lindhorst\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/d2e26bc357423265c4eeeb6a4ed51bd71fb29b8eced3e31f4bc1ccd5bedaf80f?s=96&d=mm&r=g0133d144d5ed416197bd3b29ccd9a59c\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/d2e26bc357423265c4eeeb6a4ed51bd71fb29b8eced3e31f4bc1ccd5bedaf80f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/d2e26bc357423265c4eeeb6a4ed51bd71fb29b8eced3e31f4bc1ccd5bedaf80f?s=96&d=mm&r=g\",\"caption\":\"Greg Lindhorst\"},\"url\":\"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/author\/gregli\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Introducing Monitor to debug apps and improve performance - Microsoft Power Platform Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2019\/10\/18\/introducing-monitor-to-debug-apps-and-improve-performance\/","og_locale":"en_US","og_type":"article","og_title":"Introducing Monitor to debug apps and improve performance - Microsoft Power Platform Blog","og_description":"You now have a new tool to better understand, debug, and improve your apps.\u00a0 Similar to a network trace, Monitor provides a running list of all the activity within your app.\u00a0 \u00a0You can examine what data requests are made from your app, how long they took, how much data was returned, and which resulted in an error.","og_url":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/power-apps\/introducing-monitor-to-debug-apps-and-improve-performance\/","og_site_name":"Microsoft Power Platform Blog","article_published_time":"2019-10-18T19:59:37+00:00","article_modified_time":"2025-06-11T15:01:40+00:00","og_image":[{"width":424,"height":321,"url":"https:\/\/powerappsblogmedia.azureedge.net\/powerappsblog\/2019\/10\/2019-10-17_22h28_09.png","type":"image\/png"}],"author":"Greg Lindhorst","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Greg Lindhorst","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2019\/10\/18\/introducing-monitor-to-debug-apps-and-improve-performance\/#article","isPartOf":{"@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2019\/10\/18\/introducing-monitor-to-debug-apps-and-improve-performance\/"},"author":[{"@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/author\/greg-lindhorst\/","@type":"Person","@name":"Greg Lindhorst"}],"headline":"Introducing Monitor to debug apps and improve performance","datePublished":"2019-10-18T19:59:37+00:00","dateModified":"2025-06-11T15:01:40+00:00","mainEntityOfPage":{"@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2019\/10\/18\/introducing-monitor-to-debug-apps-and-improve-performance\/"},"wordCount":1784,"commentCount":0,"publisher":{"@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#organization"},"image":{"@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2019\/10\/18\/introducing-monitor-to-debug-apps-and-improve-performance\/#primaryimage"},"thumbnailUrl":"https:\/\/powerappsblogmedia.azureedge.net\/powerappsblog\/2019\/10\/2019-10-17_22h28_09.png","keywords":["Developer"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2019\/10\/18\/introducing-monitor-to-debug-apps-and-improve-performance\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2019\/10\/18\/introducing-monitor-to-debug-apps-and-improve-performance\/","url":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2019\/10\/18\/introducing-monitor-to-debug-apps-and-improve-performance\/","name":"Introducing Monitor to debug apps and improve performance - Microsoft Power Platform Blog","isPartOf":{"@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2019\/10\/18\/introducing-monitor-to-debug-apps-and-improve-performance\/#primaryimage"},"image":{"@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2019\/10\/18\/introducing-monitor-to-debug-apps-and-improve-performance\/#primaryimage"},"thumbnailUrl":"https:\/\/powerappsblogmedia.azureedge.net\/powerappsblog\/2019\/10\/2019-10-17_22h28_09.png","datePublished":"2019-10-18T19:59:37+00:00","dateModified":"2025-06-11T15:01:40+00:00","breadcrumb":{"@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2019\/10\/18\/introducing-monitor-to-debug-apps-and-improve-performance\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2019\/10\/18\/introducing-monitor-to-debug-apps-and-improve-performance\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2019\/10\/18\/introducing-monitor-to-debug-apps-and-improve-performance\/#primaryimage","url":"https:\/\/powerappsblogmedia.azureedge.net\/powerappsblog\/2019\/10\/2019-10-17_22h28_09.png","contentUrl":"https:\/\/powerappsblogmedia.azureedge.net\/powerappsblog\/2019\/10\/2019-10-17_22h28_09.png"},{"@type":"BreadcrumbList","@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/2019\/10\/18\/introducing-monitor-to-debug-apps-and-improve-performance\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/"},{"@type":"ListItem","position":2,"name":"Introducing Monitor to debug apps and improve performance"}]},{"@type":"WebSite","@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#website","url":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/","name":"Microsoft Power Platform Blog","description":"Innovate with Business Apps","publisher":{"@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#organization","name":"Microsoft Power Platform Blog","url":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/03\/Microsoft-Logo-e1685482038800.png","contentUrl":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-content\/uploads\/2020\/03\/Microsoft-Logo-e1685482038800.png","width":194,"height":145,"caption":"Microsoft Power Platform Blog"},"image":{"@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/#\/schema\/person\/dbd4cb8af4503e696f240353831f05d4","name":"Greg Lindhorst","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/d2e26bc357423265c4eeeb6a4ed51bd71fb29b8eced3e31f4bc1ccd5bedaf80f?s=96&d=mm&r=g0133d144d5ed416197bd3b29ccd9a59c","url":"https:\/\/secure.gravatar.com\/avatar\/d2e26bc357423265c4eeeb6a4ed51bd71fb29b8eced3e31f4bc1ccd5bedaf80f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d2e26bc357423265c4eeeb6a4ed51bd71fb29b8eced3e31f4bc1ccd5bedaf80f?s=96&d=mm&r=g","caption":"Greg Lindhorst"},"url":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/author\/gregli\/"}]}},"bloginabox_animated_featured_image":null,"bloginabox_display_generated_audio":false,"distributor_meta":false,"distributor_terms":false,"distributor_media":false,"distributor_original_site_name":"Microsoft Power Platform Blog","distributor_original_site_url":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog","push-errors":false,"_links":{"self":[{"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/posts\/6619","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/users\/86"}],"replies":[{"embeddable":true,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/comments?post=6619"}],"version-history":[{"count":1,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/posts\/6619\/revisions"}],"predecessor-version":[{"id":130756,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/posts\/6619\/revisions\/130756"}],"wp:attachment":[{"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/media?parent=6619"}],"wp:term":[{"taxonomy":"audience","embeddable":true,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/audience?post=6619"},{"taxonomy":"content-type","embeddable":true,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/content-type?post=6619"},{"taxonomy":"job-role","embeddable":true,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/job-role?post=6619"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/product?post=6619"},{"taxonomy":"property","embeddable":true,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/property?post=6619"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/topic?post=6619"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/power-platform\/blog\/wp-json\/wp\/v2\/coauthors?post=6619"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}