Shopify возвращается с React Native на Swift и Kotlin из-за ИИ-агентов

Shopify возвращается с React Native на Swift и Kotlin из-за ИИ-агентов

В 2020 году Shopify перешла на React Native ради трёх целей: не писать одну и ту же функцию дважды для iOS и Android, дать разработчикам без мобильного опыта возможность работать над обоими приложениями и тратить меньше времени на выравнивание функциональности между платформами, а больше на реальную пользу для продукта. Ставка сработала: React Native принёс ровно эти выгоды, и Shopify прямо называет фреймворк отличным и сейчас. Ещё в январе 2025 года в инженерном блоге Shopify писали, что у React Native светлое будущее и что компания планирует и дальше в него инвестировать. Но с тех пор кодовые ИИ-модели резко улучшились, и, по словам компании, писать одну и ту же функцию отдельно на Swift для iOS и Kotlin для Android перестало стоить того, что стоило раньше. Изменилось базовое допущение, на котором строилось решение 2020 года, поэтому Shopify заново пересчитала выбор мобильного стека с нуля и решила вернуться к нативной разработке.

Shopify использует ИИ для разработки с 2021 года, ещё за год до выхода ChatGPT: сначала модели помогали реализовывать функции, искать и чинить баги и проверять код. По мере роста возможностей моделей рос и объём работы, который им доверяли, и к концу 2025 года агенты, по словам компании, перестали быть просто помощником, который пишет код быстрее: они начали ставить под сомнение сам тезис, что писать программу дважды означает делать двойную работу. Проверяя это на практике, Shopify начала прототипировать: заново собрала несколько ключевых частей своих крупнейших приложений на Swift и Kotlin с помощью ИИ и осталась довольна результатом. По описанию компании, агенты умели реализовывать функцию на Android, используя версию для iOS как образец, и наоборот, помогали разработчикам быстро разбираться и продуктивно работать вне своего основного стека и резко снижали стоимость поддержания паритета между платформами за счёт общих спецификаций, тестов и контрольных точек проверки. Необходимость писать и поддерживать код для двух платформ отдельно никуда не делась, но, как формулирует Shopify, агенты теперь берут на себя достаточно работы по реализации, переносу между платформами, тестированию и проверке, чтобы общий код перестал быть решающим фактором, каким он был в 2020 году: нативная разработка держит компанию ближе к возможностям самой платформы и её собственным инструментам, с меньшим числом фреймворков и зависимостей между кодом Shopify и системой.

Мигрировать в этот раз решили не так, как в 2020 году. Тогда Shopify выбрала путь постепенной миграции для самых больших приложений: полностью переписать их с нуля заняло бы годы, и на это время пришлось бы остановить выпуск новых функций. На этот раз победил другой подход: переписать приложения заново. У него нашлось три довода: языковые модели хорошо пишут код на Swift и Kotlin, когда перед ними есть версия на React Native как образец; чистый лист даёт свободу от старых ограничений; и прототипы показали, что переписать приложения теперь можно заметно быстрее, чем это было возможно до появления кодовых ИИ-агентов. Первым таким путём прошло приложение Shop, которое регулярно занимает верхние строчки категории «Покупки» в магазинах приложений: команда прошла путь от рабочего прототипа до полностью переписанного нативного приложения, опубликованного в магазинах приложений, за 12 недель. Флагманское приложение Shopify, самое крупное у компании (более 300 экранов, виджеты для главного экрана и экрана блокировки, отдельное приложение для Apple Watch, циферблатные виджеты (complications) на нём и поддержка Siri Shortcuts, то есть голосовых команд Siri), тоже переписывается и должно выйти позже в этом году; остальные приложения Shopify, включая Point of Sale и Inbox, последуют за ним.

