크래시 리포트가 중요한 이유
앱이 죽었는데 개발자만 모르는 상황. 생각보다 자주 일어납니다. 사용자 100명 중 1명이 크래시를 겪으면, 리뷰를 남기는 건 그 중 극소수입니다.
Crashlytics를 달아두면 크래시가 발생하는 즉시 대시보드에 올라옵니다. 스택 트레이스, 디바이스 정보, OS 버전까지 다 보이니 재현할 필요도 없겠죠.
Crashlytics를 달아두면 크래시가 발생하는 즉시 대시보드에 올라옵니다. 스택 트레이스, 디바이스 정보, OS 버전까지 다 보이니 재현할 필요도 없겠죠.
Flutter 프로젝트에 Crashlytics 추가
yaml
# pubspec.yaml
dependencies:
firebase_crashlytics: ^4.0.0
firebase_core: ^3.0.0Dart
// 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으로 연동해두면 크래시 발생 즉시 팀 채널에서 확인되죠.
Crashlytics는 설정이 간단한 데 비해 프로덕션 안정성에 주는 효과가 큽니다. 알림을 Slack으로 연동해두면 크래시 발생 즉시 팀 채널에서 확인되죠.