React Nativeを1年使ってみて、Shopifyは今後のモバイルアプリ開発にReact Nativeを採用することにした。彼らの報告によると、開発パフォーマンスは約2倍になり、プラットフォーム間で95%以上のコードを共有できたという。
ShopifyがReact Nativeへの道を歩みはじめたのは、React Nativeに完全にフォーカスした会社、Tictailを買収してからだ。彼らの決定のもう1つの要因は、すでに広範囲のWebプロダクトでReactを使っていることだった。Reactモデルをさらにモバイルアプリへ広げられないか探求するのは、ごく自然のようにみえる。2019年、3つのチームが3つのアプリ、Arrive、Point of Sale、Compassの開発をスタートした。Arriveは基本的に顧客向けの注文追跡ツールで、何百万ものダウンロード数がある。Point of SaleとCompassは販売者をターゲットにしている。
彼らはArriveをReact Nativeで書き直すことで、もともとiOSでしか使えなかったものを、ほとんどコストをかけずに、Androidでも動かすことができた。実際、Shopifyによると、Arriveの2つのバージョンはコードベースの95%を共有しているという。さらに驚くべきことは、ネイティブのiOS専用バージョンよりもクラッシュ頻度が下がったとShopifyが語っていることだ。JavaScriptベースのアプリの柔軟性のおかげで、GitHub PRに関連づけられたQRコードをスキャンして、そのPRのコードでアプリバンドルを自動更新するメカニズムなどが可能になったという。
Point of Saleでは、AndroidバージョンだけReact Nativeで開発し、iOSアプリは元のチームに任せた。Shopifyは2つのバージョンを別々にすることで、ネイティブのiOS技術とAndroid上のReact Nativeによる開発スピードを比較すること、また、React NativeバージョンとiOSのネイティブアプリのパフォーマンスを比較するのが狙いだ。Point of Saleの開発は現在も進行中であり、まだ完全な比較はできない。しかし、Androidバージョンは1.5GHz CPUで動くデバイスでも優れたパフォーマンスを示しているという。
最後に、Compassでは、ネイティブ、Flutter、React Nativeの3つのオプションを比較した。彼らは最終的にReact Nativeで進めることにし、3ヶ月でiOSとAndroidのアプリを立ち上げた。そこでは約99%のコード共有を達成できたという。
Shopifyは引き続きReact Nativeに投資していくという。しかし、彼らのアプリ全てを新しいテクノロジーで書き換えるわけではない。彼らは自身のアプリで、低レベルのネイティブライブラリおよびフレームワークを使い続けることに注意しよう。パフォーマンスが必要な場合には、ネイティブ技術を使ってより低レベルのコンポーネントを書くことを検討するだろう。具体的には、古いハードウェア(1.5GHz未満のCPU)で実行する必要のあるコンポーネント、CPU負荷の高い処理を行うコンポーネント、最高のパフォーマンスを必要とするコンポーネント、複数のバックグラウンドスレッドを使うコンポーネントなどだ。