Title: Shopify, React Native 대신 Swift와 Kotlin으로 전환
Shopify가 React Native 코드베이스를 제거하고 iOS 및 Android 앱을 Swift와 Kotlin으로 재구축하며, 6년간의 크로스 플랫폼 프레임워크 실험을 마무리합니다. AI 기반 개발 도구가 이번 전환을 이끌었으며, 이를 통해 Android 시작 시간을 단축하고 앱 크기를 109MB 줄였으며, 크래시(crash) 발생률을 약 10분의 1로 낮췄습니다.
Shopify가 React Native를 떠난 이유
2020년 Shopify는 양쪽 플랫폼에서 모두 실행되는 단일 JavaScript 코드베이스를 작성하기 위해 React Native를 선택했습니다. 이는 두 개의 네이티브 스택을 유지 관리하는 수고를 덜어주었으며, 빠른 기능 출시를 원하는 시장의 요구에 부합했습니다.
오늘날에는 상황이 달라졌습니다. Shopify는 중복 작업의 상당 부분을 처리하는 AI 프로그램인 "코딩 에이전트(coding agents)"를 운영합니다. 이제 별도의 Swift 및 Kotlin 프로젝트를 유지 관리하는 비용보다 네이티브 코드가 제공하는 성능 및 신뢰성 이득이 더 큽니다.
성능 향상 결과
Shopify의 내부 벤치마크 결과, 마이그레이션 이후 다음과 같은 극적인 개선이 나타났습니다:
- Android 시작 시간이 4,433ms에서 2,233ms로 단축되었습니다.
- Android 패키지 크기가 109MB 감소했습니다.
- 크래시 빈도가 약 10분의 1로 줄었습니다.
- 스크롤 성능이 이제 일관되게 120fps를 유지합니다.
재작성을 가능하게 한 AI 도구
이번 마이그레이션은 단순한 "코드 재작성" 프로젝트가 아니었습니다. Shopify는 작업량을 관리 가능한 수준으로 유지하고 기능적 동등성(feature parity)을 보장하기 위해 두 가지 내부 AI 도구를 구축했습니다.
Pi는 AI 에이전트를 할당하여 기존 앱의 동작을 문서화하고, 각 플랫폼에 필요한 작업을 개요화하며, 새로운 네이티브 구현이 기존 기능과 일치하는지 검증합니다.
Tardis는 디버깅 어시스턴트 역할을 하며, 에이전트가 실시간 로그와 앱 상태에 접근할 수 있도록 하여 사람의 도움 없이도 스스로 변경 사항을 검증할 수 있게 합니다.
두 도구 모두 "Android와 iOS는 항상 동일한 기능을 가져야 한다"는 단 하나의 규칙을 강제합니다. 이러한 지속적인 동등성 체크를 통해 멀티 플랫폼 프로젝트에서 흔히 발생하는 기능 차이(drift) 문제를 방지했습니다.
트레이드오프: OTA(over-the-air) 업데이트의 상실
네이티브로 전환한다는 것은 Shopify가 더 이상 사용자에게 직접 업데이트를 푸시할 수 없음을 의미합니다. 이제 모든 변경 사항은 App Store의 심사 과정을 거쳐야 하므로, 핫픽스(hotfix)나 신규 기능 배포에 지연이 발생합니다. 빠른 반복(iteration)을 중시하는 커머스 플랫폼에게 이러한 마찰은 무시할 수 없는 요소입니다.
반론: React Native는 죽지 않았다
Shopify의 결정은 그들만의 특수한 상황을 반영합니다. 즉, 중복 작업의 부담을 짊어질 수 있는 맞춤형 AI 에이전트를 보유한 대규모 엔지니어링 조직이라는 점입니다. React Native 프레임워크는 여전히 진화하고 있으며, 많은 앱이 여전히 공유 코드베이스를 통해 이점을 누리고 있습니다.
향후 주목할 점
- AI 기반 네이티브 개발
- React Native 생태계
- App Store 심사 기간
시사점
Shopify의 변화는 AI가 모바일 개발의 경제성을 재정의할 수 있음을 보여줍니다. 지능형 에이전트가 코드 중복이라는 반복적인 작업을 대신 수행하게 되면, 네이티브 Swift와 Kotlin의 성능 이득은 단일 JavaScript 코드베이스의 편리함을 압도할 만큼 강력해집니다. 이번 행보는 React Native 자체에 대한 판결이 아니라, 도구(tooling)가 상황의 균형을 얼마나 극적으로 바꿀 수 있는지를 상기시켜 주는 사례입니다.
