Troubleshooting EAS Observe
Edit page
Solutions for common EAS Observe issues.
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 { ObserveRoot } from 'expo-observe'; function RootLayout() { return (/* your layout */); } export default ObserveRoot.wrap(RootLayout);
import { AppMetricsRoot } from 'expo-observe'; function RootLayout() { return (/* your layout */); } export default AppMetricsRoot.wrap(RootLayout);
Time to interactive not showing
This metric requires manual instrumentation. Verify that:
- You are calling
markInteractive()(fromuseObserve()) after your splash screen is hidden. - The call is actually being executed (add a
console.logto verify).
- You are calling
AppMetrics.markInteractive()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
Terminal
- npx expo install expo-observe- npm uninstall expo-eas-observeIf you previously installed expo-eas-client as a separate dependency, you can remove it:
Terminal
- 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 { ObserveRoot } from 'expo-observe'; function RootLayout() { return (/* your layout */); } export default ObserveRoot.wrap(RootLayout);
import { AppMetricsRoot } from 'expo-observe'; function RootLayout() { return (/* your layout */); } export default AppMetricsRoot.wrap(RootLayout);
4
Create a new build
After completing the migration, create a new build of your app:
Terminal
- eas build