Обычно все пишут гайды про переход с Angular на React. Обратный путь почти никто не описывает, хотя он существует. Автор этой истории попал на проект, где система была слишком сложной для React, а Angular со строгой архитектурой подходил куда лучше. Так и начался переход, о котором он честно рассказывает.

Главный сдвиг в голове — перестать думать компонентами. В React каждый кусок интерфейса это функция с пропсами, вся логика и разметка лежат в одном файле. В Angular всё разложено по полочкам: отдельный HTML-шаблон, стили и TypeScript-класс, связанные декораторами. Поначалу это раздражает — даже маленькую SVG-иконку приходится разносить на три файла. Зато когда шаблон разрастается, работать с ним как с отдельным документом оказывается по-настоящему удобно.

Проект в Angular живёт по строгой иерархии: сначала библиотеки, внутри них фичи, и только внутри фич — компоненты. Вместо кастомных хуков для переиспользования логики здесь классическое наследование классов. Обновил базовый класс — изменения разошлись по всей иерархии дочерних сущностей.

Больше всего пугает RxJS. Вместо «запросил и получил» приходится подписываться на поток и реагировать на каждое изменение. Операторов там около полусотни, и чтобы читать чужой код, нужно знать хотя бы десяток-полтора. Сначала лезешь в документацию за каждым switchMap, потом появляется инстинкт — как с иностранным языком: сначала переводишь каждое слово, а потом начинаешь думать на нём.

Зато после принятия начинаешь замечать вещи, ради которых Angular стоит любить. Формы встроены в фреймворк — не нужно каждый проект выбирать между Formik и React Hook Form. CLI одной командой создаёт компонент и сам раскладывает файлы по проекту. А декоратор @HostBinding добавляет CSS-класс на хост-элемент одной строчкой вместо логики в JSX.

Самая противная часть — циклические зависимости. Сервис А тянет Сервис Б, тот ссылается обратно, и фреймворк указывает на совсем не ту причину. Можно убить полдня на поиск такого бага. Спасает Nx: команда nx dep-graph рисует карту связей проекта и подсвечивает закольцованные места красным.

Вывод у автора простой. React объективно удобнее для MVP, стартапов и лендингов — меньше формальностей, ниже порог входа. А вот для долгоживущей системы с крупной командой Angular практичнее: через год работы видно, сколько рутины он забирает на себя. Плюс понимание классов и dependency injection отлично переносится на бэкенд — тот же Spring Boot после Angular читается почти без акцента.