Overview — Key Metrics at a Glance

- Traffic Metrics - Monitor UV (Unique Visitors) and sessions to understand overall user activity trends
- Core Health Metrics - Highlight three key mobile app metrics: crash count, crash-free rate, and app freeze rate for quick identification of stability issues
- User Access Trends - Track UV and Session trends over time through time-series charts to understand user activity patterns
- User Distribution - Analyze user sources by geographic location to understand regional user activity
- Session Analysis - Track average session duration distribution trends to evaluate user engagement and usage depth
- Version Distribution - Monitor user distribution across different system versions (Android/iOS) and app versions to support compatibility optimization and version iteration
Performance Analysis — Comprehensive App Experience Monitoring

Core Performance Metrics
The top section displays P75 percentile values for four key performance metrics:- App Startup Time (P75): Monitor the P75 percentile of app startup duration to evaluate startup performance. Startup time directly impacts user first impressions and willingness to use the app.
- Frame Rate (P75): Display the P75 percentile of runtime frame rate to measure visual smoothness. Target is 60fps; higher values indicate smoother interactions.
- CPU Usage (P75): Track the P75 percentile of CPU utilization to identify compute-intensive operations. High CPU usage leads to device heating and increased battery drain.
- Memory Usage (P75): Monitor the P75 percentile of app memory usage to detect memory leaks or abnormal growth early.
App Startup Time Analysis
- Startup Time Trend Chart: Shows how app startup time changes over time, helping you evaluate optimization effectiveness and detect performance regressions.
- Sample Distribution Histogram: Statistics of startup duration distribution by time intervals (e.g., 0.9425s-0.9642s, 1.1162s-1.1379s), providing insights into real user startup experience distribution and identifying long-tail performance issues.
View Performance Details
Performance metrics by view name (Page/Activity/ViewController):- Visit Count: Shows visit volume for each view to identify high-frequency core pages.
- Startup Time: Monitor loading duration for each view to locate slow-loading pages.
- Frame Rate: Track runtime frame rate performance for each view to identify rendering issues.
- CPU Usage: Statistics of CPU utilization for each view to optimize compute-intensive pages.
- Memory Usage: Monitor memory usage for each view to detect memory leak risks.
Smoothness Analysis
App smoothness metrics by view name:- Slow Frames: Count of frames with rendering time exceeding threshold (typically 16.67ms, i.e., below 60fps), identifying jank issues. Slow frames cause users to perceive noticeable UI stuttering.
- Frozen Frames: Count of completely frozen frames (typically exceeding 700ms), representing severe performance issues affecting user experience.
- Long Tasks: Count of long-running tasks on the main thread (typically threshold of 100ms or longer), locating performance bottlenecks. Long tasks block user interactions and UI updates.
- Freeze Frequency: Statistics of app freeze occurrence rate (per second), evaluating overall smoothness performance.
Memory Analysis
Memory usage details by view name:- Average Memory: Shows average memory usage for each view to understand typical memory consumption levels.
- Peak Memory: Records peak memory usage during view runtime to identify memory pressure peaks and prevent system termination due to insufficient memory (OOM).
- P75 Memory: Shows the P75 percentile of memory usage, reflecting memory usage for most users, more representative of real experience than averages.
Error Analysis — Quick Error Identification and Diagnosis

Core Stability Metrics
- Crash Count: Monitor total crash occurrences and trends to detect abnormal spikes early. Crashes force app termination and severely impact user experience.
- Crash-free Rate: Track the percentage of crash-free sessions to evaluate overall app stability. Industry standard recommends maintaining crash-free rate above 99.5%.
- ANR Rate: Statistics of Android Application Not Responding occurrence rate. ANR indicates the app’s main thread has been blocked for more than 5 seconds, causing users to see the “App Not Responding” dialog.
- App Freeze Rate: Monitor the percentage of sessions with freezes relative to total sessions, evaluating the impact scope of app smoothness issues. Freezes typically refer to UI freezing, response delays, or frame rate drops caused by long main thread blocking, affecting user interaction experience.
Error Statistics
- Error Count: Shows total error count and time-series trends to understand overall app health changes.
- Error Type Distribution Trend Chart: Stacked area chart showing distribution changes of crash errors (crash_count) and non-crash errors (non_crash_count) over time, quickly identifying abnormal periods and error type change trends.
- Crash Errors (crash_count): Severe errors causing forced app termination
- Non-crash Errors (non_crash_count): Caught exceptions where the app can continue running but functionality may be affected
Page Crash Ranking (Top 10)
Lists pages or view controllers with the most crashes, each record containing:- Error Type: Exception type of the crash (e.g., java.lang.RuntimeException, SIGTRAP, etc.)
- Error Message: Detailed error description to help quickly locate the issue
- Error Count: Total occurrences of this error on this page
- Session Count: Number of sessions (user visits) affected by this error
Top Issues (Top 10)
Shows ranking of issues affecting the most users. Each Issue is an aggregated collection of errors containing:- Error Type: Primary error type of the Issue (e.g., java.lang.RuntimeException, TypeError, ReferenceError, etc.)
- Error Message: Typical error description of the Issue; click to view detailed stack traces and session information
- Error Count: Total error occurrences in this Issue
- Session Count: Number of sessions affected by this Issue
Error Type Distribution
- Error Type Proportion (Pie Chart): Shows proportion of different error types (e.g., ReferenceError, java.lang.RuntimeException, etc.) to quickly identify main error sources.
- Error Type Distribution Trend (Stacked Area Chart): Monitor changes in each error type over time to detect new error types or abnormal growth of certain errors.
Version Crash Distribution
- Version Crash Distribution (Pie Chart): Statistics of crash distribution across different app versions to identify high-risk versions.
- Version Crash Distribution Trend (Stacked Area Chart): Monitor crash changes across versions over time to evaluate new version quality and perform hotfixes or rollbacks when necessary.
System Version Error Distribution
- System Version Error Distribution (Pie Chart): Statistics of error distribution across different OS versions (e.g., Android 11, Android 12, iOS 15, etc.) to identify system compatibility issues.
- System Version Error Trend (Stacked Area Chart): Monitor error changes across system versions over time to support system compatibility optimization.
Resource Analysis — Fine-grained Network Performance Optimization

