Ответ вслух Senior Отладка и профилирование обновлено

Разбор падений в продакшене

Вопрос

Как у вас устроен сбор и разбор падений React Native-приложения в продакшене?

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Образцовый ответ: «Подключаю Sentry или Crashlytics так, чтобы ловились и JS-ошибки, и нативные падения. Для каждой сборки и каждого OTA-обновления загружаю source maps, а для нативной части символы, иначе стеки нечитаемы: у Hermes байткод, у Android обфускация.

Что должно прозвучать в ответе

  • Sentry или Crashlytics с поддержкой JS и нативных падений

  • Source maps для каждой сборки и каждого OTA-обновления, символы для нативной части

  • Контекст: версия, id обновления, устройство, хлебные крошки действий

  • Приоритизация по числу пользователей и регрессиям после релиза

  • Error boundaries в JS, понятный экран ошибки и отправка отчёта

  • Поэтапные релизы, чтобы вовремя остановить раскатку

Что могут спросить следом

  • Почему стек-трейс из продакшена нечитаем?
  • Что делать, если падение только на одном производителе Android?

Разбор

Образцовый ответ: «Подключаю Sentry или Crashlytics так, чтобы ловились и JS-ошибки, и нативные падения. Для каждой сборки и каждого OTA-обновления загружаю source maps, а для нативной части символы, иначе стеки нечитаемы: у Hermes байткод, у Android обфускация. К событиям добавляю версию, id обновления, устройство и хлебные крошки: последние экраны и действия. В JS ставлю error boundaries на уровне экранов, чтобы падение одной части показывало экран ошибки, а не белый экран. Падения сортирую по числу затронутых пользователей и по новизне после релиза. Релизы выкатываю постепенно, и если вижу всплеск, останавливаю раскатку или откатываю OTA»

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.