You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: en/rum/analytics/native.mdx
+19-15Lines changed: 19 additions & 15 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -14,7 +14,7 @@ The Insights dashboard includes 4 core analysis dimensions: **Overview**, **Perf
14
14
15
15
The Native dashboard applies to Android, iOS, HarmonyOS, and Flutter apps, with the following platform-specific differences:
16
16
17
-
-**Flutter**: A single Flutter app spans both Android and iOS, so the filter bar additionally pins the `os_name` filter to let you slice metrics by device OS. In the Overview and Error Analysis, the **ANR Rate** (from Android devices) and **App Hang Rate** (from iOS devices) cards are displayed side by side.
17
+
-**Flutter**: A single Flutter app spans both Android and iOS, so the filter bar additionally pins the `os_name` filter to let you slice metrics by device OS. In the Overview and Error Analysis, the **ANR Rate** (from Android devices) and **Unresponsive Time Rate** (from App Hangs on iOS devices) cards are displayed side by side.
18
18
-**HarmonyOS**: The SDK does not report performance or hang metrics yet, so hang-related cards are hidden and the "Performance" tab is not available.
19
19
-**Electron**: Does not use the Native dashboard — Electron apps reuse the **Web Insights dashboard**, but UV is keyed on the anonymous ID (the Electron SDK does not report `usr_id`). See "Metrics Reference" below.
20
20
</Note>
@@ -28,7 +28,7 @@ The Native dashboard applies to Android, iOS, HarmonyOS, and Flutter apps, with
28
28
The Overview module focuses on core metrics across multiple dimensions for mobile apps:
29
29
30
30
-**Traffic Metrics** - Monitor UV (Unique Visitors) and sessions to understand overall user activity trends
31
-
-**Core Health Metrics** - Highlight three key mobile app metrics: crash count, crash-free rate, and app freeze rate for quick identification of stability issues
31
+
-**Core Health Metrics** - Highlight three key mobile app metrics: crash count, crash-free rate, and unresponsive time rate for quick identification of stability issues
32
32
-**User Access Trends** - Track UV and Session trends over time through time-series charts to understand user activity patterns
33
33
-**User Distribution** - Analyze user sources by geographic location to understand regional user activity
34
34
-**Session Analysis** - Track average session duration distribution trends to evaluate user engagement and usage depth
@@ -47,7 +47,7 @@ The Performance Analysis module focuses on full-chain monitoring of core experie
47
47
The top section displays P75 percentile values for four key performance metrics:
48
48
49
49
-**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.
50
-
-**Frame Rate (P75)**: Display the P75 percentile of runtime frame rate to measure visual smoothness. Target is 60fps; higher values indicate smoother interactions.
50
+
-**Frame Rate (P75)**: Display the P75 percentile of runtime frame rate to measure visual smoothness. Target is 60fps; higher values indicate smoother interactions. The SDKs normalize per-frame samples from high-refresh-rate screens (ProMotion, 120Hz Android devices) to a 60fps baseline and cap them at 60, so this metric reflects relative smoothness rather than the display's physical refresh rate.
51
51
-**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.
52
52
-**Memory Usage (P75)**: Monitor the P75 percentile of app memory usage to detect memory leaks or abnormal growth early.
53
53
@@ -70,7 +70,7 @@ Performance metrics by view name (Page/Activity/ViewController):
70
70
71
71
App smoothness metrics by view name:
72
72
73
-
-**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.
73
+
-**Slow Frame Rate**: Milliseconds of rendering time spent on slow frames, per second of rendering (ms/s). A slow frame is one that exceeds the display's frame budget (about 16.67ms at 60fps) without reaching the frozen-frame threshold. The higher this value, the more stuttering users perceive. Mobile SDKs report only the rate, not a slow-frame count.
74
74
-**Frozen Frames**: Count of completely frozen frames (typically exceeding 700ms), representing severe performance issues affecting user experience.
75
75
-**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.
<imgsrc="https://docs-cdn.flashcat.cloud/imges/png/b5868b87e52ddc7b82c61f685b2d0bd9.png"alt="Error analysis dashboard showing crash count, crash-free rate, ANR rate and unresponsive time rate" />
90
90
</Frame>
91
91
92
92
The Error Analysis module provides comprehensive error monitoring and diagnosis capabilities.
@@ -96,7 +96,7 @@ The Error Analysis module provides comprehensive error monitoring and diagnosis
96
96
-**Crash Count**: Monitor total crash occurrences and trends to detect abnormal spikes early. Crashes force app termination and severely impact user experience.
97
97
-**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%.
98
98
-**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.
99
-
-**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.
99
+
-**Unresponsive Time Rate**: Seconds the main thread was unresponsive per hour of view time (seconds/hour), averaged by view time and counted only over views the SDK finished measuring. **This card is shown for iOS and Flutter apps only**; Android-only apps show the ANR Rate above instead. See "How to reduce unresponsive time rate?" below.
100
100
101
101
#### Error Statistics
102
102
@@ -351,7 +351,7 @@ Common ANR causes:
351
351
352
352
</Accordion>
353
353
354
-
<Accordiontitle="How to reduce app freeze rate?">
354
+
<Accordiontitle="How to reduce unresponsive time rate?">
355
355
356
356
<Steps>
357
357
<Steptitle="Locate Freeze Sources">
@@ -381,7 +381,11 @@ Common ANR causes:
381
381
</Steps>
382
382
383
383
<Note>
384
-
Set reasonable freeze detection thresholds based on business characteristics and user expectations (recommended 200-500ms).
384
+
The data source and threshold differ per platform:
385
+
386
+
-**iOS**: Sourced from App Hangs, controlled by the SDK's `appHangThreshold`. This option **defaults to `nil`, meaning detection is off** — it must be set explicitly before any data is produced. A value of 0.25–0.5 seconds is recommended. See [iOS advanced configuration](/en/rum/sdk/ios/advanced-config).
387
+
-**Android**: Sourced from main-thread freezes, counted only once a main-thread task reaches 5 seconds. The threshold is fixed and cannot be configured. Android-only apps do not show this metric — use the ANR Rate instead.
388
+
-**Flutter**: One app spans both OSes, so ANR Rate and Unresponsive Time Rate appear side by side. Their thresholds differ, so do not compare them directly.
385
389
</Note>
386
390
387
391
</Accordion>
@@ -487,7 +491,7 @@ Flashduty RUM typically completes data collection and display within **1-3 minut
487
491
488
492
| Metric | Collection Field | Good | Moderate | Poor |
@@ -497,19 +501,19 @@ Flashduty RUM typically completes data collection and display within **1-3 minut
497
501
498
502
| Metric | Definition | Collection Field |
499
503
|--------|-----------|-----------------|
500
-
| Slow Frames | Frames with render time over 16ms | -|
501
-
| Frozen Frames | Frames with render time over 700ms |-|
502
-
| Long Tasks | Tasks with execution time over 100ms |long_task_duration|
503
-
| Freeze Frequency |Average freezes per second | - |
504
+
| Slow Frame Rate | Milliseconds of slow-frame time per second of rendering (ms/s) | view_slow_frames_rate|
505
+
| Frozen Frames | Frames with render time over 700ms |view_frozen_frame_count|
506
+
| Long Tasks | Tasks with execution time over 100ms |view_long_task_count|
507
+
| Freeze Frequency |Frozen frames divided by view time, i.e. average freezes per second | - |
504
508
505
509
### Stability Metrics
506
510
507
511
| Metric | Calculation | Description |
508
512
|--------|------------|-------------|
509
513
| Crash Count | Direct count | Total crashes caused by unhandled exceptions or signals |
510
-
| Crash-free Rate | 1 minus crash session ratio | Recommended to maintain above 99% |
514
+
| Crash-free Rate |Session-based: 1 minus (sessions with at least one crash / total sessions) | Recommended to maintain above 99%; a session that crashes several times still counts once. Android ANRs are not crashes and do not affect this metric|
511
515
| ANR Rate | ANR sessions divided by total sessions | Triggered when UI thread blocked over 5 seconds (Android) |
512
-
|App Freeze Rate |Freeze sessions divided by total sessions | Counted when main thread unresponsive over 250ms (iOS)|
516
+
|Unresponsive Time Rate |Total unresponsive main-thread time divided by total view time, expressed as seconds/hour | iOS counts App Hangs and requires `appHangThreshold`; Android counts main-thread freezes that reach 5 seconds|
Copy file name to clipboardExpand all lines: en/rum/sdk/ios/advanced-config.mdx
+25Lines changed: 25 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -247,6 +247,31 @@ RUM.enable(
247
247
Sampled-out sessions will not collect any page views or related telemetry data.
248
248
</Warning>
249
249
250
+
## App Hang Detection
251
+
252
+
An App Hang is a period during which the main thread is blocked and the UI cannot respond to user input. On iOS it is the only data source behind the **Unresponsive Time Rate** metric in the analytics dashboard.
253
+
254
+
<Warning>
255
+
`appHangThreshold`**defaults to `nil`, which means App Hang detection is off**. Unless you set it explicitly, your iOS app reports no App Hang data and the "Unresponsive Time Rate" card stays empty.
256
+
</Warning>
257
+
258
+
```swift
259
+
RUM.enable(
260
+
with: RUM.Configuration(
261
+
applicationID: "<RUM_APPLICATION_ID>",
262
+
appHangThreshold: 0.25// Record main-thread blocks longer than 250ms
263
+
)
264
+
)
265
+
```
266
+
267
+
Notes:
268
+
269
+
- The minimum allowed value is `0.1` seconds; lower values are raised to 0.1 automatically. For production, **0.25–0.5 seconds** is recommended, as a lower threshold produces a lot of noise.
270
+
- The SDK detects hangs with a 2.5% tolerance, so hangs lasting very close to the threshold may not be reported.
271
+
- Enable crash reporting as well, otherwise App Hang errors are reported without a stack trace.
272
+
- An App Hang that never recovers, and ends with the system terminating the app, is recorded as a fatal error: it counts toward the crash count and lowers the crash-free rate. Non-fatal hangs are recorded as errors with `error.category = App Hang`.
273
+
- Android has no equivalent option: its main-thread freeze threshold is fixed at 5 seconds.
274
+
250
275
## User Tracking Consent
251
276
252
277
To comply with privacy regulations like GDPR and CCPA, you can set user tracking consent state:
Copy file name to clipboardExpand all lines: en/rum/sdk/ios/data-collection.mdx
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -178,8 +178,8 @@ Different event types have specific attributes and metrics.
178
178
|`view.is_slow_rendered`| Boolean | Whether view rendering is slow |
179
179
|`view.crash.count`| Number | Number of crashes in this view |
180
180
|`view.frozen_frame.count`| Number | Number of frozen frames in this view |
181
-
|`view.refresh_rate_average`| Number | View average refresh rate |
182
-
|`view.refresh_rate_min`| Number | View minimum refresh rate |
181
+
|`view.refresh_rate_average`| Number | View average refresh rate. Samples from high-refresh-rate screens are normalized to a 60fps baseline and capped at 60.|
182
+
|`view.refresh_rate_min`| Number | View minimum refresh rate. Normalized the same way.|
183
183
|`view.memory_average`| Number | View average memory usage |
184
184
|`view.memory_max`| Number | View maximum memory usage |
185
185
|`view.cpu_ticks_count`| Number | View CPU tick count |
0 commit comments