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
- Create an Expo app with Expo SDK 54 and add expo-datadog + @datadog/mobile-react-native.
- Configure RUM with
DatadogProvider / DatadogProviderConfiguration and enable RUM (e.g. rumConfiguration with sessionSampleRate: 100).
- Run
expo prebuild and build a release (or debug) Android build: expo run:android --variant release (or equivalent).
- Install on a physical device or emulator, cold start the app, and use it so that a session and views are sent to RUM.
- 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.
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
DatadogProvider/DatadogProviderConfigurationand enable RUM (e.g.rumConfigurationwithsessionSampleRate: 100).expo prebuildand build a release (or debug) Android build:expo run:android --variant release(or equivalent).@vital.name:time_to_initial_displayand@vital.type:app_launchrum.measure.app.startup_to_initial_displayObserved: No TTID vital or
rum.measure.app.startup_to_initial_displayfor Android. Other RUM data (views, actions, etc.) is present.Expected outcome
time_to_initial_displayand metricrum.measure.app.startup_to_initial_display, optionally with@vital.startup_type(cold/warm).Environment
expo run:android.Additional context
DatadogProviderandDdRum.startViewfor navigation. We do not use native initialization before React Native starts (e.g. noDdSdkNativeInitialization.initFromNative()inMainApplication).