Кроссплатформенная разработка
Нативная разработка снова стала будущим мобильных приложений в Shopify
ИИ-агенты дважды изменили стоимость разработки мобильных приложений. Вот почему Shopify возвращается от React Native к Swift и Kotlin.
Мы решили пойти ва-банк с React Native ещё в 2020 году, и эта ставка оказалась чрезвычайно успешной. Мы сэкономили огромное количество времени, создавая функции только один раз, дали разработчикам без опыта мобильной разработки возможность вносить вклад в наши приложения и избавились от необходимости постоянно догонять функциональный паритет между платформами.
В январе 2025 года я писал, что будущее React Native выглядит многообещающе и Shopify планирует продолжать инвестировать в него. Исходя из того, что мы знали тогда, это было правдой. React Native хорошо работал для нас и по-прежнему остаётся отличным фреймворком. Но с тех пор модели для написания кода стали значительно лучше, и для наших приложений и нашей команды реализация одной и той же функции на Swift и Kotlin больше не требует тех затрат, что раньше.
Мы не держимся за решение только потому, что когда-то оно было успешным. Когда меняется одна из ключевых предпосылок, мы готовы вернуться назад и спросить себя, остаётся ли это решение правильным. LLM изменили одну из основных предпосылок, лежавших в основе нашего решения 2020 года, поэтому мы заново оценили наш мобильный стек, начиная с фундаментальных принципов.
То, что мы обнаружили, привело нас обратно к нативной разработке.
Почему мы возвращаемся к нативной разработке
В 2020 году мы решили перейти с нативной разработки на React Native по трём причинам:
- Перестать создавать одни и те же функции дважды
- Позволить разработчикам работать по всему стеку
- Тратить меньше времени на поддержание функционального паритета и больше времени на выпуск полезных возможностей
React Native стабильно давал нам эти преимущества. Мы тратили значительное количество времени и ресурсов на оптимизацию производительности, улучшение ключевых базовых компонентов React Native, отслеживание обновлений фреймворка и внешних зависимостей, но это были приемлемые компромиссы. Преимущества использования React Native значительно перевешивали вложения, которые нам приходилось делать в этих областях.
Shopify начал использовать LLM для разработки программного обеспечения еще в 2021 году — за год до появления ChatGPT! Изначально мы применяли их для реализации функций, исследования и исправления ошибок и проверки кода. По мере совершенствования моделей росла и сложность задач, которые мы были готовы им доверять. К концу 2025 года они уже не просто помогали нам писать код быстрее. Они заставили нас задуматься: действительно ли создание одного и того же программного обеспечения дважды всё ещё означает двойной объём работы?
Мы решили заново оценить наш мобильный технологический стек и начали создавать прототипы, чтобы проверить, остаётся ли наш выбор технологий оправданным. Мы заново реализовали несколько ключевых частей наших крупнейших приложений на Swift и Kotlin с помощью LLM и были удивлены тем, насколько хорошо это сработало. Агенты:
- Могли реализовать функцию на Android, используя iOS-версию как референс, и наоборот
- Помогали разработчикам быстрее осваиваться и эффективно работать за пределами своего основного стека
- Значительно снижали стоимость поддержания паритета между платформами благодаря общим спецификациям, тестам и контрольным точкам проверки
Нативная разработка по-прежнему означает создание и поддержку программного обеспечения для двух платформ — эти затраты никуда не исчезли. Изменилось то, что теперь агенты могут выполнять достаточно работы по реализации, переносу, тестированию и проверке, чтобы этот фактор больше не был решающим, как в 2020 году.
Приложения на React Native могут быть быстрыми. Наши — быстрые. Мы вносим это изменение потому, что агенты уменьшили преимущества общей реализации, тогда как преимущества разработки непосредственно для каждой платформы сохранились. Нативная разработка позволяет нам оставаться ближе к возможностям платформ и официальным инструментам, с меньшим количеством слоёв фреймворков и зависимостей между нашим кодом и самой платформой.
Будущее наших open-source библиотек React Native
Прежде чем переходить к тому, как именно мы мигрируем, мы хотим убедиться, что этот переход будет выполнен аккуратно. С самого начала мы хотели вносить вклад в React Native и помогать делать его лучше. Мы выпустили open-source библиотеки, которые стали лучшими решениями в своих категориях. Мы благодарны сообществу за невероятный отклик и хотим обеспечить плавный переход без сюрпризов.
React Native Skia
Shopify продолжит спонсировать этот проект до конца 2026 года, а Вильям Кандиллон продолжит работать над ним и после этого. В ближайшие месяцы он создаст форк репозитория и начнёт публиковать библиотеку под новым названием. Исходный репозиторий будет архивирован после завершения перехода. Мы будем публиковать обновления по ходу процесса, чтобы у всех было достаточно времени на миграцию. Если ваше приложение зависит от этой библиотеки, пожалуйста, подумайте о её спонсировании.
FlashList
Эта библиотека получает около 2 млн загрузок в неделю и стала стандартным способом рендеринга высокопроизводительных списков в React Native. Учитывая её важность для экосистемы, Shopify продолжит исправлять критические проблемы, нарушающие совместимость. Сейчас мы ведём переговоры с несколькими компаниями о долгосрочном сопровождении FlashList. Если вам это интересно, свяжитесь с разработчиком здесь.
Restyle
У Restyle меньше пользователей, чем у наших других библиотек, поэтому мы архивируем этот репозиторий. Мы будем поддерживать его работоспособность до конца 2026 года, после чего прекратим сопровождение. Любой желающий может создать форк и продолжить развитие, а если какая-то команда захочет взять проект на себя, мы поможем с передачей.
Как мы мигрируем
У Shopify есть несколько крупных приложений (Shopify, Shop, Point of Sale, Inbox). Миллионы продавцов и покупателей по всему миру ежедневно зависят от них, чтобы зарабатывать на жизнь и покупать товары любимых брендов.
Мы обсуждали два подхода: постепенно мигрировать на native (brownfield) или полностью переписать приложения с нуля (greenfield). Раньше, когда мы переходили на React Native, для некоторых крупнейших приложений мы выбирали brownfield-подход, потому что полная перепись заняла бы годы, а нам пришлось бы остановить выпуск новых функций на время миграции.
Однако на этот раз greenfield оказался явным победителем по следующим причинам:
- LLM хорошо справляются с созданием функций на Swift и Kotlin, используя React Native-версию как референс
- Это даёт нам чистый лист, позволяя перестроить всё наилучшим образом без прежних ограничений
- Наши прототипы показали, что теперь мы можем переписывать такие приложения значительно быстрее, чем это было возможно до появления coding agents
Приложение Shop, которое регулярно оказывается в числе лидеров категории Shopping в магазинах приложений, стало первым кандидатом на миграцию. С помощью ИИ команда смогла пройти путь от proof of concept до полностью переписанного нативного приложения, опубликованного в магазинах приложений, всего за 12 недель. Мы подробно рассказали об этой миграции здесь.
Миграция приложения Shopify — нашего крупнейшего приложения с более чем 300 экранами, виджетами для домашнего экрана и экрана блокировки, приложением Apple Watch, complications, Siri Shortcuts и многим другим — тоже уже идёт и должна завершиться релизом позже в этом году. Остальные наши приложения будут мигрированы вскоре после этого.
Как мы предотвращаем генерацию низкокачественного кода
Очень заманчиво просто направить LLM на кодовую базу React Native и попытаться одним запросом переписать те же функции на нативный код, но это не работает. Даже если сначала попросить модель собрать как можно больше информации, зафиксировать её в спецификациях и task-файлах, а затем приступить к реализации, в итоге получается огромное количество неподдерживаемого кода, который невозможно выпустить.
Чтобы решить эту проблему, мы создали систему под названием Helix, использующую более постепенный подход. Она не ожидает, что первый результат окажется правильным, и строит цикл таким образом, что несовершенный вариант просто не может пройти дальше, пока не будет доведён до хорошего состояния.
Разработчик указывает Helix на конкретный экран. Helix читает React Native-код и предлагает последовательность чекпоинтов — небольших упорядоченных частей работы, каждую из которых можно проверить за несколько минут. Затем, чекпоинт за чекпоинтом, система реализует их: каждый должен подтвердить своё поведение тестами, визуально совпасть с работающим приложением при проверке, выдержать проверку двух критически настроенных рецензентов кода и получить одобрение человека перед коммитом и переходом к следующему этапу. Отзывы каждой проверки запоминаются, поэтому по мере миграции цикл становится всё более автономным.

