Crash Reporting with GlitchTip

How PhenomApp crash and error reporting works: @sentry/react-native in JS-only mode shipping events to GlitchTip.

Crash Reporting with GlitchTip

Status: LIVE since 2026-06-04 (PhenomApp PR #92). This was previously listed on the roadmap as future work; it is now in production.

Architecture

  • SDK: @sentry/react-native ~7.2.0 (the Expo SDK 54 compatible pin). GlitchTip speaks the Sentry protocol, so the standard SDK is used unchanged.
  • Mode: JS-only. The SDK runs with enableNative: false. The native layer caused a launch crash in build 31, so native crash capture is deliberately disabled. JavaScript errors, unhandled promise rejections, and explicitly captured messages are reported; pure native crashes are not.
  • DSN: configured in app/config/config.prod.ts (SENTRY_DSN). It is a public client key and safe to ship in the binary.
  • Wiring: app/utils/crashReporting.ts initialises the SDK from Config.SENTRY_DSN.

What gets reported

  • JS exceptions and unhandled rejections
  • Camera record errors (explicit capture added in build 36; see Camera Recording Fix)
  • Android telemetry fallback events: when sensor telemetry is unavailable on Android, the app degrades gracefully and logs the condition to GlitchTip rather than crashing

Build-time settings

All iOS EAS profiles set SENTRY_DISABLE_AUTO_UPLOAD and SENTRY_ALLOW_FAILURE so source-map upload never fails a build. Source maps are currently not uploaded; stack traces are symbolicated locally when needed.

Known limitations

  • enableNative: false means native-only crashes (Swift/Kotlin layer) do not reach GlitchTip. The iOS launch-crash class of bugs must still be caught by device testing; see iOS Launch Crash Fixes.
  • Source maps are not uploaded, so release-build JS stack traces are minified in the GlitchTip UI.