Код-ревью Middle Сборка и OTA-обновления обновлено
Код-ревью: работа с OTA-обновлениями
Вопрос
Код проверки обновлений и конфигурация. Найдите проблемы.
// app.json: "runtimeVersion": "1.0.0" (не менялся год, за это время обновили RN и добавили 3 нативные библиотеки)
export function useForceUpdates() {
useEffect(() => {
const id = setInterval(async () => {
const res = await Updates.checkForUpdateAsync();
if (res.isAvailable) {
await Updates.fetchUpdateAsync();
await Updates.reloadAsync();
}
}, 10_000);
}, []);
}
Коротко
OTA безопасно при правильном runtimeVersion, проверке в разумные моменты, применении без прерывания пользователя и обработке ошибок. Плюс поэтапная публикация и готовый откат.
Что должен найти ревьюер
- Ошибкастрока 1
runtimeVersionне меняется при изменении нативной части: новые обновления с обращениями к новым нативным модулям уйдут в старые сборки и уронят их. Нужна политикаfingerprintили ручная смена при каждом изменении натива. - Производительностьстрока 5Проверка обновлений каждые 10 секунд: лишний трафик и нагрузка на сервер. Достаточно проверки при старте и при возврате из фона.
- Ошибкастрока 9Перезагрузка сразу после загрузки обрывает действия пользователя посреди сценария (оплата, форма). Применять при следующем запуске или в безопасный момент с согласия.
- Ошибкастрока 6Нет обработки ошибок: исключение в асинхронном колбэке интервала станет необработанным.
- Ошибкастрока 11Интервал не очищается при размонтировании.
Разбор
OTA безопасно при правильном runtimeVersion, проверке в разумные моменты, применении без прерывания пользователя и обработке ошибок. Плюс поэтапная публикация и готовый откат.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.