Proje: Okul B2B App · Hub: Okul B2B App — Conventions

Crash Reporting ve Loglama

CrashlyticsService

Firebase Crashlytics ile otomatik crash raporlama:

// Login sonrası kullanıcı context'i set et
await CrashlyticsService.initialize();
await CrashlyticsService.setUserId(user.id.toString());
await CrashlyticsService.setAttribute('company_id', user.customer_id.toString());
await CrashlyticsService.setAttribute('user_role', user.role);
  • Sadece ENABLE_CRASH_REPORTING=true ve non-dev build’larda aktif (!__DEV__)
  • Expo Go’da graceful fallback (try/catch ile require)
  • setCrashlyticsCollectionEnabled(false) development’ta crash raporlamayı devre dışı bırakır

Logger

utils/Logger.ts singleton:

import { logger } from '@/utils/Logger';
 
logger.error('Error', error);      // LogLevel.ERROR
logger.warn('Warning', data);      // LogLevel.WARN
logger.info('Info', data);         // LogLevel.INFO
logger.logDebug('Debug', data);    // LogLevel.DEBUG (alias)
logger.logWarning('Warn', data);   // LogLevel.WARN (alias)
logger.logError('Error', error);   // LogLevel.ERROR (alias)

Log level konfigürasyonu: EXPO_PUBLIC_LOG_LEVEL=error|warn|info|debug

  • Production: error (sadece gerçek hatalar)
  • Development: debug (hepsi)

Test Yapısı

__tests__/
  SimpleErrorHandler.test.ts
  templates/
services/__tests__/
  MediaService.test.ts

Jest + @testing-library/react-native. jest-expo ~54.0.13.