React Native · iOS · Android · Expo

Testers shake the phone.
Your agent sees what they saw.

Wrap the app once. A tester shakes or taps Report, and the report carries the screenshot, the requests with bodies, the last screens and the build.

react-native-snagrelay sends the same report as the web widget, so the same agent reads it. No agent yet? It lands in your inbox or tracker.

Install

$npx expo install react-native-snagrelay

Then wrap your app in <SnagRelayProvider>. React Native 0.76+ on the New Architecture.

  • Free plan, no card
  • iOS and Android
  • Expo or bare
A tester shakes their phone after a failed payment and sends a report. It appears in the agent’s report list, the agent reads it over MCP, fixes the bug and the tester is notified.
Checkout
Oat flat white€4.20
Cardamom bun€3.80

Add a tip

0%10%15%€0.50
Total€8.50
Pay with Apple Pay
kofi-app/AgentMCP · connected

Reports

APP-87Tip row overlaps on iPhone SEFixed · 1.4.2
APP-86Login loops on Android 14Fixed · 1.4.1
Ask your agent…
Expo React Navigation Hermes iOS Android New Architecture Expo React Navigation Hermes iOS Android New Architecture Expo React Navigation Hermes iOS Android New Architecture Expo React Navigation Hermes iOS Android New Architecture

The gap

A screenshot of a phone does not say which build, or what the API returned.

Today · what arrives

From a tester · in Slack

“Checkout broke on my phone. Again.”

photo of the screen

  • Which build?
  • Which screen?
  • Request?
  • Console?
  • Device?

You

Which TestFlight build are you on? Can you reproduce it and record the screen?

By the time they answer, the build has changed.

With SnagRelay · same bug

APP-31 · “Can’t place order”

Build
1.4.2 (318) · Hermes · New Architecture
Screens
Cart → Address → Checkout
Request
POST /v1/orders → 500
Response
{ "error": "address.zip required" }
Console
Unhandled promise rejection
Device
iPhone 15 · iOS 18.1

Your agent

Reproduced on 1.4.2. The order API now requires address.zip. Fixing CheckoutScreen.

One report, straight from the tester’s phone.

Install

Wrap the app. Ship a build.

Expo config plugin, or EXPO_PUBLIC_SNAG_RELAY_API_KEY. React Native 0.76+ on the New Architecture.

import { SnagRelayProvider }
  from "react-native-snagrelay";

<SnagRelayProvider apiKey={KEY}>
  <App />
</SnagRelayProvider>

What the report contains

Everything you’d ask the tester. Already attached.

An annotated screenshot, the last 50 requests with bodies, console and JS errors, the last 15 screens, and the build.

  • Annotated screenshot

    Pen, arrow, highlight, comment, redact.

  • Last 50 requests

    Bodies included, successes and failures. Secrets stripped on the device.

  • Console and JS errors

    What the tester’s build logged.

  • Last 15 screens

    Only after the navigation hook below. It does not record itself.

  • The build

    App version, React Native, Hermes, New Architecture on or off.

  • Expo updates

    updateId and channel, when expo-updates is installed.

Screen trail

The last 15 screens, from two lines.

Add the hook for React Navigation or Expo Router. The report then lists the screens they passed through.

// React Navigation
onStateChange={trackNavigationState}

// Expo Router
useSnagRelayScreenTrail(usePathname(), useGlobalSearchParams())

Where it goes

Same inbox. Same agent.

Not a second product. Keep Sentry for crashes.

Inbox

No tracker connected. The report waits in SnagRelay.

A tracker

Jira, Linear, GitHub, GitLab, Trello or Azure DevOps.

Your agent

Cursor, Claude Code or Codex read this ticket over the same MCP tools as a web report, and mark it fixed when the change ships.

Pricing

Priced per app. Never per tester or device.

Free

1 app · 25 reports a month

$0forever

  • 1 app · 25 reports a month
  • Element, errors, console and network with bodies
  • 30-second replay
  • MCP for Cursor, Claude Code and Codex
  • SnagRelay inbox or 1 tracker
  • 7-day history
Start freeNo card needed

Solo

3 apps · unlimited reports

$12/ mo

$144 billed yearly

Start 14-day trial
  • Unlimited reporters and teammates
  • Screenshots and markup
  • 60-second replay and repro steps
  • Console and network with bodies
  • MCP for Cursor, Claude Code and Codex
  • 30-day history
Most picked

Studio

10 apps · unlimited reports

$23/ mo

$276 billed yearly

Start 14-day trial
  • Everything in Solo
  • Video recording
  • Report types
  • 90-day history

Agency

Unlimited apps · unlimited reports

$63/ mo

$756 billed yearly

Start 14-day trial
  • Everything in Studio
  • No SnagRelay badge
  • Two-way tracker sync
  • 3-minute replay
  • 1-year history

Every account starts with a 14-day trial of the full product, then stays on Free unless you upgrade. No card.

Compare

The same job, without the enterprise price.

Checked October 2026. Each figure links to that company’s pricing page.

FAQ

Questions mobile developers ask first.

Does it work in Expo Go?
The form, shake and network capture work in Expo Go. Screenshots need a dev client or a bare app, and the form says so.
Which React Native versions are supported?
React Native 0.76 and newer on the New Architecture, iOS and Android. It works with Expo SDKs that ship those versions.
We already use Sentry. Why add this?
Keep Sentry for crashes. SnagRelay is the report a tester sends: their words, an annotated screenshot, the requests and the screen they were on.
What exactly does my agent receive?
get_issue_context returns the tester’s description, the annotated screenshot, the last 15 screens, the last 50 requests including successful ones with bodies, console and JS errors, and the build. Large bodies are fetched on demand with get_issue_payload.
Does the screen trail record itself?
No. It is the last 15 screens, and it needs the two-line navigation hook shown above. Without that hook, the report still has the screenshot, the requests and the build.
What about privacy?
Testers can redact any part of the screenshot before sending. Auth headers, tokens and password fields are stripped on the device. Nothing is sent until the tester taps Send.
We’re on Instabug. How hard is it to switch?
Install the package, wrap your app in the provider, remove the Instabug SDK, ship a build. Your existing Jira, Linear, GitHub, GitLab, Trello or Azure DevOps project can stay as the destination.

Ship it in the next build.

Read the SDK docs