Skip to content

Вопросы на собеседовании: React-разработчик

100 реальных вопросов с образцовыми ответами и пояснениями для уровня Senior.

Смотреть пример резюме: React-разработчик

Тренировка флешкарточками

Интервальное повторение · Hunter Pass

Вопросы

reactcomponents

Я бы убрал запись из render, потому что React может выполнить эту фазу несколько раз и ни разу не сделать commit.

  • Render строит возможное Fiber-дерево, должен оставаться чистым и может быть приостановлен, перезапущен или отброшен.
  • Commit синхронно применяет DOM-изменения, обновляет refs и запускает layout effects для принятого дерева.
  • Passive effects выполняются после commit, поэтому синхронизацию с localStorage нужно делать в обработчике события или в эффекте, отражающем уже зафиксированное состояние.

Зачем это спрашивают: Интервьюер проверяет, умеет ли кандидат применить модель render и commit к прерываемому обновлению production-масштаба.

gridresponsivereact

Fiber превращает дерево компонентов в возобновляемые единицы работы, между которыми React может уступать управление до commit.

  • Каждый Fiber связан с дочерним, соседним и родительским узлом и хранит alternate для текущего и рабочего деревьев.
  • React может остановить низкоприоритетное согласование после исчерпания времени браузера, обработать клик и продолжить либо перестроить устаревшую работу.
  • Финальный commit остаётся атомарным, поэтому пользователь не видит наполовину обновлённую сетку, хотя подготовка была разделена.

Зачем это спрашивают: Сильный ответ связывает структуру данных Fiber с планированием, а не называет её ещё одним virtual DOM.

react

React назначает обновлениям lanes с приоритетами и позволяет срочному вводу обогнать работу transition.

  • Controlled input получает высокоприоритетный lane, чтобы видимое значение обновилось без ожидания графика.
  • Обновление графика может занять transition lanes, которые React объединяет, прерывает или перезапускает при появлении более свежих данных.
  • Связанные обновления, которым нужна согласованность, обрабатываются вместе, а просроченные lanes повышаются в приоритете против голодания.

Зачем это спрашивают: Интервьюер проверяет понимание lanes как групп приоритета с поведением для согласованности и голодания.

componentsconcurrency

Concurrent rendering улучшает планирование, но не ускоряет выполнение 120 мс синхронного JavaScript.

  • React может уступать управление между Fiber-узлами, но не может прервать одно долгое вычисление внутри вызова компонента.
  • Я бы профилировал вычисление, сократил входные данные, кешировал доказанно повторяемый результат или вынес подходящую CPU-работу в Web Worker.
  • Transition может оставить старый экран видимым во время подготовки нового, но общую стоимость вычисления всё равно придётся оплатить.

Зачем это спрашивают: Сильный ответ отделяет отзывчивость от пропускной способности и называет границу, внутри которой React не может прерывать работу.

Я бы обновлял input срочно, а внутрь startTransition поместил только дорогое обновление состояния результатов.

  • Текстовое поле должно сразу отражать каждый символ, а React сможет прерывать устаревшие рендеры списка.
  • isPending может пометить текущие результаты как обновляемые вместо замены полезного контента полноэкранным spinner.
  • Если сама фильтрация блокирует поток на 80 мс до setState, я бы также индексировал данные, вынес вычисление в worker или запрашивал сервер.

Зачем это спрашивают: Интервьюер оценивает, использует ли кандидат transitions для приоритета и решает ли отдельно проблему синхронного вычисления.

responsivedebounceapi

Я бы применил debounce к запросу, а deferred rendering добавил только при дорогом отображении результатов.

  • Debounce на 250 мс подавляет запуск устаревших сетевых запросов, чего useDeferredValue не делает.
  • useDeferredValue сохраняет актуальность controlled input, пока memoized-поддерево результатов рендерит старый запрос с меньшим приоритетом.
  • Я бы отменял или игнорировал устаревшие ответы по identity запроса, чтобы медленный старый запрос не заменил новые результаты.

Зачем это спрашивают: Сильный ответ разделяет контроль трафика, приоритет рендеринга и порядок ответов как три разные задачи.

react

Я бы сначала отправил оболочку профиля, а рекомендациям и истории аудита дал независимые вложенные boundaries.

  • Одна boundary на весь маршрут удерживала бы полезный контент за самой медленной зависимостью в 2 секунды.
  • Стабильные размеры skeleton для каждой секции не дадут постепенному появлению увеличить CLS.
  • Слой данных должен интегрироваться с Suspense через кеш фреймворка или ресурс, способный suspend во время render, а не через fetch в effect.

Зачем это спрашивают: Интервьюер проверяет, умеет ли кандидат превратить тайминги зависимостей в конкретное размещение Suspense boundaries.

componentsreact

Я бы поместил запрос за кеш с ключом identity ресурса, а не создавал новый Promise при каждом render компонента.

  • Оба соседних компонента должны читать один pending Promise, чтобы React повторил их после завершения общей работы.
  • Перезапуск render снова вызывает компоненты, поэтому создание запроса внутри render без кеша дублирует I/O.
  • Rejection должен попасть в Error Boundary, а fallback Suspense обрабатывает только pending-состояние.

Зачем это спрашивают: Сильный ответ понимает, что Suspense координирует ожидание, но сам не дедуплицирует запросы.

reactindexesalgorithms

Index key заставил React сохранять состояние компонента по позиции, а не по identity записи предметной области.

  • После сортировки Fiber на позиции 3 переиспользовался для другой записи, поэтому локальный черновик остался у позиции.
  • Стабильный ID строки позволяет React переместить соответствующий Fiber и сохранить состояние правильной записи.
  • Случайные keys убрали бы старый черновик только ценой remount всех строк, потери focus и отказа от переиспользования.

