Skip to content

Evaluate Sentry.reportFullyDisplayed() static API for cross-SDK alignment #6341

Description

@antonis

The Time to Initial/Full Display spec defines Sentry.reportFullyDisplayed() as the canonical API for signaling when a screen has fully loaded. Cocoa (SentrySDK.reportFullyDisplayed()), Android (Sentry.reportFullyDisplayed()), and Flutter (SentryDisplay.reportFullyDisplayed()) all implement it.

React Native uses <TimeToFullDisplay ready={bool}> component instead — a deliberate, React-idiomatic design choice. PR #6090 enhanced this with multi-instance coordination (multiple <TimeToFullDisplay> components that wait for all to report ready).

Feasibility Assessment (Jul 2026)

Not yet covered — there is zero reference to reportFullyDisplayed anywhere in the RN SDK codebase. No function, no export, no mention. The deprecated imperative functions startTimeToFullDisplaySpan() / startTimeToInitialDisplaySpan() still exist but are marked deprecated in favor of the components.

Cross-SDK alignment: RN is the only outlier. All other mobile SDKs implement the spec's canonical static API:

  • Android: Sentry.reportFullyDisplayed()
  • Cocoa: SentrySDK.reportFullyDisplayed()
  • Flutter: SentryDisplay.reportFullyDisplayed() (formerly SentryFlutter.reportFullyDisplayed(), deprecated)

Flutter's evolution is instructive: they started with a static method, moved toward SentryDisplay instances, and also offer SentryDisplayWidget. The approaches coexist.

Spec: YesSentry.reportFullyDisplayed() is the canonical API per develop.sentry.dev. This is the only issue in the project that is spec-backed.

Use cases for static API: Non-component contexts where the <TimeToFullDisplay> component doesn't fit — Redux sagas, data-fetching hooks, code outside the React render tree.

Recommendation

Add Sentry.reportFullyDisplayed() as a complementary API alongside the existing <TimeToFullDisplay> component. The component approach should remain the recommended/primary API for React developers, but the static method should exist for spec compliance, cross-SDK alignment, and non-component use cases.

Metadata

Metadata

Assignees

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions