Context
Discussed in this Slack thread. The skeleton spans added in Add infinite skeleton telemetry (for #74138) were meant to surface pages that never finish loading, but the data turned out not to be actionable:
- Sentry shows many
ManualSkeleton spans lasting 1–20+ minutes, but the matching Fullstory sessions show users interacting with the app normally the whole time — no visible skeleton, no stuck state.
- Some spans end on unmount, so they measure how long the component stayed in the tree rather than how long anyone actually waited.
- No dashboard or alert queries these spans.
Conclusion in the thread was to delete them.
Scope
Remove the skeleton span tracking and the plumbing that exists only to feed it:
src/libs/telemetry/useSkeletonSpan.ts and all call sites.
- The
reasonAttributes prop plumbing and the *ReasonAttributes / *REASON_ATTRIBUTES locals.
- Props that existed only to build those attributes:
reasonContext (SkiaWebChart), context (TableLoadingState, AccountingSetupWebViewPage, useNativeCamera, SelectionListEmptyState), loadingReasonContext (PDFDownloadModal).
src/libs/telemetry/middlewares/minDurationFilter.ts, its registration in the beforeSend chain, and the minDuration option on startSpan.
- The now-unused
CONST.TELEMETRY entries: SPAN_SKELETON, ATTRIBUTE_MIN_DURATION, ATTRIBUTE_SKELETON_PREFIX, EVENT_SKELETON_ATTRIBUTES_UPDATE, CONFIG.SKELETON_MIN_DURATION.
Deliberately kept (separate feature): useCancelSendMessageSpanOnSkeleton, CONST.TELEMETRY.ATTRIBUTE_CANCELED_BY_SKELETON, CONST.TELEMETRY.ATTRIBUTE_SKELETON_SHOWN, useMarkOpenReportEndOnSkeleton.
Pure telemetry removal — no user-visible behavior change.
Issue Owner
Current Issue Owner: @TMisiukiewicz
Context
Discussed in this Slack thread. The skeleton spans added in Add infinite skeleton telemetry (for #74138) were meant to surface pages that never finish loading, but the data turned out not to be actionable:
ManualSkeletonspans lasting 1–20+ minutes, but the matching Fullstory sessions show users interacting with the app normally the whole time — no visible skeleton, no stuck state.Conclusion in the thread was to delete them.
Scope
Remove the skeleton span tracking and the plumbing that exists only to feed it:
src/libs/telemetry/useSkeletonSpan.tsand all call sites.reasonAttributesprop plumbing and the*ReasonAttributes/*REASON_ATTRIBUTESlocals.reasonContext(SkiaWebChart),context(TableLoadingState, AccountingSetupWebViewPage, useNativeCamera, SelectionListEmptyState),loadingReasonContext(PDFDownloadModal).src/libs/telemetry/middlewares/minDurationFilter.ts, its registration in thebeforeSendchain, and theminDurationoption onstartSpan.CONST.TELEMETRYentries:SPAN_SKELETON,ATTRIBUTE_MIN_DURATION,ATTRIBUTE_SKELETON_PREFIX,EVENT_SKELETON_ATTRIBUTES_UPDATE,CONFIG.SKELETON_MIN_DURATION.Deliberately kept (separate feature):
useCancelSendMessageSpanOnSkeleton,CONST.TELEMETRY.ATTRIBUTE_CANCELED_BY_SKELETON,CONST.TELEMETRY.ATTRIBUTE_SKELETON_SHOWN,useMarkOpenReportEndOnSkeleton.Pure telemetry removal — no user-visible behavior change.
Issue Owner
Current Issue Owner: @TMisiukiewicz