Просто направить модель на кодовую базу React Native и попросить её одним запросом переписать те же функции нативно не получается: даже если заранее собрать как можно больше контекста и зафиксировать его в спецификациях и файлах задач, на выходе получается огромный объём кода, который невозможно поддерживать и нельзя выпускать в продакшен. Чтобы этого избежать, Shopify построила систему под названием Helix с более постепенным подходом: она не ждёт правильного результата с первой попытки, а выстраивает цикл, в котором несовершенная попытка просто не может продвинуться дальше, пока не станет хорошим результатом. Разработчик указывает Helix на экран приложения, система читает код на React Native и предлагает последовательность контрольных точек, небольших упорядоченных частей работы, каждую из которых можно проверить за несколько минут. Дальше сборка идёт контрольная точка за контрольной точкой: каждая обязана подтвердить своё поведение тестами, совпасть с работающим приложением при визуальной проверке, пройти проверку двух ИИ-ревьюеров, настроенных на придирчивый, состязательный разбор кода, и получить одобрение человека, только после этого её коммитят и переходят к следующей. Обратная связь с каждой проверки запоминается, поэтому по ходу миграции цикл становится всё более автономным.

Отдельным узким местом оказалось агентное управление симуляторами: они не могли надёжно собирать, тестировать и обновлять приложение, и Shopify пришлось нянчить их вручную. Компания построила инструментарий, который позволяет агентам самостоятельно воспроизводить баги, чинить их и проверять исправление, но работал он медленно и хрупко, в основном потому что состояние приложения приходится считывать через дерево доступности (accessibility tree) или скриншоты. Встроенная в React Native функция горячей перезагрузки модулей (Hot Module Reload) помогает, но не решает проблему целиком: агент вносит правку в код за секунды, а на проверку результата через симулятор уходит несколько минут, и не так важно, насколько хороша модель, если она не может быстро проверить собственную работу, особенно на мобильных платформах. Решение, к которому пришла Shopify, это архитектура, в которой бизнес-логика полностью отделена от интерфейса и способна работать сама по себе, без графической оболочки, на обычном компьютере; агентам она доступна через консольный интерфейс командной строки, который позволяет им проверять состояние приложения, перемещаться между экранами и выполнять действия за миллисекунды вместо минут, вообще не трогая интерфейс и не запуская симулятор. Когда взаимодействие с симулятором всё же нужно, тот же консольный интерфейс подключается к нему в удалённом режиме и управляет им напрямую командами, не считывая раскладку экрана или дерево доступности, что даёт быструю работу и быстрые сквозные тесты. Именно это, по словам Shopify, позволяет агентам работать автономно часами подряд.

Три библиотеки с открытым кодом, которые Shopify публиковала для React Native, ждёт разная судьба. React Native Skia, библиотеку для 2D-графики и анимации, компания продолжит спонсировать до конца 2026 года, а её автор Уильям Кандийон продолжит работу над ней и после этого: в ближайшие месяцы он форкнет репозиторий и начнёт публиковать библиотеку под новым именем, а исходный репозиторий заархивируют, когда переход завершится. FlashList, библиотеку для быстрого рендеринга больших списков с примерно 2 миллионами скачиваний в неделю и статусом стандарта де-факто в экосистеме React Native, Shopify продолжит чинить в части ошибок, критичных для совместимости, и сейчас ведёт переговоры с несколькими компаниями о долгосрочном сопровождении проекта. Restyle, у которой аудитория меньше, чем у остальных библиотек Shopify, компания архивирует: библиотека проработает до конца 2026 года, а затем поддержка прекратится, и Shopify готова помочь с передачей любому, кто захочет её форкнуть. Отдельно компания поблагодарила команду React Native в Meta за многолетнюю работу над фреймворком и студию Software Mansion, автора библиотеки анимаций Reanimated, а также напомнила, что за годы внедрения React Native над этим успели поработать сотни инженеров Shopify.

