Troubleshooting Expo Observe
Edit page
Solutions for common Expo Observe issues.
For the complete documentation index, see llms.txt. Use this file to discover all available pages.
Common issues
Metrics not appearing in the dashboard
- Ensure you have created a new build after installing
expo-observe. Metrics are only collected from builds that include the library. - Check that you are viewing the correct project in the EAS dashboard.
- If testing in a debug build, ensure
dispatchInDebugis set totrueviaconfigure(). See Enable metrics in development.
Time to first render not showing
Verify that your root layout is wrapped with the root HOC:
import { AppMetricsRoot } from 'expo-observe'; function RootLayout() { return (/* your layout */); } export default AppMetricsRoot.wrap(RootLayout);
import { ObserveRoot } from 'expo-observe'; function RootLayout() { return (/* your layout */); } export default ObserveRoot.wrap(RootLayout);
Time to interactive not showing
This metric requires manual instrumentation. Verify that:
- You are calling
AppMetrics.markInteractive()after your splash screen is hidden. - The call is actually being executed (add a
console.logto verify).
- You are calling
markInteractive()(fromuseObserve()) after your splash screen is hidden. - The call is actually being executed (add a
console.logto verify).
Migrating from expo-eas-observe
If you were part of the private preview and previously used expo-eas-observe, follow these steps to migrate to expo-observe.
1
Replace the package
- npx expo install expo-observe- npm uninstall expo-eas-observeIf you previously installed expo-eas-client as a separate dependency, you can remove it:
- npm uninstall expo-eas-client2
Update imports
- import AppMetrics from 'expo-eas-observe'; + import { AppMetrics } from 'expo-observe';
3
Replace manual markFirstRender() with the root HOC
Instead of calling markFirstRender() manually, wrap your root layout with the root HOC for your SDK. This handles the measurement automatically.
Before:
import { useEffect } from 'react'; import AppMetrics from 'expo-eas-observe'; export default function RootLayout() { useEffect(() => { AppMetrics.markFirstRender(); }, []); return (/* your layout */); }
After:
import { AppMetricsRoot } from 'expo-observe'; function RootLayout() { return (/* your layout */); } export default AppMetricsRoot.wrap(RootLayout);
import { ObserveRoot } from 'expo-observe'; function RootLayout() { return (/* your layout */); } export default ObserveRoot.wrap(RootLayout);
4
Create a new build
After completing the migration, create a new build of your app:
- eas build