Flutter 개발

Crashlytics로 프로덕션 에러 추적하기

사용자가 신고하기 전에 먼저 알아채는 법

John Doe
2026년 2월 5일
6분 읽기
38

크래시 리포트가 중요한 이유

앱이 죽었는데 개발자만 모르는 상황. 생각보다 자주 일어납니다. 사용자 100명 중 1명이 크래시를 겪으면, 리뷰를 남기는 건 그 중 극소수입니다.

Crashlytics를 달아두면 크래시가 발생하는 즉시 대시보드에 올라옵니다. 스택 트레이스, 디바이스 정보, OS 버전까지 다 보이니 재현할 필요도 없겠죠.

Flutter 프로젝트에 Crashlytics 추가

yaml
# pubspec.yaml
dependencies:
  firebase_crashlytics: ^4.0.0
  firebase_core: ^3.0.0
Dart
// main.dart
void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();

  // Flutter 프레임워크 에러 캐치
  FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterFatalError;

  // 비동기 에러 캐치
  PlatformDispatcher.instance.onError = (error, stack) {
    FirebaseCrashlytics.instance.recordError(error, stack, fatal: true);
    return true;
  };

  runApp(const MyApp());
}
이 두 가지 핸들러만 등록하면 대부분의 크래시를 잡을 수 있습니다. FlutterError.onError는 위젯 빌드 중 에러를, PlatformDispatcher.onError는 그 외 비동기 에러를 처리합니다.

커스텀 키로 디버깅 정보 추가

Dart
// 사용자 식별 (익명화된 ID 권장)
FirebaseCrashlytics.instance.setUserIdentifier(user.uid);

// 커스텀 키 — 크래시 발생 시점의 상태 파악용
FirebaseCrashlytics.instance.setCustomKey('screen', 'checkout');
FirebaseCrashlytics.instance.setCustomKey('cart_items', cartItems.length);
FirebaseCrashlytics.instance.setCustomKey('is_premium', user.isPremium);
커스텀 키를 잘 설정해두면 크래시 분석이 훨씬 쉬워집니다. '결제 화면에서 장바구니 3개 이상일 때만 크래시' 같은 패턴을 대시보드에서 바로 볼 수 있습니다.

비치명적 에러 로깅

Dart
// 앱은 죽지 않지만 추적해야 하는 에러
try {
  final response = await apiClient.fetchOrders();
  // ...
} catch (e, stack) {
  // 비치명적 에러로 기록 (fatal: false)
  FirebaseCrashlytics.instance.recordError(
    e, stack,
    reason: 'Order fetch failed',
    fatal: false,
  );
  
  // 사용자에게는 에러 UI 표시
  showErrorSnackbar('주문 목록을 불러올 수 없습니다');
}
fatal: false로 기록하면 Crashlytics 대시보드에서 별도 탭으로 볼 수 있습니다. 앱이 죽지는 않지만 사용자 경험에 영향을 주는 에러를 추적하는 데 유용합니다.

디버그 빌드에서 비활성화

Dart
// 개발 중에는 Crashlytics 비활성화
if (kDebugMode) {
  await FirebaseCrashlytics.instance
      .setCrashlyticsCollectionEnabled(false);
}
디버그 빌드에서까지 크래시를 보고하면 대시보드가 노이즈로 가득 찹니다. 개발 중에는 꺼두고, 릴리스 빌드에서만 활성화하세요.

Crashlytics는 설정이 간단한 데 비해 프로덕션 안정성에 주는 효과가 큽니다. 알림을 Slack으로 연동해두면 크래시 발생 즉시 팀 채널에서 확인되죠.
#Firebase
#Crashlytics
#모니터링
#에러 추적
#Flutter