Helix перестраивает экран мобильного приложения Shopify с использованием Swift и Kotlin
Этот подход работает чрезвычайно хорошо и позволяет нам переписывать приложения за малую долю времени, которое потребовалось бы раньше.
Обеспечение быстрых циклов обратной связи
Агентное управление симуляторами стало узким местом. Нам постоянно приходилось контролировать их вручную, потому что они не могли достаточно надёжно собирать приложение, тестировать его и выполнять итерации. Мы создали инструменты, позволяющие агентам самостоятельно воспроизводить ошибки, исправлять их и проверять исправления, но это было медленно и ненадёжно. Hot Module Reload в React Native немного помогает, но не решает проблему, потому что управление симулятором остаётся медленным. Главная причина — зависимость от accessibility tree или скриншотов для определения состояния приложения, выполнения действий и проверки результатов. Агенты могут изменить код за секунды, но на тестирование результата уходит несколько минут. Из-за этого итерации становятся крайне медленными и ручными. Неважно, насколько хороша модель, если она не может быстро протестировать свою работу — а на мобильных платформах это особенно сложно.
Мы решаем эту проблему, проектируя архитектуру приложения так, чтобы она подходила и людям, и агентам. Основной принцип заключается в том, что бизнес-логика должна быть полностью отделена от UI и иметь возможность работать headless на десктопах. Затем мы предоставляем её агентам через CLI, который позволяет выполнять итерации за миллисекунды вместо минут, вообще не используя симуляторы.
Навигация по приложению и выполнение действий с помощью CLI
CLI позволяет агентам проверять состояние приложения, перемещаться между различными разделами и выполнять действия без необходимости взаимодействовать с UI. Это обеспечивает чрезвычайно быстрые циклы обратной связи и позволяет агентам автономно работать часами.
Когда взаимодействие с симулятором всё же необходимо, CLI может подключаться к нему в удалённом режиме и управлять UI командами без необходимости анализировать макет или accessibility tree. Это обеспечивает очень высокую производительность и быстрые E2E-тесты.
Это происходит в реальном времени — видео не ускорено
Что дальше
Мы собираемся мигрировать все наши мобильные приложения на Swift и Kotlin, используя ИИ на протяжении всего процесса. Shop уже выпущен как полностью нативное приложение, миграция Shopify идёт сейчас, а остальные приложения последуют вскоре. Мы двигаемся быстро, но не за счёт снижения требований. Каждая переписанная версия должна соответствовать или превосходить по производительности, стабильности, доступности и качеству продукта тот уровень, которого пользователи ожидают сегодня. Это не просто те же самые приложения, переписанные на других языках. Мы перестраиваем их так, чтобы и люди, и агенты могли быстро понимать, тестировать и изменять их.
Миграция — не конечная цель. Успех будет означать, что наши команды смогут быстрее, чем раньше, создавать лучший опыт для продавцов и покупателей. Мы будем оценивать это по скорости развития продукта, качеству приложений и объёму работы, который агенты способны выполнять автономно.
Мы будем делиться тем, чему научимся по ходу процесса, включая более подробные материалы о Helix, нашей архитектуре, доступной агентам, и о том, как мы создаём мобильные приложения вместе с агентами. Мы открыто рассказывали о том, чему научились с React Native, и намерены столь же открыто рассказывать об этом переходе.
Это один из самых амбициозных проектов в области мобильной инженерии, за которые мы когда-либо брались. Если вы хотите помочь создавать следующее поколение мобильных приложений Shopify, мы нанимаем мобильных инженеров, инженеров инфраструктуры и разработчиков, работающих на пересечении ИИ и разработки программного обеспечения.
Благодарности
Нативный код — правильный выбор для Shopify сейчас, но и React Native был правильным выбором для Shopify в 2020 году. Этот успех стал возможен только благодаря людям, которые помогли всё это реализовать.
Meta*
Спасибо команде React Native в Meta* за отличное сопровождение фреймворка, внимание к нашей обратной связи и тесное сотрудничество с нами на протяжении многих лет. Сегодня React Native значительно лучше благодаря вашим инвестициям в его архитектуру, производительность, инструменты и сообщество.
Вильям Кандиллон
Спасибо за создание React Native Skia и за то, что вы развили её гораздо дальше, чем кто-либо из нас мог представить. Вы переосмыслили то, что возможно в области графики и анимации в React Native, и нам интересно увидеть, куда вы приведёте проект дальше.
Software Mansion
Спасибо за всю работу над Reanimated, за внимание к нашей обратной связи и за помощь в решении некоторых из самых сложных проблем с анимациями и производительностью в наших приложениях.
Инженеры Shopify
Сотни инженеров участвовали во внедрении React Native, миграции наших приложений, создании общей инфраструктуры, улучшении производительности, поддержке интеграций и развитии экосистемы. Многим из вас пришлось снова стать новичками, поставить под сомнение давно устоявшиеся представления и сделать переход успешным, продолжая при этом выпускать функции для продавцов и покупателей. Спасибо.
Сообщество React Native
Спасибо всем, кто использовал наши open-source библиотеки, вносил код, сообщал об ошибках, ставил под сомнение наши решения и делился тем, чему научился. Ваш вклад и обратная связь — включая особенно острую — сделали нашу работу лучше.
Инструменты, уроки и отношения, выстроенные за последние шесть лет, продолжат влиять на то, как мы создаём мобильные приложения в Shopify. Мы глубоко благодарны всем, кто был частью этого пути.
-
Новости4 недели назадВидео и подкасты о мобильной разработке 2026.34
-
Разработка4 недели назадAndroid Skills — что выпустил Google и почему большинство разработчиков используют навыки неправильно
-
GitHub2 недели назадLucide Swift — типобезопасные Lucide иконки с векторным рендерингом
-
Новости3 недели назадВидео и подкасты о мобильной разработке 2026.35
