All but React Native are in beta.
All but React Native are in beta.

This tool works with both Expo and React Native CLI projects. Just install and go.
Inspect JavaScript Sentry envelopes and captured drop reasons before or as the SDK sends them. Use the tool to review payloads, resolved SDK configuration, and estimated quota usage.

what your app sends, in 77 secondsA missing event can be caused by client configuration or processing before ingestion. Buoy helps inspect that part of the path. Its cost view estimates usage from observed envelopes; your Sentry plan and billing records determine actual charges.
npm install @buoy-gg/sentryThe tool auto-appears in your FloatingDevTools menu and starts watching automatically:
import { FloatingDevTools } from "@buoy-gg/core";
export default function App() {
return (
<>
{/* your app */}
<FloatingDevTools /> {/* Sentry tool auto-detected */}
</>
);
}
import { FloatingDevTools } from "@buoy-gg/core";
export default function App() {
return (
<>
{/* your app */}
<FloatingDevTools /> {/* Sentry tool auto-detected */}
</>
);
}
@sentry/react-native is an optional peer — without it the tool simply reports "SDK not found". Capture installs when your bundle evaluates, not when you open the tool, so the traffic Sentry.init sends during startup is already there the first time you look.
In a monorepo where Metro may resolve the SDK from package source rather than your app's copy, attach explicitly:
import * as Sentry from "@sentry/react-native";
import { SentryRoot } from "@buoy-gg/sentry";
<SentryRoot getClient={Sentry.getClient} />
import * as Sentry from "@sentry/react-native";
import { SentryRoot } from "@buoy-gg/sentry";
<SentryRoot getClient={Sentry.getClient} />
event, transaction, log, session, client_report, attachment, replay_event), byte sizes, span counts, and available post-processing payloads. Capture does not confirm transport success or server ingestion.beforeSend that returned null, a sample-rate roll, dedupe, React Native tracing discarding an empty transaction, or a native rate limit.Sentry.init resolved, not the ones you typed, flagged for quota risk, privacy, and correctness.The tool subscribes to the Sentry client's public beforeEnvelope hook — the same tee point Sentry's own Spotlight integration uses. It only observes: the envelope is never modified and your transport is untouched. To attribute drops it also wraps your beforeSend callbacks, passing their result through unchanged; your callback keeps full authority over what is sent.
The inspector observes the SDK without changing its outgoing envelopes. Your Sentry SDK still sends its normal traffic. If you connect Desktop or MCP, captured data can also be read through that connection.
With the MCP server, an agent can call get_sentry_envelopes to read the real exception, breadcrumbs and contexts without waiting for ingestion; this does not prevent the SDK from sending the event, get_sentry_cost for the billing picture, and get_sentry_drops when an event is missing.
Sentry's own MCP server reads issues that already reached sentry.io. This one reads the error on the device in front of you — along with the network request, storage, and state that caused it.
Your Sentry SDK sends its usual envelopes. Buoy displays its captured copy locally, and connected Desktop or MCP clients can read that copy. See Telemetry for separate Buoy account and telemetry traffic.
No. The envelope tee is read-only, and the beforeSend wrapper returns your callback's own answer untouched.
A transaction can contain several spans. The Cost tab counts observed units to estimate usage; verify current billing rules and quotas against your Sentry plan.
Not yet. Native crashes, release-health sessions and Session Replay uploads are sent by the native SDK and never pass through the JavaScript layer this tool observes.
Pass the existing browser SDK’s getClient through the host’s sentryGetClient prop. Envelope capture and diagnostic panels use the shared implementation. The browser build is available in this checkout and has not been published yet. See Web installation for registration, dependencies, and browser boundaries.