Fiber-модель без зависимости от деталей реализации, scheduler, классовые компоненты, миграция React 18→19 и senior code review.
Внутренности полезны как модель диагностики, пока вы не выдаёте детали конкретной версии за публичный контракт.
Вы проведёте evidence-based миграцию, объясните scheduler/identity на уровне гарантий и распознаете legacy patterns без big bang rewrite.
До начала достаточно весь маршрут: render, concurrency, server boundaries, performance и production operations. В конце должен появиться не конспект, а migration RFC React 18→19/Compiler с probes, compatibility matrix, rollout и rollback.
Публично можно опираться на чистоту render, state identity, Effect lifecycle и documented APIs. Fiber nodes, flags, lane numbers и exact scheduling order — implementation details. Probe/version pin допустим для диагностики, но product correctness не зависит от него.
Рабочая проверка. Пометьте assertions Guarantee/Observed/Assumption.
Типичная поломка. Читать private Fiber из DOM node.
Updates имеют разную срочность; React планирует render work и может прервать transition срочным input. Commit согласован и effects относятся к committed tree. Не обещайте exact milliseconds/order между независимыми roots. Browser main thread long task всё равно блокирует React.
Рабочая проверка. Trace urgent input vs transition.
Типичная поломка. Считать concurrent mode background thread.
componentDidMount/Update/WillUnmount часто объединяют разные synchronizations. При миграции разделите Effects по внешним ресурсам, derived values верните в render, event logic — handlers. Error boundaries пока обычно class/framework component. Не переводите lifecycle один к одному в один огромный Effect.
Рабочая проверка. Разделите legacy componentDidUpdate.
Типичная поломка. Effect без deps как копия всех lifecycle.
Перед upgrade изучите official guide: new JSX transform prerequisite, removed deprecated APIs, ref cleanup, ReactDOM render removal, types changes. Сначала latest 18.3 warnings, затем 19/codemods и tests. Не смешивайте framework major, React major и architecture rewrite одним deploy.
Рабочая проверка. Составьте compatibility matrix dependencies.
Типичная поломка. Обновить package.json ranges без lock/test.
Legacy string refs/findDOMNode/ReactDOM.render/propTypes defaults имеют documented migration. Replace по behavior: createRoot/hydrateRoot, ref prop/callback, DOM ref ownership, default parameters. FindDOMNode особенно ломает encapsulation и concurrent assumptions.
Рабочая проверка. Удалите findDOMNode wrapper.
Типичная поломка. querySelector global как replacement.
Сначала обновите eslint-plugin-react-hooks, исправьте violations и используйте healthcheck. Включайте directory/component gating, pin Compiler и сравнивайте test/performance. Existing manual memo оставляйте до измеренного удаления. PanicThreshold/compilation mode — rollout controls, не способ игнорировать bugs.
Рабочая проверка. Canary compiled route 10%.
Типичная поломка. Compile all и удалить memo одним commit.
Мигрируйте route/feature вместе с tests, boundaries и observability, оставляя adapters к legacy. Vertical slice даёт пользовательскую ценность и реальный signal; слой «перепишем все utilities» долго не поставляется. Strangler pattern удаляет adapter после переноса consumers.
Рабочая проверка. Выберите slice с высоким benefit/ограниченным blast radius.
Типичная поломка. Big bang branch на месяцы.
RFC содержит goal/non-goals, inventory, compatibility matrix, alternatives, staged plan, metrics, security/performance impacts, rollback и open risks. «Современнее» не аргумент. После canary сравните errors, Web Vitals, business success и support. Решение может быть не мигрировать сейчас.
Рабочая проверка. Защитите RFC перед hostile review.
Типичная поломка. Success = build прошёл.
Аудируйте legacy dashboard: classes, findDOMNode/string refs, render side effects, manual memo, effect data fetch и old root. Перенесите один vertical slice на React 19, Actions/ref prop/Compiler, оставив behavior tests и canary plan.
Критерий завершения: RFC разделяет public guarantee и implementation detail, миграция инкрементальна, metrics/rollback определены, legacy tests остаются зелёными. Сначала зафиксируйте наблюдаемое поведение тестом или измерением, затем меняйте реализацию.
Вопросы ещё не добавлены
Вопросы для этой подтемы ещё не добавлены.