Shopify отказалась от React Native для своего мобильного приложения и переходит на собственную архитектуру Reflex, построенную вокруг Swift и Kotlin. Она отделяет логику от интерфейса, чтобы AI‑агентам было проще работать с кодом, и проверять поведение без запуска эмулятора.

Компания полностью перешла на React Native в 2020 году ради экономии времени и бюджета. Так инженеры могли писать функции сразу для Android и iOS. Теперь, по оценкам Shopify, AI‑агенты значительно удешевили разработку нативных приложений, поэтому общий код больше не даёт прежних преимуществ.
Архитектура Reflex построена на MVVM. Логику, навигацию и работу с данными вынесли в модуль Core. Он не зависит от интерфейса и API мобильной ОС, поэтому работает без физического смартфона: версия для iOS — на macOS, для Android — в JVM. Отдельный модуль Mobile отвечает за интерфейс на SwiftUI и Jetpack Compose.

За каждый экран отвечает объект ViewModel, который хранит текущее состояние и принимает команды. Например, карточка товара хранит остаток на складе и обрабатывает команды изменения количества. Все изменения состояний при этом проходят через одну команду update.
AI‑агенты обращаются к тем же объектам ViewModel через CLI. С помощью JSON они получают названия экранов, состояния и доступные действия. Благодаря этому у агента есть возможность изменять параметры и проверять результаты без нажатия кнопок на экране и запуска эмулятора.

Для Android и iOS пишут разный код, но тестируют его по общим сценариям. Если тест проходит только на одной платформе, то изменения не включают в проект. В компании отмечают, что благодаря такой архитектуре более 1700 тестов проходят примерно за четыре минуты на обеих платформах.
С помощью новой архитектуры команда из 30 инженеров Shopify за 12 недель переписала основные приложения с более чем 300 экранами. Бо́льшую часть кода сгенерировали агенты. Размер Android‑приложения уменьшился с 80,4 до 47,6 МБ, а медианное время запуска сократилось с 1,71 до 0,87 секунды. Медианное время запуска iOS‑приложения уменьшилось с 0,70 до 0,60 секунды.
В начале ноября команда Discord сообщила о том, что отказывается от Electron и React Native в пользу Rust. Этот шаг позволит уменьшить потребление ОЗУ во время работы клиента.
Источник: habr.com