Skip to content
Skip to content
Goodspeed

Connect Sentry to your Goodspeed app

Crash reporting wired into every generated app with null-safe init, breadcrumb helpers, and sensitive-key redaction. Goodspeed wires Sentry into every app that needs it at generation time, so you start with a working integration, not a blank config and a documentation tab.

WHAT GETS WIRED IN

Built into every Sentry build

Every app Goodspeed generates with Sentry includes these wired integrations from the first build. No manual setup required.

ItemDescriptionStrength
Sentry.init runs only when EXPO_PUBLIC_SENTRY_DSN is set and gasConfig.features.analytics.crashReporting is trueSentry.init runs only when EXPO_PUBLIC_SENTRY_DSN is set and gasConfig.features.analytics.crashReporting is true01
sanitizeData redacts any property key matching a 30-pattern regex (password, token, secret, apiKey) before events are sentsanitizeData redacts any property key matching a 30-pattern regex (password, token, secret, apiKey) before events are sent02
addBreadcrumb(category, message) called across lib/posthog.ts, lib/revenuecat.ts, and services/ for readable event trailsaddBreadcrumb(category, message) called across lib/posthog.ts, lib/revenuecat.ts, and services/ for readable event trails03
setSentryUser enriches scope.user with subscription tier, app version, and device model after authsetSentryUser enriches scope.user with subscription tier, app version, and device model after auth04
captureTransaction wraps expensive operations like image upload and sync replay in Sentry performance spanscaptureTransaction wraps expensive operations like image upload and sync replay in Sentry performance spans05

Source: gas-template repository · error-monitoring

REAL GENERATED CODE

A snippet from a Sentry integration the pipeline ships

This pattern comes directly from the gas-template codebase. The studio generates Sentry integration code like this for every app that includes it, not a placeholder you have to fill in yourself.

  1. Null-safe init

    // lib/sentry.ts
    const dsn = process.env.EXPO_PUBLIC_SENTRY_DSN ?? '';
    const isEnabled =
      gasConfig.features.analytics.crashReporting && !!dsn;
    
    if (isEnabled) { Sentry.init({ dsn, tracesSampleRate: 0.2 }); }
    
    export function sanitizeData(data: Record<string, unknown>) {
      const SENSITIVE = /password|token|secret|apiKey|authorization/i;
      return Object.fromEntries(
        Object.entries(data).map(([k, v]) =>
          [k, SENSITIVE.test(k) ? '[REDACTED]' : v]
        )
      );
    }
GDaily Allergens

Today's log

Gluten
Tree nuts
Shellfish
Dairy
HomeScanLogProfile

START WITH SENTRY

Your Sentry integration, generated