RORK LABJP
DEADLINE — From August 31, 2026, Google Play requires target API level 36 (Android 16) or higher for both new apps and updates to existing ones. Twelve days leftEXTENSION — If you cannot make the date, the deadline extension form in Play Console buys you until November 1. The extension is not automatic, so the request itself has to land before August 31TARGET SDK — Even for the Expo and React Native apps Rork produces, the targetSdkVersion is yours to verify. A template pinned to an older SDK will not meet the requirement on its ownRORK MAX — Where the original Rork emits React Native and Expo, Rork Max generates native Swift, covering iPhone, iPad, Apple Watch, Apple TV, Vision Pro, and iMessageFUNDING — A $15M seed round led by Left Lane Capital was announced on April 9, alongside the acquisition of app builder Paperline to bring in engineering talentiOS — Developer beta 6 of iOS 27 arrived on August 17 with the autumn release drawing closer. If you ship native Swift output, the new OS timeline feeds straight into your release planDEADLINE — From August 31, 2026, Google Play requires target API level 36 (Android 16) or higher for both new apps and updates to existing ones. Twelve days leftEXTENSION — If you cannot make the date, the deadline extension form in Play Console buys you until November 1. The extension is not automatic, so the request itself has to land before August 31TARGET SDK — Even for the Expo and React Native apps Rork produces, the targetSdkVersion is yours to verify. A template pinned to an older SDK will not meet the requirement on its ownRORK MAX — Where the original Rork emits React Native and Expo, Rork Max generates native Swift, covering iPhone, iPad, Apple Watch, Apple TV, Vision Pro, and iMessageFUNDING — A $15M seed round led by Left Lane Capital was announced on April 9, alongside the acquisition of app builder Paperline to bring in engineering talentiOS — Developer beta 6 of iOS 27 arrived on August 17 with the autumn release drawing closer. If you ship native Swift output, the new OS timeline feeds straight into your release plan
Articles/Dev Tools
Dev Tools/2026-07-11Advanced

When Sentry Burned Through Its Event Quota in Days — Trimming Noise Before It Ships

A Sentry quota that empties early in the month is almost always a noise problem, not an error surge. Here is how to shrink event volume before it ships — with beforeSend, sampling, and grouping — while keeping the errors that actually matter inside the quota.

Rork537Sentry6monitoring3cost optimization3React Native227error tracking

Premium Article

The morning after I shipped a new build, an email from Sentry was waiting: "You have used 80% of your event quota this month." It was July 3rd.

Errors had not spiked. The app was running fine. But the events flowing in had quietly filled up with the same harmless exception, fired thousands of times.

The free tier is 5,000 events per month. At that pace, one of my apps was on track to hit 18,000. Once the quota is gone, the crashes I actually need to see get dropped and never recorded. Monitoring in place, blind exactly when it matters. That was the outcome I wanted to avoid.

What follows is how I bring Sentry event volume under control for a Rork (React Native / Expo) app — before events ship, not after. Not by lowering the sample rate across the board, but by cutting noise on purpose while guaranteeing the important errors stay inside the quota. This is the line I draw in code, and the steps I used to measure volume and pull it back.

The quota shrinks regardless of severity

The first thing to internalize: Sentry's quota does not distinguish an "important error" from a "throwaway log." Both count as one event.

A fatal crash that earns a one-star review and a one-off AbortError from a user reloading on a flaky train connection are identical on the quota ledger. And the annoying part is that the high-volume one is almost always the latter.

Event typeBusiness importanceTypical volume
Hard crash / unhandled exceptionHighLow
Transient network errors (AbortError, timeouts)Low to mediumVery high
Third-party SDK internal warningsLowHigh
Performance traces (from tracesSampleRate)DependsHuge if misconfigured

When I grouped events by exception type in Discover, a single AbortError — a fetch aborted when the user left the screen — accounted for roughly 61% of the month's volume. That is not a crash. It is exactly the kind of thing you catch and swallow.

So the job is not to lower the sample rate uniformly. It is to target that 61% and drop it, while letting everything else through untouched.

First, see what is eating the quota in one query

Measure before you act. Lower the sample rate without identifying the culprit and you dilute the important errors too.

In Discover (or by sorting Issues), scope to the last 7 days and order by event count. Look at three things.

SignalWhat it tells you
events per issueHow much of the quota one issue consumes. If the top three cover most of it, target those three
events / users ratioOccurrences per user. An extreme ratio suggests a loop or runaway retry
transaction volumeIf performance traces rather than errors are eating the quota, this is large

If an issue shows "hundreds per user," a retry loop is probably spinning in the background. That is a signal to stop the loop itself before you trim any noise. Network-layer design overlaps with the thinking in designing UX and error states under an unstable network.

Thank you for reading this far.

Continue Reading

What follows includes implementation code, benchmarks, and practical content we hope you'll find useful. This site runs without ads — server and development costs are supported entirely by members like you. If it's been helpful, we'd be truly grateful for your support.

WHAT YOU'LL LEARN
How to find what is eating your Sentry quota (with a real case where one AbortError was 61% of all volume)
Working code that combines beforeSend, sampleRate, ignoreErrors, and fingerprint to keep only the errors worth seeing
An allowlist guard that always lets critical errors through after sampling, plus a weekly review routine
Secure payment via Stripe · Cancel anytime

Unlock This Article

Get full access to the rest of this article. Buy once, read anytime. This site is ad-free — your support goes directly toward keeping it running.

or
Unlock all articles with Membership →
Share

Thank You for Reading

Rork Lab is ad-free, supported entirely by members like you. We publish practical guides daily with implementation code, benchmarks, and production-ready patterns. If you've found it useful, we'd love to have you on board.

  • Copy-paste ready implementation code
  • New advanced guides published daily
  • $5/mo or $10 for lifetime access
View Membership →

Related Articles

Dev Tools2026-05-07
Killing the Silent Crash in Rork-Generated Apps — A Practical Error Boundary and Unhandled Promise Setup
Rork-generated code tends to swallow errors with optional chaining and leave promise rejections uncaught. Here is the minimum production-grade setup to surface those crashes instead of letting users churn in silence.
Dev Tools2026-08-14
Find the native edits expo prebuild will erase before you upgrade to SDK 57
Expo SDK 57 makes expo prebuild clear and regenerate ios and android by default. Here is how to audit your hand edits first, move them into config plugins, and why 57.0.9 matters for Reanimated apps.
Dev Tools2026-08-10
Switching to Signed URLs Killed My Image Cache — Decoupling expo-image Keys from the URL
Signed URLs rewrite their query string on every expiry, so a URL-keyed cache never hits. Here is how to derive a stable key and drive expo-image's writeToCacheAsync and readFromCacheAsync yourself, with measured results.
📚RECOMMENDED BOOKS
Build a Large Language Model (From Scratch)
Sebastian Raschka
LLM Dev
Prompt Engineering for LLMs
Berryman & Ziegler
Prompting
AI Engineering
Chip Huyen
AI Eng
* Contains affiliate links
See all →