expo-observe

Instrument Expo apps with EAS Observe and query startup and navigation performance metrics.

1|Updated Jul 4, 2026
One-click install
npx skills add https://github.com/trungenglish/SHOPWISE --skill expo-observe-trungenglish
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: expo-observe
Source: https://github.com/trungenglish/SHOPWISE/tree/main/.agents/skills/expo-observe
Command: npx skills add https://github.com/trungenglish/SHOPWISE --skill expo-observe-trungenglish

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve? Mobile teams shipping Expo apps lack visibility into real-world startup and navigation performance, making it hard to detect slow cold launches, blocked main threads, or sluggish screens in production. ## Core Features & Use Cases - Instrumentation Setup: Add expo-observe to an Expo project by wrapping the root layout with AppMetricsRoot (SDK 55) or ObserveRoot (SDK 56+), calling markInteractive(), and optionally enabling per-route metrics via the Expo Router or React Navigation integrations. - CLI Metrics Querying: Run the five eas observe:* commands (metrics-summary, metrics, routes, events, versions) with flags for platform, time range, stats, pagination, and JSON output. - Metrics Interpretation: Apply target thresholds (cold launch < 1.5s, TTI < 3s) and use TTI frameRate params to distinguish slow-but-smooth startups from main-thread contention or hard freezes. - Use Case: After releasing a new app version, run eas observe:metrics-summary --metric tti --days 7 to compare startup TTI across versions and confirm the release did not regress launch performance. ## Quick Start Ask the assistant to add EAS Observe instrumentation to your Expo app's root layout and show how to query startup TTI metrics from the EAS CLI.

Frequently Asked Questions about expo-observe

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I add EAS Observe to an Expo project?▼

Install expo-observe with npx expo install, wrap your root layout with AppMetricsRoot.wrap() on SDK 55 or ObserveRoot.wrap() on SDK 56+, then call markInteractive() once the screen is usable. Build with eas build and view results in the Observe dashboard.

How do I query Expo app startup metrics from the terminal?▼

Use eas observe:metrics-summary for per-version aggregates like median and p90, or eas observe:metrics tti for individual samples. Both support --platform, --days, --stat, and --json flags for filtering and scripting.

What is the difference between AppMetricsRoot and ObserveRoot in expo-observe?▼

AppMetricsRoot is the root layout HOC for SDK 55, paired with the global AppMetrics.markInteractive(). SDK 56 and later use ObserveRoot with the useObserve() hook, which also enables per-route navigation metrics integrations.

Does EAS Observe support per-route navigation performance metrics?▼

Yes, on SDK 56+ you can enable the Expo Router or React Navigation integration via Observe.configure() to collect cold_ttr, warm_ttr, and nav_tti per route. React Navigation also requires replacing NavigationContainer with ObserveNavigationContainer.

Why are my EAS Observe metrics not showing up in debug builds?▼

Debug builds, including JS bundles with __DEV__ set to true, do not dispatch metrics by default. Set dispatchInDebug: true in configure() while testing, or create a release build with eas build to see production metrics.

What do the frameRate params on TTI events mean?▼

TTI events include slowFrames (frames over 17ms), frozenFrames (frames over 700ms), and totalDelay (accumulated frame overrun). High TTI with low totalDelay indicates a slow but smooth launch, while high totalDelay with frozenFrames signals hard main-thread blocking.