diff --git a/mobile/App.tsx b/mobile/App.tsx index bc320c6..3dc79cb 100644 --- a/mobile/App.tsx +++ b/mobile/App.tsx @@ -54,8 +54,31 @@ const SENTRY_ENV = process.env.EXPO_PUBLIC_SENTRY_ENVIRONMENT || (Constants.expoConfig?.extra?.sentryEnvironment as string | undefined) || 'production'; +/** + * Którą paczkę JS realnie odpalił użytkownik. Bez tego KAŻDY crash jest nie do + * zinterpretowania: `release` bierze się z `app.json` i przy publikacji OTA się NIE + * zmienia, więc raport sprzed poprawki wygląda identycznie jak raport po niej. + * Przy GOON-1S (crash na `maintainVisibleContentPosition`) nie dało się rozstrzygnąć, + * czy poprawka nie działa, czy to ogon starych instalacji. + */ +function otaTags(): Record { + try { + return { + ota_update: Updates.isEmbeddedLaunch ? 'embedded' : Updates.updateId ?? 'unknown', + ota_created: Updates.createdAt?.toISOString() ?? 'embedded', + ota_runtime: Updates.runtimeVersion ?? 'unknown', + // Awaryjny start = paczka OTA nie dała się załadować i apka cofnęła się do tej + // wbudowanej w APK. Inaczej wygląda to jak zwykły start na starym kodzie. + ota_emergency: Updates.isEmergencyLaunch ? 'yes' : 'no', + }; + } catch { + return { ota_update: 'unavailable' }; + } +} + if (SENTRY_DSN) { Sentry.init({ + initialScope: { tags: otaTags() }, dsn: SENTRY_DSN, environment: SENTRY_ENV, // 0.1 = 10% sesji ma full performance trace. Free tier ma 10k transactions/mies,