React Native
If your app already calls Growth.init, error tracking is on. There is nothing to add.
Upgrade the SDK and it starts reporting — no new code, no rebuild beyond your normal one. The same init you already have turns it on.
What gets captured
- Crashes — any unhandled JS exception, via the global error handler.
- Failed awaits — unhandled promise rejections, the ones that used to vanish silently.
- Errors you log —
console.error(...)in your catch blocks, in release builds. - Anything explicit —
Growth.captureError(err, { sku, screen: "Paywall" }).
Each error carries the current screen as its route, your app version as the release, and the account id you provide via getAccountId — so an error links to that user's funnel. Fatal crashes are persisted on device and delivered on the next launch, because React Native has no keepalive to flush through.
Dev builds don't report console.error
React and LogBox route their own warnings through console.error, so hooking it in development would bury real errors in framework noise. Crashes and rejections report in both.
Already running another error reporter?
Keep it. Our handler is installed after yours and always calls it, so everything it catches today it still catches. Nothing to remove, nothing to coordinate.
Turning it off
Two ways, depending on how fast you need it: Growth.init({ ..., enableErrorCapture: false }) needs a release; flipping the errors tool off in the dashboard reaches installed apps on their next config refresh, with no App Store submission.
What isn't captured
Native crashes — a crash in Swift or Kotlin needs a native module to catch, and shipping native code would mean you rebuild to install us. Keep a native crash reporter for those. Minified stacks aren't symbolicated — release-build errors group by normalized message instead of function names; coarser, but stable across releases.