When you run a test with Apptim Desktop and generate a performance report of your app, you will see certain colors (red/yellow/green/gray) in each metrics captured by Apptim.

In the main dashboard cards (top) and in the Summary section, you see that each metric is evaluated against default thresholds set in Apptim, which are based on Google’s best practices (Android) and Apple’s best practices (iOS), along with other market benchmarks that consider device fragmentation. Each of these will have a color according to the result against after applying the thresholds. We call these thresholds Low, Moderate or Warning Limit.
Moderate Limit: when the metric value is over a "recommended" threshold that might cause issues in some devices, you will see a yellow mark. 🟡
Warning Limit: when the metric value is over an "acceptable" threshold and is likely to cause issues on some devices, you will see a red mark. 🔴
Low Limit: when the metric value is in the range of the default threshold, you will see a green mark. 🟢
Skipped: when a metric is not defined in the threshold file, it will not be compared with any threshold and you will see it in grey under the skipped list. ⚪️
Check the tables below to see what the current default thresholds are for Android and iOS apps.
Default Thresholds for Android apps
Device Performance
Metric category | Moderate Limit 🟡 | Warning Limit 🔴 |
Avg. CPU usage | 20% | 50% |
Max. CPU usage | 70% | 90% |
Avg. Memory usage | 256 MB | 384 MB |
Max. Memory usage | 384 MB | 512 MB |
Avg./Max. Dalvik usage (market limit) | 64 MB | 128 MB |
Max. Dalvik usage (device limit) | 80% | 90% |
Max. Dalvik usage after GC (device limit) | 60% | 80% |
Network: Uploaded data | 5000 KB | 20000 KB |
Network: Downloaded data | 20000 KB | 50000 KB |
Storage Used | 100 MB | 200 MB |
Power Usage | 33% | 66% |
App Performance
Metric category | Moderate Limit 🟡 | Warning Limit 🔴 |
Avg. FPS | 30 FPS | 15 FPS |
Max. Drawing time | 160 ms | 320 ms |
Max. lag in render frame (jank) | 2 frames | 3 frames |
App Correctness
Metric category | Moderate Limit 🟡 | Warning Limit 🔴 |
# Android Activities | 50 | 500 |
# Android Activities on Back Stack | 6 | 10 |
Max. controls on the screen | 50 | 100 |
# Nested layouts | 10 | 20 |
Default Thresholds for iOS apps
Device Performance
Metric category | Moderate Limit 🟡 | Warning Limit 🔴 |
Avg. CPU Usage | 20% | 50% |
Max. CPU Usage | 70% | 90% |
Avg. Memory Usage | 256 MB | 384 MB |
Max. Memory Usage | 384 MB | 512 MB |
Network: Uploaded data | 5000 KB | 20000 KB |
Network: Downloaded data | 20000 KB | 50000 KB |
Storage Used | 100 MB | 200 MB |
Power Usage | 33% | 66% |
App Performance
Metric category | Moderate Limit 🟡 | Warning Limit 🔴 |
Avg. FPS | 30 FPS | 15 FPS |
App Correctness
Metric category | Moderate Limit 🟡 | Warning Limit 🔴 |
Max. controls on the screen | 50 | 100 |
# Nested Layouts | 10 | 20 |
How to use these thresholds/benchmarks
When a Warning Limit has been reached in some metric listed here and it seems a bit high, the user can then click on the specific graph related to that metric or navigate to it in the left panel to understand:
At what moment of the test that value was reached
How the app UI was at that moment, looking also at the UI seconds before and after in the video
Also, it is important to cross-reference the information with device-specific behavior shown inside the "Environment” section.
How to customize your own thresholds/benchmarks?
Read this guide! 🙂