- Request Count: Monitor network request volume trends to understand app network activity.
- Request Success Rate: Track successful request percentage to detect network anomalies early.
- Median Request Time: Shows median request duration changes (e.g., p50, p75, p95) to evaluate overall network performance levels.
- Slow Requests: Statistics of slow request trends exceeding response time thresholds to locate performance bottlenecks.
- Failed Requests: Monitor occurrence of failed or error requests to quickly identify API issues.
- Resource Request Status Distribution:
- Request Status Code Proportion: Pie chart showing distribution of different HTTP status codes (e.g., 200, 404, 500) to identify abnormal request types.
- Request Status Code Trend: Monitor status code changes over time to detect abnormal spikes.
- Request Method Distribution:
- Request Method Proportion: Shows usage distribution of different HTTP methods (GET, POST, etc.).
- Request Method Trend: Analyze time-series changes of each request method.
- Static Resources:
- Static Resource Call Ranking: Lists most frequently called static resources (e.g., images, fonts, config files) to understand resource usage popularity.
- Static Resource Response Ranking: Identifies slowest responding static resources to optimize resource loading performance.
- Network Call Ranking:
- Host Ranking: Statistics of request count by source (Host) to identify main dependent service endpoints.
- Resource Timing Ranking: Lists longest-duration network requests with timing details (DNS resolution, TCP connection, SSL handshake, time to first byte, response time, etc.) for precise performance bottleneck identification.
FAQ
Why is the status code 0 for some network requests?
Why is the status code 0 for some network requests?
- Request Cancelled - User left the page or cancelled the operation before the request completed, causing request interruption
- Network Interruption or Timeout - Request encountered network interruption, timeout, or other anomalies during transmission, potentially preventing normal status code return
- Certificate Validation Failed - HTTPS request SSL certificate validation failed, connection interrupted before establishment
- SDK Compatibility - In rare cases, specific system versions or devices may have compatibility issues causing incomplete data collection
What's the difference between error count and Issue count?
What's the difference between error count and Issue count?
- Error Count - Total count of raw error events, including every error occurrence record
- Issue Count - Count of aggregated issues. Flashduty aggregates similar errors into the same Issue based on error stack, error type, occurrence location, and other information
- Easier root cause identification: Errors with the same root cause are grouped into one Issue, avoiding duplicate handling
- Priority ranking: Identify issues most needing fixes through impact scope (error count, session count)
- Track fix effectiveness: After fixing an Issue, observe whether all errors under that Issue disappear
How to improve crash-free rate?
How to improve crash-free rate?
Locate High-frequency Crashes
Analyze Stack Information
Focus on System Compatibility
Monitor Version Quality
What do P75, P50, P90 percentiles mean?
What do P75, P50, P90 percentiles mean?
| Percentile | Meaning |
|---|---|
| P50 (Median) | 50% of users have better experience than this value, 50% have worse |
| P75 | 75% of users have better experience than this value, 25% have worse |
| P90 | 90% of users have better experience than this value, 10% have worse |
| P95 | 95% of users have better experience than this value, 5% have worse |
What are slow frames, frozen frames, and long tasks?
What are slow frames, frozen frames, and long tasks?
| Metric Type | Threshold | User Experience Impact | Priority |
|---|---|---|---|
| Slow Frame | Render time > 16.67ms (60fps standard) | Minor jank | Occasional is acceptable, frequent needs optimization |
| Frozen Frame | Render time > 700ms | Complete UI freeze, user cannot interact | Severely impacts experience, must fix |
| Long Task | Main thread execution > 100ms | Blocks user interaction and UI updates | Needs optimization |
- Complex calculations
- Large data processing
- Synchronous I/O operations
How to improve page loading performance?
How to improve page loading performance?
Locate Slow Pages
Optimize Data Loading
- Use pagination or virtual list techniques to avoid loading large amounts of data at once
- Use data preloading and caching strategies to reduce wait times
- Optimize network requests and merge API calls
Simplify Page Layout
- Reduce view hierarchy nesting to lower layout calculation complexity
- Avoid overuse of transparent views and rounded corner effects
- Lazy load non-first-screen content
Optimize Image Resources
- Use appropriate image formats and sizes
- Use progressive loading or placeholder images
- Compress and cache images
What is ANR and how to reduce ANR rate?
What is ANR and how to reduce ANR rate?
- When the app’s main thread is blocked for more than 5 seconds, the system displays an “App Not Responding” dialog
- Users can choose “Wait” or “Close App”
- ANR severely impacts user experience and may lead to app uninstallation
How to reduce app freeze rate?
How to reduce app freeze rate?
Locate Freeze Sources
Optimize Main Thread Tasks
Optimize UI Rendering
- Reduce view hierarchy to lower layout complexity
- Avoid complex view calculations on the main thread
- Use RecyclerView (Android) or UITableView/UICollectionView (iOS) optimization techniques
- Use hardware acceleration appropriately
Optimize List Performance
- Implement view recycling mechanisms
- Optimize item layout complexity
- Avoid time-consuming operations during item binding
How to collect user information?
How to collect user information?
- Android: See Android User Session Configuration
- iOS: See iOS User Session Configuration
| Platform | Available Identifiers |
|---|---|
| Android | Android ID, IMEI (requires permission), Advertising ID |
| iOS | IDFV (Identifier for Vendor), IDFA (requires user authorization) |
How to optimize network request performance?
How to optimize network request performance?
Identify Slow Requests
Analyze Timing Distribution
Targeted Optimization
| Optimization Area | Specific Measures |
|---|---|
| DNS Optimization | Use DNS caching, HTTPDNS |
| Connection Optimization | Enable HTTP/2, connection reuse, reduce redirects |
| Transfer Optimization | Enable GZIP compression, optimize data format, reduce request size |
| API Optimization | Optimize backend API performance, use CDN for static resources |
How to optimize app startup performance?
How to optimize app startup performance?
Analyze Startup Data
- Review “App Startup Time (P75)” metric to understand most users’ startup experience
- Use “Startup Time Trend Chart” to evaluate optimization effectiveness and detect performance regressions
- Review “Sample Distribution Histogram” to identify long-tail issues
Delay Non-critical Initialization
Optimize Dependency Loading
Simplify First Screen Layout
What is the data latency?
What is the data latency?
Metrics Reference
Overview Metrics
| Metric | Collection Field | Description |
|---|---|---|
| UV | usr_id | Total deduplicated users |
| Session Count | session_id | Total sessions when app is opened and used |
| Avg Session Duration | - | Total session duration divided by total sessions |
| Session Frequency | - | Total sessions divided by active users |
Performance Metric Thresholds
| Metric | Collection Field | Good | Moderate | Poor |
|---|---|---|---|---|
| App Startup Time | view_app_start_time | Within 2s | Within 4s | Over 4s |
| Frame Rate | view_refresh_rate_average | 55 FPS or above | 50 FPS or above | Below 50 FPS |
| CPU Usage | view_cpu_ticks_per_second | Below 40 ticks/s | Below 60 ticks/s | 60 ticks/s or above |
| Memory Usage | view_memory_average | Below 100 MB | Below 200 MB | 200 MB or above |
| Peak Memory | view_memory_max | Below 200 MB | Below 400 MB | 400 MB or above |
Smoothness Metrics
| Metric | Definition | Collection Field |
|---|---|---|
| Slow Frames | Frames with render time over 16ms | - |
| Frozen Frames | Frames with render time over 700ms | - |
| Long Tasks | Tasks with execution time over 100ms | long_task_duration |
| Freeze Frequency | Average freezes per second | - |
Stability Metrics
| Metric | Calculation | Description |
|---|---|---|
| Crash Count | Direct count | Total crashes caused by unhandled exceptions or signals |
| Crash-free Rate | 1 minus crash session ratio | Recommended to maintain above 99% |
| ANR Rate | ANR sessions divided by total sessions | Triggered when UI thread blocked over 5 seconds (Android) |
| App Freeze Rate | Freeze sessions divided by total sessions | Counted when main thread unresponsive over 250ms (iOS) |