Вопросы на собеседовании: React-разработчик
100 реальных вопросов с образцовыми ответами и пояснениями для уровня Senior.
Смотреть пример резюме: React-разработчик →Тренировка флешкарточками
Интервальное повторение · Hunter Pass
Вопросы
Я бы убрал запись из render, потому что React может выполнить эту фазу несколько раз и ни разу не сделать commit.
- Render строит возможное Fiber-дерево, должен оставаться чистым и может быть приостановлен, перезапущен или отброшен.
- Commit синхронно применяет DOM-изменения, обновляет refs и запускает layout effects для принятого дерева.
- Passive effects выполняются после commit, поэтому синхронизацию с localStorage нужно делать в обработчике события или в эффекте, отражающем уже зафиксированное состояние.
Зачем это спрашивают: Интервьюер проверяет, умеет ли кандидат применить модель render и commit к прерываемому обновлению production-масштаба.
Fiber превращает дерево компонентов в возобновляемые единицы работы, между которыми React может уступать управление до commit.
- Каждый Fiber связан с дочерним, соседним и родительским узлом и хранит alternate для текущего и рабочего деревьев.
- React может остановить низкоприоритетное согласование после исчерпания времени браузера, обработать клик и продолжить либо перестроить устаревшую работу.
- Финальный commit остаётся атомарным, поэтому пользователь не видит наполовину обновлённую сетку, хотя подготовка была разделена.
Зачем это спрашивают: Сильный ответ связывает структуру данных Fiber с планированием, а не называет её ещё одним virtual DOM.
React назначает обновлениям lanes с приоритетами и позволяет срочному вводу обогнать работу transition.
- Controlled input получает высокоприоритетный lane, чтобы видимое значение обновилось без ожидания графика.
- Обновление графика может занять transition lanes, которые React объединяет, прерывает или перезапускает при появлении более свежих данных.
- Связанные обновления, которым нужна согласованность, обрабатываются вместе, а просроченные lanes повышаются в приоритете против голодания.
Зачем это спрашивают: Интервьюер проверяет понимание lanes как групп приоритета с поведением для согласованности и голодания.
Concurrent rendering улучшает планирование, но не ускоряет выполнение 120 мс синхронного JavaScript.
- React может уступать управление между Fiber-узлами, но не может прервать одно долгое вычисление внутри вызова компонента.
- Я бы профилировал вычисление, сократил входные данные, кешировал доказанно повторяемый результат или вынес подходящую CPU-работу в Web Worker.
- Transition может оставить старый экран видимым во время подготовки нового, но общую стоимость вычисления всё равно придётся оплатить.
Зачем это спрашивают: Сильный ответ отделяет отзывчивость от пропускной способности и называет границу, внутри которой React не может прерывать работу.
Я бы обновлял input срочно, а внутрь startTransition поместил только дорогое обновление состояния результатов.
- Текстовое поле должно сразу отражать каждый символ, а React сможет прерывать устаревшие рендеры списка.
- isPending может пометить текущие результаты как обновляемые вместо замены полезного контента полноэкранным spinner.
- Если сама фильтрация блокирует поток на 80 мс до setState, я бы также индексировал данные, вынес вычисление в worker или запрашивал сервер.
Зачем это спрашивают: Интервьюер оценивает, использует ли кандидат transitions для приоритета и решает ли отдельно проблему синхронного вычисления.
Я бы применил debounce к запросу, а deferred rendering добавил только при дорогом отображении результатов.
- Debounce на 250 мс подавляет запуск устаревших сетевых запросов, чего useDeferredValue не делает.
- useDeferredValue сохраняет актуальность controlled input, пока memoized-поддерево результатов рендерит старый запрос с меньшим приоритетом.
- Я бы отменял или игнорировал устаревшие ответы по identity запроса, чтобы медленный старый запрос не заменил новые результаты.
Зачем это спрашивают: Сильный ответ разделяет контроль трафика, приоритет рендеринга и порядок ответов как три разные задачи.
Я бы сначала отправил оболочку профиля, а рекомендациям и истории аудита дал независимые вложенные boundaries.
- Одна boundary на весь маршрут удерживала бы полезный контент за самой медленной зависимостью в 2 секунды.
- Стабильные размеры skeleton для каждой секции не дадут постепенному появлению увеличить CLS.
- Слой данных должен интегрироваться с Suspense через кеш фреймворка или ресурс, способный suspend во время render, а не через fetch в effect.
Зачем это спрашивают: Интервьюер проверяет, умеет ли кандидат превратить тайминги зависимостей в конкретное размещение Suspense boundaries.
Я бы поместил запрос за кеш с ключом identity ресурса, а не создавал новый Promise при каждом render компонента.
- Оба соседних компонента должны читать один pending Promise, чтобы React повторил их после завершения общей работы.
- Перезапуск render снова вызывает компоненты, поэтому создание запроса внутри render без кеша дублирует I/O.
- Rejection должен попасть в Error Boundary, а fallback Suspense обрабатывает только pending-состояние.
Зачем это спрашивают: Сильный ответ понимает, что Suspense координирует ожидание, но сам не дедуплицирует запросы.
Index key заставил React сохранять состояние компонента по позиции, а не по identity записи предметной области.
- После сортировки Fiber на позиции 3 переиспользовался для другой записи, поэтому локальный черновик остался у позиции.
- Стабильный ID строки позволяет React переместить соответствующий Fiber и сохранить состояние правильной записи.
- Случайные keys убрали бы старый черновик только ценой remount всех строк, потери focus и отказа от переиспользования.
Зачем это спрашивают: Интервьюер проверяет, может ли кандидат проследить видимую ошибку корректности до identity в reconciliation.
Я бы подключил store через useSyncExternalStore, чтобы React читал один согласованный snapshot для render.
- getSnapshot должен возвращать ту же ссылку, пока данные store фактически не изменились, иначе React может попасть в цикл render.
- subscribe должен уведомлять после мутаций, а узкие immutable snapshots или selectors не дадут обновлять несвязанные виджеты.
- getServerSnapshot должен воспроизвести начальное серверное значение при hydration, если экран рендерится на сервере.
Зачем это спрашивают: Сильный ответ связывает API внешнего store с предотвращением tearing, областью подписки и hydration.
Я бы оставил композицию товара и чтение данных в Server Components, а выбор количества и покупку изолировал за небольшой client boundary.
- Серверное форматирование и доступ к базе останутся на сервере, а в RSC payload попадёт только результат рендеринга.
- Client Component получит сериализуемые ID товара, цену и остаток, но не server closures или объекты базы данных.
- Результат я бы проверил по размеру клиентских chunks и CPU на hydration на среднем мобильном устройстве.
Зачем это спрашивают: Интервьюер оценивает, умеет ли кандидат превратить карту интерактивности в измеримую границу RSC.
Я бы использовал RSC и SSR вместе, потому что они решают разные этапы rendering pipeline.
- RSC определяет, какие компоненты выполняются только на сервере, и создаёт component payload, способный уменьшить клиентский JavaScript.
- SSR превращает начальный результат Server и Client Components в HTML для первой навигации.
- Hydration всё равно активирует Client Components, а последующие переходы могут получить и объединить новый RSC payload без полного HTML страницы.
Зачем это спрашивают: Сильный ответ отличает модель выполнения компонентов от механизма доставки начального HTML.
Я бы передал стабильный Promise с сервера или из кеша и прочитал его через use() под ближайшей Suspense boundary.
- Пока Promise ожидается, use() приостанавливает компонент, и React показывает fallback boundary до завершения.
- Создание нового Promise при каждом client render меняет identity ресурса и может постоянно suspend или вызывать предупреждения.
- Ожидаемому rejection нужен Error Boundary или серверная модель результата, потому что use() не превращает ошибки в обычные значения.
Зачем это спрашивают: Интервьюер проверяет понимание identity Promise, suspension и обработки ошибок вокруг use().
Я могу условно вызвать use() после раннего return для чтения выбранного Context, соблюдая поддерживаемые правила use().
- В отличие от обычных Hooks, use() разрешён в условиях и циклах, что помогает выбирать context по runtime-структуре.
- Он всё равно должен выполняться внутри компонента или Hook, а rendering компонента обязан оставаться чистым.
- Я бы не оборачивал приостанавливающий use(Promise) в try и catch, потому что этим потоком управляют Suspense и Error Boundaries.
Зачем это спрашивают: Сильный ответ знает необычные правила размещения use(), но не считает его неограниченным JavaScript.
Я бы не доверял ни одному полю и считал Server Action доступным из интернета mutation endpoint.
- Action должна аутентифицировать пользователя по серверной сессии и авторизовать корзину, а не принимать userId из FormData.
- Она должна валидировать количество и заново вычислять цену по авторитетным данным склада внутри границы mutation.
- Она возвращает сериализуемый domain result и ревалидирует затронутый кеш корзины или заказа только после успешной записи.
- Идемпотентность обязательна, если retry иначе создаст два заказа или две попытки оплаты.
Зачем это спрашивают: Интервьюер оценивает, понимает ли кандидат, что удобство фреймворка не меняет требования безопасности и корректности API.
Я бы возвращал из action один типизированный результат формы, а useActionState использовал для результата, dispatch и isPending.
- Action получает previous state перед FormData, поэтому её сигнатура должна учитывать дополнительный первый аргумент.
- Ожидаемые ошибки валидации возвращают field errors и безопасные введённые значения, а неожиданные ошибки уходят в обработку ошибок маршрута.
- Pending-флаг блокирует повторную отправку, сохраняя progressive enhancement формы при использовании server action.
Зачем это спрашивают: Сильный ответ охватывает сигнатуру action, модель ожидаемых ошибок и pending-поведение, а не просто называет hook.
Я бы дал каждому optimistic-комментарию стабильный client ID и согласовывал его с собственным ответом сервера.
- Optimistic update function остаётся чистой и добавляет pending-запись без мутации авторитетного списка.
- Успешный ответ заменяет соответствующий client ID серверной записью независимо от порядка завершения.
- Отклонённый ответ удаляет или помечает только эту запись и предлагает retry, а базовое состояние остаётся авторитетным серверным.
Зачем это спрашивают: Интервьюер проверяет, умеет ли кандидат обрабатывать пересекающиеся optimistic mutations без отката всего snapshot.
Я бы удалял ручную memoization только там, где diagnostics компилятора, тесты поведения и profiler подтверждают её избыточность.
- Compiler может кешировать работу компонентов и значения, когда доказывает их зависимости по Rules of React.
- Он не останавливает renders от state или Context, не убирает действительно обязательную дорогую работу и не исправляет широкие подписки.
- Ручная memoization может остаться там, где compiler не доказывает безопасное кеширование или интеграции нужна стабильная identity, поэтому каждый случай проверяется отдельно.
- Я бы сравнил commit times и задержку взаимодействия в production-подобной сборке до и после очистки.
Зачем это спрашивают: Сильный ответ считает compiler оптимизатором с пределами доказательства, а не универсальной заменой дизайна производительности.
Я бы исправил нарушения Rules of React до попытки заставить compiler оптимизировать компонент.
- Мутация props нарушает чистоту render и делает кешированный результат некорректным, поэтому графику нужны immutable inputs или отдельная рабочая копия.
- Условные обычные Hooks нужно перестроить в безусловные вызовы или отдельные компоненты со стабильным control flow.
- Compiler lint diagnostics показывают пропущенную область, а точечная директива 'use no memo' изолирует код, который пока нельзя сделать совместимым.
- После рефакторинга я бы профилировал реальное взаимодействие с графиком, потому что успешная компиляция сама по себе не является пользовательским результатом.
Зачем это спрашивают: Интервьюер оценивает, ставит ли кандидат корректность выше оптимизации и использует ли escape hatches компилятора точечно.
Mutation нужен явный контракт cache invalidation и client reconciliation для каждого слоя, способного удерживать товар.
- После записи action должна инвалидировать tag или path товара, а не сбрасывать несвязанные данные каталога.
- Результат action может сразу обновить текущий optimistic или action state, пока revalidation возвращает авторитетный server UI.
- Prefetched router data может потребовать refresh или отдельный путь invalidation фреймворка, чтобы навигация не восстановила старый payload.
- Я бы проверил две вкладки и back navigation, потому что корректная запись в базе не гарантирует свежий интерфейс.
Зачем это спрашивают: Сильный ответ отделяет успех mutation от свежести RSC, data cache и client router.
Закрытые вопросы
- 21
Дашборд хранит фильтры, видимость modal, данные аккаунта и результаты запросов в одном глобальном объекте; классифицируйте их до выбора библиотек.
cssqueries - 22
Двенадцать виджетов дашборда читают пять REST endpoints со свежестью 30 секунд; поместить ответы в Context или TanStack Query?
restendpointsqueries - 23
Кеш TanStack Query возвращает счёт не того клиента после переключения аккаунта; спроектируйте query key и границу invalidation.
queriesdesigncaching - 24
На одном экране пересекаются два optimistic-изменения заголовка задачи, а одна mutation падает; как реализовать rollback в TanStack Query?
querieslockingrollback - 25
Каталог с 2 миллионами товаров должен сохранять фильтры, сортировку и cursor pagination после reload и в общей ссылке; где хранить это состояние?
pagination - 26
Context provider отдаёт объект из 40 полей, и ввод в одно поле рендерит 3 000 consumers; как вы переработаете архитектуру?
- 27
Wizard занимает шесть routes и должен восстанавливать draft после refresh, но у каждого шага сложное временное состояние валидации; как разделить владение?
ownershipvalidation - 28
RSC route загружает аккаунт на сервере, а затем Client Component сразу повторно загружает его в global store; что вы измените?
components - 29
Client store хранит 100 000 сущностей, а каждое обновление перестраивает все видимые проекции; как организовать данные и подписки?
- 30
Live-дашборд получает 1 000 socket messages в секунду, но пользователю нужны только десять визуальных обновлений в секунду; как данные должны попадать в React?
react - 31
RUM показывает LCP 2,7 с, INP 180 мс и CLS 0,08 на 75-м перцентиле; какая Core Web Vital не проходит good threshold?
percentiles - 32
На mobile-странице товара LCP равен 4,1 с на p75, а LCP-элементом стало hero-изображение размером 1,8 МБ, которое обнаруживается только после client rendering; что менять первым?
- 33
У поисковых взаимодействий INP 420 мс на p75, из них 260 мс занимает одна JavaScript task и 90 мс layout; как опустить показатель ниже 200 мс?
javascript - 34
Рекламный слот загружается через 1 секунду и сдвигает статью, создавая CLS 0,24 на p75; какой дизайн удержит CLS в пределах 0,1?
design - 35
Команда добавила useMemo в 600 компонентов и заявляет об ускорении, потому что число renders упало на 20 процентов; какие доказательства вы потребуете?
componentsperformance - 36
React Profiler показывает render 2 500 строк за commit длительностью 70 мс при изменении одного checkbox; в какой последовательности искать причину?
react - 37
Grid на 100 000 строк должен фильтроваться за 100 мс и прокручиваться около 60 fps на четырёхъядерном mobile-устройстве; спроектируйте performance path.
griddesignperformance - 38
Initial JavaScript маршрута вырос с 220 КБ до 410 КБ gzip после добавления chart library, хотя charts открывают только 8 процентов пользователей; что вы выпустите?
javascript - 39
SSR возвращает HTML за 300 мс, но страница блокирует main thread на 1,5 секунды во время hydration; какие React-изменения проверить?
htmlreacthydration - 40
Real-time chart рендерится с частотой 60 Гц и тратит 45 мс на кадр; как выбрать между React, canvas и aggregation?
reactaggregation - 41
Выберите rendering modes для продукта с 50 marketing pages, 200 000 страниц каталога и персонализированным analytics app.
discovery - 42
Персонализированная главная новостей обслуживает 1 миллион запросов в день с бюджетом TTFB 500 мс; как не заставить SSR обращаться к origin services на каждый запрос?
discoveryssr - 43
У сайта документации 200 000 страниц, а полный SSG build занимает 95 минут; как сохранить static delivery без такой задержки релиза?
documentation - 44
Каталог товаров использует ISR с окном 10 минут, но цены должны обновляться не позднее 30 секунд; переработайте freshness для 5 миллионов товаров.
- 45
Дашборд зависит от API с задержками 150 мс, 700 мс и 3 секунды; спроектируйте streaming SSR, чтобы страница стала полезной за 1 секунду.
designstreamingssr - 46
SSR рендерит локальное время, и 12 процентов сессий получают hydration mismatch между регионами; какой детерминированный дизайн вы используете?
hydrationssrdesign - 47
Спроектируйте frontend B2B-дашборда для 100 000 daily users, 12 backend services, p75 LCP ниже 2,5 с и виджетов по ролям.
design - 48
Спроектируйте search results для marketplace из 2 миллионов товаров с 20 фильтрами, API p95 300 мс, SEO landing pages и мгновенной back navigation.
designapi - 49
Спроектируйте глобальную event page для 10 миллионов посещений за час, обновлений каждые 15 секунд и требования читать страницу при отказе JavaScript.
designjavascript - 50
Спроектируйте collaborative editor на React для документов до 50 000 блоков, 100 одновременных редакторов и цели local input 100 мс.
reactdesignconcurrency - 51
После rollout под feature flag 7 процентов пользователей отправляют предыдущее значение фильтра, хотя input показывает актуальное; как диагностировать и исправить устаревшее замыкание?
closures - 52
Autosave теряет два последних символа в 6 процентах документов, когда двухсекундный timer срабатывает во время быстрого ввода; как найти и исправить устаревшее состояние?
- 53
После релиза страница настроек запускает 1200 API-запросов в минуту и загружает CPU на 90 процентов, а React Profiler показывает запуск эффекта на каждом рендере; как остановить цикл?
reactapi - 54
В 14 процентах сессий autocomplete показывает результаты предыдущего запроса, когда ответ за 900 мс приходит после нового ответа за 120 мс; как исправить cleanup эффекта?
queriessessions - 55
После 5 переходов между маршрутами 1 вкладка дашборда держит 4 WebSocket-соединения, а каждый alert появляется 4 раза; как найти и исправить дублирование?
alertingwebsockets - 56
В 4 процентах checkout-сессий показывается shipping quote для предыдущего postal code, потому что Redux listener и TanStack Query одновременно загружают и записывают quote; как убрать рассинхрон?
statequeries - 57
Два изменения количества, 2 и затем 3, завершаются в обратном порядке и оставляют 2 в 1,5 процента корзин; как сделать optimistic update устойчивым к гонке?
locking - 58
В 9 процентах случаев удалённые проекты снова появляются после Back navigation на срок до 11 минут, потому что persisted query cache восстанавливает их; как закрыть пробел invalidation?
queriescaching - 59
Пять процентов live-дашбордов замирают на первом sample после запуска 30-секундного interval, хотя socket продолжает получать данные; как доказать и исправить устаревшее замыкание?
closures - 60
Восемь процентов отфильтрованных списков содержат строки из двух фильтров после трёх изменений фильтра за 400 мс; как предотвратить гонку запросов?
- 61
Heap SPA растёт со 180 МБ до 920 МБ после 40 переходов дашборд-detail, и вкладка падает; как найти и исправить утечку через DevTools?
data-structures - 62
После 20 открытий и закрытий modal число document click listeners растёт с 1 до 41, а heap увеличивается на 150 МБ; как это исправить?
data-structures - 63
Virtualized grid оставляет 600 detached row nodes и 70 МБ после 30 изменений размера; как диагностировать утечку observer?
gridvirtualization - 64
После рефакторинга state store checkout-взаимодействие выросло с 6 до 28 renders, а INP ухудшился со 160 до 430 мс; как профилировать и исправить проблему?
refactoring - 65
После релиза polling добавляет Date.now() в key корня дашборда, поэтому 4000 descendants перемонтируются каждые 5 секунд, а следующий клик блокируется на 320 мс; как это доказать и исправить?
- 66
Checkout-форма на 80 полей валидирует всю schema 36 раз на каждый символ и достигает INP 510 мс; как профилировать и сократить работу?
formsschemavalidation - 67
Разрешённый analytics script добавляет long task на 280 мс и ухудшает p75 INP на 190 мс в 35 процентах сессий; как изолировать стоимость?
sessions - 68
Admin SPA растёт с 75 МБ до 650 МБ после посещения 200 аккаунтов, потому что query data не покидает память; как ограничить кеш?
cachingmemoryqueries - 69
После изменения key на timestamp последнего sample график перемонтируется 60 раз в секунду, каждый mount занимает 38 мс, а прокрутка падает до 22 fps; как это исправить?
- 70
После 12 посещений маршрута страница сохраняет 12 polling timers, а фоновая загрузка CPU достигает 45 процентов; как проверить и исправить cleanup?
- 71
В 8 процентах сессий Next.js возникает hydration mismatch, потому что сервер форматирует цены как en-US, а браузер начинает с ru-RU; как сделать rendering детерминированным?
hydrationnextjssessions - 72
Hydration падает в 1,6 процента сессий, но не воспроизводится в чистом профиле, а затронутый DOM содержит nodes от двух browser extensions; как это обработать?
domhydrationsessions - 73
В 13 процентах SSR-форм теряется связь label с полем, потому что сервер и клиент генерируют разные random IDs для 24 полей; как исправить mismatch?
ssr - 74
Suspense-панель заказов получает 503 в 4 процентах посещений и оставляет пользователей на spinner без retry; как спроектировать failure и reset?
designresiliencereact - 75
У дашборда три Suspense-ресурса с задержками 120 мс, 700 мс и 4 секунды, а четырёхсекундный сервис возвращает 500 для 9 процентов пользователей; как сохранить полезность страницы?
react - 76
Некорректная запись ломает results component у 2 процентов пользователей и превращает весь маршрут в пустой экран; как восстановиться без сокрытия дефекта?
componentsdefects - 77
Авторизованный Suspense query получает 401 в 6 процентах сессий и повторяется трижды, задерживая восстановление login на 5 секунд; что изменить?
reactqueriessessions - 78
В 7 процентах сессий streamed report остаётся на Suspense fallback дольше 5 секунд из-за зависшего источника данных; как ограничить ожидание?
reactsessions - 79
Семнадцать процентов пользователей видят полный skeleton на 600 мс при каждом refetch заполненного поиска; как изменить Suspense experience?
reactuxqueries - 80
В 10 процентах SSR-сессий возникает mismatch, потому что компонент рендерит desktop-ветку на сервере и mobile-ветку из window.innerWidth на клиенте; как это исправить?
componentsssrsessions - 81
Initial JavaScript вырос с 260 КБ до 610 КБ, а mobile LCP ухудшился на 1,7 секунды после добавления editor, которым пользуются 12 процентов посетителей; что выпускать?
javascript - 82
Релиз монорепозитория добавляет 190 КБ и вызывает invalid hook call в 2 процентах сессий, потому что в один маршрут попали две версии React; как это исправить?
reacthooksmonorepo - 83
После deploy 3,2 процента вернувшихся пользователей получают ChunkLoadError и пустой экран, потому что cached HTML ссылается на удалённые assets; как восстановиться и предотвратить повтор?
htmldeploymentcaching - 84
Deploy remote Module Federation ломает host у 6 процентов трафика из-за undefined shared API, хотя тесты обоих репозиториев проходят; что изменить?
federationapideployment - 85
Support SDK добавляет 240 КБ на каждый маршрут и ухудшает LCP на 1,2 секунды, хотя chat открывают 4 процента пользователей; как сократить стоимость?
- 86
Обновление date library добавляет 90 КБ и замедляет LCP на 0,6 секунды, потому что для продукта с двумя locale собираются 80 locale; как исправить build?
- 87
Миграция 20 маршрутов с Pages Router на App Router повышает route errors с 0,3 до 2 процентов после первых пяти маршрутов; как продолжить с возможностью rollback?
migrationsrollback - 88
Обновление React 19 в 14 пакетах создаёт три runtime failures в staging при успешном TypeScript; как решить, выпускать или откатывать?
rollbackupgradesreact - 89
Импорт одной CSS component library добавляет 300 КБ и ухудшает route LCP на 0,8 секунды, потому что её barrel загружает все widgets; что изменить?
csscomponents - 90
После deploy 65 процентов frontend errors видны только как minified stack frames, а triage пустого экрана занимает 90 минут; как исправить release pipeline?
deploymentci-cd - 91
Search test падает 7 раз на 100 запусков CI, потому что ждёт debounced request через sleep 500 мс; как убрать flaky behavior?
debounce - 92
Рефакторинг modal создаёт шесть critical axe violations и запирает keyboard users в 18 процентах checkout-сессий; как исправить и предотвратить регрессию?
refactoringsessions - 93
Junior-разработчик выпускает 2 stale-effect bugs в 3 pull requests несмотря на повторные комментарии; какое конкретное менторское вмешательство провести за следующую неделю?
mentoringcode-review - 94
Pull request на 600 строк запускает 900 preview API calls в минуту из одного нового эффекта; как провести review, не переписывая feature самостоятельно?
code-reviewapi - 95
Apollo cache key не включает tenantId и показывает имя клиента предыдущего tenant в 0,4 процента переключений аккаунта; как сдержать и предотвратить инцидент?
incidentscaching - 96
Миграция одного Redux slice на 12 экранах создаёт расхождение state в 4 процентах сессий после переноса шести экранов; как безопасно завершить или откатить её?
statesessionsrollback - 97
Некорректное значение localStorage вызывает пустой экран у 2,8 процента вернувшихся пользователей после релиза схемы; как вернуть доступ и предотвратить повтор?
schema - 98
Review удаляет видимый focus style у 14 shared buttons ради соответствия макету, а preview axe не показывает ошибок; какое решение принять до merge?
mocking - 99
Пять инженеров зависят от одного senior при каждой INP-регрессии, а три последних инцидента заняли по 4 часа; какое конкретное менторское изменение внести за месяц?
mentoringincidents - 100
OTA-релиз React Native вызывает startup crash у 4 процентов пользователей, потому что JavaScript ожидает native module, которого нет в 30 процентах установленных binaries; как восстановиться и предотвратить повтор?
reactjavascript