Skip to content

[ANDROID] TTID (Time to Initial Display) not reported in RUM #99

Description

@dragosapostol-ck

When using expo-datadog with the Datadog React Native SDK on Android, Time to Initial Display (TTID) is not reported in RUM. We do not see the TTID vital event (or any other vital) metric for Android sessions.
According to Android Application Launch Monitoring, the Android SDK (3.5.0+) automatically measures TTID. We are using the stack that expo-datadog configures (@datadog/mobile-react-native + native SDK), so we expect TTID to be collected on Android as it is for native Android apps.
iOS behavior (or our custom timings) is working as expected; the problem is specific to Android not reporting TTID.

Steps to reproduce the issue

  1. Create an Expo app with Expo SDK 54 and add expo-datadog + @datadog/mobile-react-native.
  2. Configure RUM with DatadogProvider / DatadogProviderConfiguration and enable RUM (e.g. rumConfiguration with sessionSampleRate: 100).
  3. Run expo prebuild and build a release (or debug) Android build: expo run:android --variant release (or equivalent).
  4. Install on a physical device or emulator, cold start the app, and use it so that a session and views are sent to RUM.
  5. In Datadog RUM, open the session and check for:
    • Vital events: @vital.name:time_to_initial_display and @vital.type:app_launch
    • Or the metric: rum.measure.app.startup_to_initial_display
      Observed: No TTID vital or rum.measure.app.startup_to_initial_display for Android. Other RUM data (views, actions, etc.) is present.

Expected outcome

  • TTID should be reported on Android when using expo-datadog, consistent with Android Application Launch Monitoring: vital time_to_initial_display and metric rum.measure.app.startup_to_initial_display, optionally with @vital.startup_type (cold/warm).

Environment

Package / runtime Version
expo-datadog ^54.0.0 (e.g. 54.0.0)
@datadog/mobile-react-native ^3.1.2
@datadog/mobile-react-native-babel-plugin ^3.1.2
expo 54.0.30
react-native ~0.81.5
  • Platform: Android only (TTID not reported; iOS is working).
  • Build: EAS Build or local expo run:android.

Additional context

  • We use the Expo config plugin for expo-datadog and initialize the SDK in JS with DatadogProvider and DdRum.startView for navigation. We do not use native initialization before React Native starts (e.g. no DdSdkNativeInitialization.initFromNative() in MainApplication).
  • If TTID reporting depends on the underlying React Native SDK (@datadog/mobile-react-native / dd-sdk-reactnative) or native Android SDK wiring, I'm happy to have this triaged to the appropriate repo. We’re reporting here first as we use the Expo + expo-datadog setup.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    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