Дальше Shopify намерена перевести на Swift и Kotlin с помощью ИИ все свои мобильные приложения: Shop уже полностью нативен, приложение Shopify в процессе, остальные последуют. Компания подчёркивает, что не снижает планку ради скорости: каждое переписанное приложение обязано соответствовать нынешнему уровню производительности, стабильности, доступности и качества продукта или превосходить его, а успех будут измерять не фактом миграции, а скоростью разработки продукта, качеством приложений и тем, сколько работы агенты способны выполнять самостоятельно. Shopify обещает подробнее рассказать о Helix и о своей архитектуре, к которой ИИ-агенты могут обращаться напрямую, и приглашает на позиции мобильных и инфраструктурных инженеров, а также специалистов на стыке ИИ и разработки. В самой компании подчёркивают: React Native был правильным выбором для Shopify в 2020 году, а нативная разработка правильна сейчас, и дело не в том, что первое решение было ошибкой, а в том, что за годы изменилось базовое допущение, на котором оно строилось.

Ключевые факты

  • Shopify возвращает мобильные приложения с React Native, принятого в 2020 году, на нативные Swift и Kotlin: по словам компании, ИИ-агенты резко снизили стоимость раздельной разработки одной и той же функции для iOS и Android.
  • Приложение Shop, которое регулярно занимает верхние строчки категории «Покупки» в магазинах приложений, уже полностью переписано и опубликовано: путь от рабочего прототипа до релиза занял 12 недель.
  • Флагманское приложение Shopify, самое крупное у компании (более 300 экранов, виджеты, приложение для Apple Watch, Siri Shortcuts), переписывается сейчас и должно выйти позже в этом году, остальные приложения последуют за ним.
  • Чтобы агенты не выдавали неподдерживаемый код при переписывании, Shopify построила систему Helix: код проходит через контрольные точки, каждую из которых проверяют тесты, визуальное сравнение с работающим приложением, два состязательных ИИ-ревьюера и итоговое решение человека.
  • Открытые библиотеки Shopify для React Native ждёт разная судьба: React Native Skia передают автору Уильяму Кандийону под новым именем, FlashList (около 2 млн скачиваний в неделю) продолжат чинить в поиске нового куратора, а Restyle архивируют.

Почему это важно

Это не анонс со сцены и не прогноз аналитика, а отчёт крупной публичной компании о том, что многолетнюю архитектурную ставку пересчитали заново и сменили именно из-за возможностей ИИ-агентов в написании кода. В 2020 году Shopify перешла на React Native ровно затем, чтобы не писать одну функцию дважды, в 2026 году она возвращается к раздельной разработке для iOS и Android, потому что ту же функцию теперь во многом пишет не только человек, но и агент, и двойная работа подешевела. Показательна и сама логика Shopify: React Native остаётся отличным фреймворком, и ошибкой не была ни ставка на него в 2020 году, ни причина этой ставки, изменилось одно конкретное допущение, стоимость раздельной разработки, и, как только оно изменилось, компания пересчитала выбор с нуля, а не держалась за прежнее решение по инерции.

Кому это важно

В первую очередь мобильным командам и инженерным руководителям, которые держатся за кросс-платформенную мобильную разработку именно ради экономии на двойной работе для iOS и Android: этот довод, по опыту Shopify, слабеет по мере роста возможностей кодовых агентов, и его стоит пересчитывать заново, а не принимать один раз навсегда. Важно это и командам, которые уже строят или обслуживают продукты поверх открытых библиотек Shopify для React Native, React Native Skia, FlashList и Restyle, поскольку их дальнейшая судьба (форк под новым именем, поиск нового куратора или архивация) прямо описана в этом материале. И отдельно это важно инженерам, которые проектируют архитектуру и процессы под работу агентов, а не только людей: пример Shopify с системой Helix и консольным интерфейсом для агентов (бизнес-логика без графической оболочки, контрольные точки проверки, состязательные ИИ-ревьюеры), это готовый и проверенный на практике набор приёмов.

Как это применить