Зачем это спрашивают: Интервьюер проверяет, может ли кандидат проследить видимую ошибку корректности до identity в reconciliation.

reactconcurrency

Я бы подключил store через useSyncExternalStore, чтобы React читал один согласованный snapshot для render.

  • getSnapshot должен возвращать ту же ссылку, пока данные store фактически не изменились, иначе React может попасть в цикл render.
  • subscribe должен уведомлять после мутаций, а узкие immutable snapshots или selectors не дадут обновлять несвязанные виджеты.
  • getServerSnapshot должен воспроизвести начальное серверное значение при hydration, если экран рендерится на сервере.

Зачем это спрашивают: Сильный ответ связывает API внешнего store с предотвращением tearing, областью подписки и hydration.

reactpartitioningjavascript

Я бы оставил композицию товара и чтение данных в Server Components, а выбор количества и покупку изолировал за небольшой client boundary.

  • Серверное форматирование и доступ к базе останутся на сервере, а в RSC payload попадёт только результат рендеринга.
  • Client Component получит сериализуемые ID товара, цену и остаток, но не server closures или объекты базы данных.
  • Результат я бы проверил по размеру клиентских chunks и CPU на hydration на среднем мобильном устройстве.

Зачем это спрашивают: Интервьюер оценивает, умеет ли кандидат превратить карту интерактивности в измеримую границу RSC.

htmlreactcomponents

Я бы использовал RSC и SSR вместе, потому что они решают разные этапы rendering pipeline.

  • RSC определяет, какие компоненты выполняются только на сервере, и создаёт component payload, способный уменьшить клиентский JavaScript.
  • SSR превращает начальный результат Server и Client Components в HTML для первой навигации.
  • Hydration всё равно активирует Client Components, а последующие переходы могут получить и объединить новый RSC payload без полного HTML страницы.

Зачем это спрашивают: Сильный ответ отличает модель выполнения компонентов от механизма доставки начального HTML.

reactcomponentspromises

Я бы передал стабильный Promise с сервера или из кеша и прочитал его через use() под ближайшей Suspense boundary.

  • Пока Promise ожидается, use() приостанавливает компонент, и React показывает fallback boundary до завершения.
  • Создание нового Promise при каждом client render меняет identity ресурса и может постоянно suspend или вызывать предупреждения.
  • Ожидаемому rejection нужен Error Boundary или серверная модель результата, потому что use() не превращает ошибки в обычные значения.

Зачем это спрашивают: Интервьюер проверяет понимание identity Promise, suspension и обработки ошибок вокруг use().

reactcomponents

Я могу условно вызвать use() после раннего return для чтения выбранного Context, соблюдая поддерживаемые правила use().

  • В отличие от обычных Hooks, use() разрешён в условиях и циклах, что помогает выбирать context по runtime-структуре.
  • Он всё равно должен выполняться внутри компонента или Hook, а rendering компонента обязан оставаться чистым.
  • Я бы не оборачивал приостанавливающий use(Promise) в try и catch, потому что этим потоком управляют Suspense и Error Boundaries.

Зачем это спрашивают: Сильный ответ знает необычные правила размещения use(), но не считает его неограниченным JavaScript.

forms

Я бы не доверял ни одному полю и считал Server Action доступным из интернета mutation endpoint.

  • Action должна аутентифицировать пользователя по серверной сессии и авторизовать корзину, а не принимать userId из FormData.
  • Она должна валидировать количество и заново вычислять цену по авторитетным данным склада внутри границы mutation.
  • Она возвращает сериализуемый domain result и ревалидирует затронутый кеш корзины или заказа только после успешной записи.
  • Идемпотентность обязательна, если retry иначе создаст два заказа или две попытки оплаты.

Зачем это спрашивают: Интервьюер оценивает, понимает ли кандидат, что удобство фреймворка не меняет требования безопасности и корректности API.

reactforms

Я бы возвращал из 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.

react

Я бы удалял ручную memoization только там, где diagnostics компилятора, тесты поведения и profiler подтверждают её избыточность.

  • Compiler может кешировать работу компонентов и значения, когда доказывает их зависимости по Rules of React.
  • Он не останавливает renders от state или Context, не убирает действительно обязательную дорогую работу и не исправляет широкие подписки.
  • Ручная memoization может остаться там, где compiler не доказывает безопасное кеширование или интеграции нужна стабильная identity, поэтому каждый случай проверяется отдельно.
  • Я бы сравнил commit times и задержку взаимодействия в production-подобной сборке до и после очистки.

Зачем это спрашивают: Сильный ответ считает compiler оптимизатором с пределами доказательства, а не универсальной заменой дизайна производительности.

reactcomponentshooks

Я бы исправил нарушения Rules of React до попытки заставить compiler оптимизировать компонент.

  • Мутация props нарушает чистоту render и делает кешированный результат некорректным, поэтому графику нужны immutable inputs или отдельная рабочая копия.
  • Условные обычные Hooks нужно перестроить в безусловные вызовы или отдельные компоненты со стабильным control flow.
  • Compiler lint diagnostics показывают пропущенную область, а точечная директива 'use no memo' изолирует код, который пока нельзя сделать совместимым.
  • После рефакторинга я бы профилировал реальное взаимодействие с графиком, потому что успешная компиляция сама по себе не является пользовательским результатом.

Зачем это спрашивают: Интервьюер оценивает, ставит ли кандидат корректность выше оптимизации и использует ли escape hatches компилятора точечно.

consistency

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