The V2 span processing pipeline has no mobile-specific normalizations. All mobile logic lives in the V1 path (Event + Span types).
Mobile specific normalization for span v2
- Outlier filtering: Remove
app.start.cold.value, app.start.warm.value, app.ttid.value, app.ttfd.value exceeding 180s
- Main thread tag: Derive
sentry.main_thread: "true" from thread.name == "main"
- Device class: Derive
device.class (LOW/MEDIUM/HIGH) from device attributes. Reuse existing classification logic from device_class.rs
- Mobile tag: Derive
sentry.mobile: "true" from sentry.sdk.name
Frame rate calculation: Derive frames.frozen_rate and frames.slow_rate from frames.frozen / frames.total and frames.slow / frames.total and stall_percentage -> done in Frontend instead on-demand
The V2 span processing pipeline has no mobile-specific normalizations. All mobile logic lives in the V1 path (Event + Span types).
Mobile specific normalization for span v2
app.start.cold.value,app.start.warm.value,app.ttid.value,app.ttfd.valueexceeding 180ssentry.main_thread: "true"fromthread.name == "main"device.class(LOW/MEDIUM/HIGH) from device attributes. Reuse existing classification logic fromdevice_class.rssentry.mobile: "true"fromsentry.sdk.nameFrame rate calculation: Derive-> done in Frontend instead on-demandframes.frozen_rateandframes.slow_ratefromframes.frozen / frames.totalandframes.slow / frames.totalandstall_percentage