Из текста Shopify можно вынести практику, применимую куда шире, чем выбор между React Native и нативной разработкой. Первое: если решаете перейти с общего кросс-платформенного кода на раздельный под каждую платформу, не пытайтесь одним запросом переписать всё сразу по старой кодовой базе, у Shopify это явно не сработало; вместо этого стройте цикл из небольших контрольных точек, каждая из которых обязана пройти тесты, визуальное сравнение с работающим приложением и проверку минимум одним придирчивым, состязательным ИИ-ревьюером, прежде чем человек её одобрит. Второе: если хотите, чтобы агенты работали над приложением быстро и автономно, отделите бизнес-логику от интерфейса так, чтобы она могла запускаться без графической оболочки на обычном компьютере, и дайте агентам доступ к ней через консольный интерфейс, а не через управление симулятором по скриншотам и дереву доступности: у Shopify это сократило проверку изменений с нескольких минут до миллисекунд. Третье: при выборе между переписыванием с нуля и постепенной миграцией старого кода стоит заново оценить оба варианта, а не просто повторить решение прошлых лет, потому что довод, который раньше делал постепенный путь дешевле (не останавливать выпуск новых функций на годы), теперь может быть верен и для полной переписки, если агенты ускоряют её достаточно сильно.

Можно ли доверять

Материал взят из первых рук: это официальный инженерный блог Shopify, а не пересказ третьих лиц, поэтому механика решений, числа и формулировки идут от самой компании, которая всё это спроектировала и внедряла. Но это ещё и рассказ компании о собственном успехе без независимой проверки: у поста нет указанного автора (текст ведётся от первого лица без подписи), нет ни одной сравнительной цифры производительности React Native и нативных версий (формулировки о скорости, «существенно быстрее», «миллисекунды вместо минут», «часть прежнего времени», даны без единого процента или точного множителя), не названа численность команды, которая ведёт нынешнюю переписку на Swift и Kotlin (упомянутые в тексте сотни инженеров относятся к истории внедрения React Native в 2020-е годы, а не к нынешнему проекту), и не названы ни точная дата выхода приложения Shopify (только «позже в этом году»), ни компании, с которыми Shopify ведёт переговоры о будущем FlashList. Читать материал стоит как честный, но выгодный для компании отчёт о внутреннем решении, а не как независимо проверенное исследование.

Риски и подводные камни

Первый риск называет сама Shopify: если просто направить модель на старую кодовую базу и попросить её одним запросом переписать те же функции нативно, получается огромный объём кода, который невозможно поддерживать и нельзя выпускать, именно поэтому вокруг миграции пришлось построить дорогой процесс из контрольных точек, тестов, визуальных сверок и двух состязательных ИИ-ревьюеров, а не просто дать агенту задание. Второй риск, это масштаб самой ставки: компания переписывает с нуля собственное крупнейшее приложение (более 300 экранов, интеграции с Apple Watch, виджеты, Siri Shortcuts), которым пользуются миллионы продавцов и покупателей каждый день, и это многомесячный проект, у которого пока нет опубликованного результата, только план и срок «позже в этом году». Третий риск, это последствия для экосистемы React Native за пределами самой Shopify: три открытые библиотеки компании (React Native Skia, FlashList с примерно 2 миллионами скачиваний в неделю и Restyle) теряют прежнего куратора и должны либо найти новый дом, либо быть заархивированы, и это касается всех команд, которые полагаются на них в своих проектах, а не только React Native в целом. И четвёртый, более общий риск: вся логика решения держится на допущении, что кодовые агенты продолжат улучшаться и удешевлять раздельную разработку; если этот прогресс остановится или React Native со своей стороны сократит разрыв, расчёт может измениться снова, и, судя по собственной логике Shopify, компания уже показала, что готова пересчитывать его заново.

«Соблазнительно просто направить нейросеть на кодовую базу React Native и попросить её одним запросом повторить те же функции нативно, но так не получается.»

— инженерный блог Shopify

Компания Meta Platforms признана экстремистской организацией, её деятельность на территории РФ запрещена.