Миграции фреймворков проваливаются, когда старые паттерны возвращаются. diffray применяет новые паттерны на каждом PR, держа миграцию на курсе.
Дело не в миграции. Дело в поддержании.
Разработчики продолжают использовать старые паттерны по инерции. Новый код использует старые соглашения.
Половина мигрирована, половина legacy. Нет чёткой границы. Новые фичи используют случайный микс паттернов.
Мигрированные области загрязняются старыми паттернами. Прогресс откатывается без постоянной бдительности.
Не все одинаково знают новый фреймворк. Качество зависит от того, кто писал код.
AI гарантирует, что новые паттерны остаются новыми
Определите паттерны нового фреймворка как правила. AI применяет их на каждом PR, автоматически ловя старые привычки.
"Используйте server components для получения данных. Client components только для интерактивности."
Определите, какие директории мигрированы. Старые паттерны разрешены в legacy-зонах, заблокированы в новых.
"Этот файл в /app (мигрировано). Используйте паттерны App Router, не Pages Router."
AI объясняет, как конвертировать старые паттерны в новые. Каждое ревью — это обучающий момент.
"Замените getServerSideProps на async Server Component. См. руководство: /docs/migration.md"
Видьте, какая часть кодовой базы мигрирована. Празднуйте прогресс, выявляйте отстающих.
"73% компонентов мигрировано на hooks. 12 class components осталось в /legacy."
Pages Router → App Router
Middleware → Plugins
Endpoints → Resolvers
lifecycle → useEffect
require → import
Options API → Composition API