We will understand the top reasons of slow performance for a canvas app. Before we start, make sure to subscribe to CRM Crate so that you can stay up to date in the field of Power Platform.
Client web browsers, devices, and geo locations
Canvas applications can be used on different web browsers, devices, and geographic locations with varying network conditions. Make sure your Canvas App is accessed on the recommended browsers as shown below.
Browser | Supported versions | App type |
---|---|---|
Google Chrome | Latest three major releases | Model-driven apps, canvas apps, Power Apps portals, app and component designers. |
Microsoft Edge | Latest three major releases | Model-driven apps, canvas apps, Power Apps portals, app and component designers. |
Mozilla Firefox | Latest three major releases | Model-driven apps, canvas apps, Power Apps portals. |
Apple Safari | 13 and later | Model-driven apps, canvas apps, Power Apps portals. |
Debug published app setting enabled
The “Debug published app” setting is used to view the source expressions in Monitor for the published app. This setting is similar to generating a debug file in traditional day to day development.
Publishing source expressions with your canvas app is an optional setting. Even when this setting is off, you’ll be able to see the events happening in your app, but you won’t be able to map these events to specific expressions or formulas.
This setting is found in “File > Settings, and then turn on Debug published app” as shown below.
But, Canvas Apps published with the setting Debug published app enabled perform slower. To minimize the impact, disable this setting as soon as you no longer need to view source expressions when debugging your published app.
Canvas App Design
Multiple aspects can harm the performance on the Canvas App in design’s perspective. Below are few key design related factors affecting app’s performance.
The app has a long formula in OnStart
The app triggers many unnecessary data calls in screens, and these data calls return large data records.
The app is client-heavy
The app gets large sets of data into data collections initially, and then uses the data within multiple screens over client-heavy operations like JOIN, Sort, Add Column, and Group By.
To review the Canvas App design as a suspected source of slow app performance, monitor the app by using Monitor. Verify which data calls are taking a long time, and how many data calls trigger such behaviour in the app.
Geo location of the on-premises data environment and gateway
Application users can access canvas apps globally. However, it is recommend that you locate the data source near most of your users. For example, when your app accesses your on-premises data source, the location of on-premises data gateway should be close to the data source to minimize any extra overhead between the data gateway and the data source.
Bottleneck in the source
There are multiple possible causes of bottlenecks in the data source. Usually, tables in the data source are at the center of activity when many transactional/nontransactional queries are directed to the same table or record from different users.
Below are few key reasons which can slow down the OData calls.
- The on-premises data gateway is unhealthy.
- The back-end machine hosting the data source is low on resources.
- The back-end SQL instance has blockings, deadlocks, or resource contention.
Large number of columns retrieved
As a good practise, it is recommended that you select only the columns that are necessary for the app. Adding un-used or all columns from the data source downloads all the data in the columns. This action results in a high number of network overhead calls and, therefore, high memory usage in the client device. This problem can affect users with mobile devices even more if the network bandwidth is limited, or if a device has limited memory or a legacy processor.
You can use the “Explicit Column Selection” feature to control this issue. This feature allows Power Apps to restrict data retrieval to only the columns used in the app.
Navigate to Settings > Upcoming features > Preview, and then turn on the Explicit column selection toggle to enable this feature.