Skip to content

[Due for payment 2026-08-19] Remove infinite-skeleton Sentry span tracking #98036

Description

@rlinoz

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 OwnerCurrent Issue Owner: @TMisiukiewicz

Metadata

Metadata

Labels

Type

No type

Projects

Status
Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions