Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/platforms/react-native/guides/expo/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@ To verify that everything is working as expected, build the `Release` version of

## Expo-Specific Features

- [Expo Updates](/platforms/react-native/guides/expo/manual-setup/expo/expo-updates/) — Automatic OTA update context, searchable tags, and emergency launch alerts
- [Expo Updates](/platforms/react-native/guides/expo/manual-setup/expo/expo-updates/) — Automatic OTA update context, searchable tags, performance spans for update checks and downloads, and emergency launch alerts
- [EAS Build Hooks](/platforms/react-native/guides/expo/manual-setup/expo/eas-build-hooks/) — Capture build failures and lifecycle events from EAS Build
- [Sentry Android Gradle Plugin](/platforms/react-native/guides/expo/manual-setup/expo/gradle/) — Advanced Android build configuration
- [Expo Router tracing](/platforms/react-native/guides/expo/tracing/instrumentation/expo-router/) — Navigation transitions, performance spans, prefetch instrumentation, and per-route `ErrorBoundary` capture
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
---
title: Expo Updates
description: "Automatic context, breadcrumbs, and alerts for Expo OTA updates."
description: "Automatic context, breadcrumbs, performance spans, and alerts for Expo OTA updates."
sidebar_order: 20
---

When you ship OTA updates with Expo Updates, events captured by Sentry are automatically enriched with information about which update is running. This lets you filter issues by update channel, runtime version, or update ID — and get alerted when an emergency launch occurs.
When you ship OTA updates with Expo Updates, events captured by Sentry are automatically enriched with information about which update is running. This lets you filter issues by update channel, runtime version, or update ID — track how long update checks and downloads take — and get alerted when an emergency launch occurs.

These integrations are enabled by default in Expo projects. No additional setup is required.

Expand Down Expand Up @@ -61,6 +61,28 @@ Update lifecycle breadcrumbs only run in native builds, not in Expo Go.

</Alert>

## Performance Spans

The SDK automatically creates performance spans that measure how long update checks and downloads take. These spans appear as standalone transactions in the **Performance** page and can be queried in **Discover**.

| Span Name | Operation | Created When |
|---|---|---|
| `expo-updates check` | `app.update.check` | The app starts checking for an available update |
| `expo-updates download` | `app.update.download` | The app starts downloading an update |

Each span ends when the corresponding operation completes or fails:

- **Success**: The span finishes with an `ok` status. If an update was found (check) or downloaded, the `expo.update.id` attribute is set to the manifest ID.
- **Failure**: The span finishes with an `error` status and the error message from the Expo Updates state machine.

Spans are created with `forceTransaction: true` because OTA update checks typically happen outside of user-interaction transactions (for example, at app startup). This means each check or download appears as its own transaction in Sentry rather than as a child span of another trace.

<Alert>

Performance spans only run in native builds, not in Expo Go.

</Alert>

## Emergency Launch Warnings

Expo Updates performs an _emergency launch_ when it fails to load the latest OTA update and falls back to the embedded bundle. This can silently degrade user experience.
Expand Down
Loading