aidentity / index

expo/skills · MIT

eas-observe

Use for anything related to EAS Observe - adding `expo-observe` to an Expo project (AppMetricsRoot/ObserveRoot HOC, markInteractive and ObserveInteractiveMarker, the useObserve hook, the Expo Router / React Navigation integrations for per-route metrics, the expo-image and Reanimated integrations, user-defined events via `Observe.logEvent`, error reporting via ObserveErrorBoundary and `Observe.reportError`, native crash reporting, source map upload for symbolicated stack traces, and runtime config such as sampleRate and dispatchInDebug), querying via the EAS CLI (`eas observe:metrics-summary`, `observe:metrics`, `observe:routes`, `observe:events`, `observe:session`, `observe:versions`, `observe:errors`, `observe:event`) or the Expo MCP `observe_*` tools, interpreting the resulting metrics (cold/warm launch, TTR, TTI, navigation cold/warm TTR, update download, and the TTI frameRate/device/network params for triaging slow startups), or shipping an Observe integration inside a third-party package.

stable

Contents

EAS Observe

> EAS service - costs apply. EAS Observe is an Expo Application Services product. The free EAS plan allows up to 10,000 monthly active users, with a limited set of features; higher usage requires a paid subscription. For details, see https://expo.dev/pricing#plan-features.

EAS Observe tracks startup, navigation, and custom-event performance from production Expo apps, and records JavaScript errors and native crashes. It needs a development or production build — the native library is not in Expo Go.

> Source of truth: https://docs.expo.dev/eas/observe/ — always consult the canonical docs when API details matter, especially get-started, configuration, integrations, and the metrics reference. EAS Observe is evolving; this skill's references are written to stay accurate but may lag the docs.

Which reference to read

The five reference files in ./references/ cover what people typically need this skill for:

  • Adding EAS Observe to a project → [./references/setup.md](./references/setup.md). Install, wrap the root layout (AppMetricsRoot on SDK 55, ObserveRoot on SDK 56+), mark the app interactive (global markInteractive() on SDK 55, the useObserve() hook or <ObserveInteractiveMarker /> on SDK 56+), optional per-route navigation metrics through the Expo Router / React Navigation integrations, user-defined events via Observe.logEvent (SDK 56+), error reporting, and runtime configuration (sampling, dispatch, environments, custom endpoint).
  • Querying metrics from the terminal → [./references/queries.md](./references/queries.md). The eas observe:* commands — metrics-summary, metrics, routes, events, session, versions, errors, event — with flags, metric aliases, table layouts, JSON shapes, and common workflows. Also the matching observe_* tools in the Expo MCP Server, and how their inputs differ from the CLI flags.
  • Reading a dashboard or CLI output → [./references/metrics.md](./references/metrics.md). Target thresholds per metric, what the automatic TTI params mean (frameRate.*, device.*, network.*), and diagnostic patterns for telling slow-but-smooth startup apart from main-thread contention, hard blocks, or throttled devices.
  • Reporting problems from library integrations → [./references/library-integrations.md](./references/library-integrations.md). The current and future integrations that report problems a library detects as events or errors, with their options, limits, and how to query the reports. Currently: expo-image (expo-image.oversized events for images decoded far larger than the screen) and react-native-reanimated (reanimated.error errors and optional reanimated.warning events).
  • Shipping an Observe integration in a library → [./references/third-party.md](./references/third-party.md). For package authors only (SDK 57+): optional peer dependency, config declaration merging, Observe.registerIntegration(), and event naming.

Quick links to the docs

Submitting Feedback

If you encounter errors, misleading or outdated information in this skill, report it so Expo can improve:

npx --yes @expo/agent-cli@latest feedback --category skills --subject "eas-observe" "<actionable feedback>"

Only submit when you have something specific and actionable to report. Include as much relevant context as possible.

If an agent repeatedly fails at an Expo task or the user has to step in, submit a brief report of the task, expected result, and what went wrong using --category evals and the relevant Expo package or command as --subject.

Provenance

Authored by Expo (650 Industries) in expo/skills. The content is mirrored here under its upstream license.

Related

eas-app-stores Build and submit iOS and Android apps with EAS to TestFlight, the App Store, or Google Play. Supports Expo and other React Native projects, plus existing native apps. Use for eas.json setup, release pipelines, signing, app versions and build numbers, store submissions, and listing metadata. For Expo websites and API routes, use eas-hosting; for adding React Native screens to a native app, use expo-brownfield. expo/skills MIT eas-hosting Deploy Expo websites and Expo Router API routes to EAS Hosting - export the web bundle, run eas deploy for production and PR preview URLs, manage environment secrets and custom domains, and work within the Cloudflare Workers runtime. Also covers authoring API routes (+api.ts handlers, HTTP methods, request handling, CORS). Use when deploying an Expo web app or API routes, setting up EAS Hosting, or configuring hosting environments and domains. Not for native builds or store releases - use the eas-app-stores skill for those. expo/skills MIT eas-simulator Run and control a user's app on a remote iOS/Android simulator hosted on EAS cloud. Read before running any `eas simulator:*` commands - it has the current syntax for this experimental API. Use whenever the user needs a simulator they can't run locally - 'run my app on a cloud simulator', 'use eas simulator to run/install/screenshot my app', 'I'm on Linux/Cursor and need an iOS device', 'no sim on this box / headless CI', 'let an agent click through my app and screenshot it', 'test my dev build on a remote sim with live reload', 'stream a sim to my browser' - even when they don't say 'EAS Simulator' or 'cloud'. On a host WITHOUT a local simulator (Linux, CI, cloud sandbox) it's the default; on macOS, do NOT auto-trigger for a plain 'run on the simulator' - use it only for a cloud/remote/shareable sim, an iOS version they lack, or an agent-driven session. NOT for local sims (expo run:ios, Xcode, Android Studio), EAS Build/Update, web preview, or physical devices. expo/skills MIT eas-update Configure and use EAS Update for over-the-air JavaScript and asset updates with expo-updates and EAS CLI. Use when setting up OTA updates, running eas update:configure or eas update, publishing to preview/staging/production channels, explaining branches/channels/runtime versions, testing updates, or debugging why an installed build still shows old code. Load for TestFlight, preview, or production updates that do not appear, including questions about cold launches or reopening the app. Not for update health metrics; use eas-update-insights for adoption, crashes, and rollout monitoring. expo/skills MIT eas-update-insights Check the health of published EAS Update: crash rates, install/launch counts, unique users, payload size, and the split between embedded and OTA users per channel. Use when the user asks how an update is performing, whether a rollout is healthy, how many users are on the embedded build vs OTA, or wants to gate CI on update health. expo/skills MIT