Shopify переписали приложение Shop с React Native на Swift и Kotlin. От прототипа до публикации в сторах — 12 недель.
Shop на RN с запуска в 2020 году. С натива ушли по трём причинам:
- реализовывать фичу один раз
- не требовать для этого бэкграунда мобильной разработки под конкретную ОС
- за счёт этого ускорить доставку и держать паритет фичей
Однако оказалось, что RN тоже не без греха. Налог на обновления RN оказался большим. Я не до конца понял, что там было, но упоминаются переход на New Architecture, проблемы с анимациями и библиотеками.
В итоге прототип переезда делал один iOS-инженер одну неделю. По готовому коду RN собирались нативные экраны. Это оказалось далеко не идеальным решением, но оно показало, что переписывание в короткие сроки в целом реально.
Как и все современные миграции, конечно же делали через AI-агентов.
Процесс такой:
- Сделали расширение для Pi
- Субагенты разбирают RN-исходники экрана, декомпозируют их на стейт, UI, навигацию и т. д. и пишут план миграции
- Человек принимает план
- Далее агенты переписывают экран на нативные технологии и проверяют, что логи, стейт и скриншоты на чекпоинтах не изменились
Какие итоги.
Холодный старт, от тапа по иконке до ленты на главной:
- iOS: 3200 → 2466 мс (−23%)
- Android: 4433 → 2233 мс (−50%)
Стабильность сессий 99,5% → 99,95%.
Размер релиза: Android 293 → 184 МБ, iOS 67 → 68 МБ.
Релизный билд Android быстрее примерно на 75%, на iOS время то же.
Лента на Pixel идёт в 120 FPS, отдельных оптимизаций почти не было.
А главное, что блокер, который был актуален в 2020 году, а именно необходимость писать и поддерживать 2 версии кода, более не актуален, т.к. код пишут ИИ-агенты. Достаточно сделать одно работающее решение, а далее ИИ-агенты, если сделать им хороший процесс вокруг разработки, спокойно его адаптируют под любую платформу.
Если раньше узким горлышком было написание кода, то теперь — его ревью и проверка решения.
Я не уверен, что это так классно в реальности, как это звучит в статье. Как минимум видна очень большая подготовительная работа для этого процесса: свои инструменты, пайплайны. Но даже с ним не уверен, что всё идёт вот так вот гладко.
С другой стороны, кейсов переписывания приложения на другой стек становится всё больше и больше. Недавно читал даже кейс, где чел писал софт под железки и подумал «а зачем мне код на читаемом языке, если его всё равно генерирует агент» и заставил агента писать сразу на самом низком уровне (то ли ассемблер, то ли сразу инструкции).
https://shopify.engineering/shop-app-migration
https://shopify.engineering/back-to-native
#development #react-native #shopify #mobile #ai