#React Native + Expoでできることできないこと
メリット
- Reactでコードがかけること
- 一応、ハイブリッドでiOS、Androidが作成できる。(最終的にはそれぞれに動作検証や最適化する必要はある)
- 手軽にアプリを作成できる。
- OTAを使ってアプリ更新せずにアップデートができる
Expo SDK(47)現在でできること
- 加速度計
- Apple認証
- アプリバージョン情報
- 画像などのアセット情報へのアクセス
- 非同期ストレージアクセス
- 音声
- 認証
- 動画
- バックグラウンド実行
- バーコードスキャナ
- バッテリー情報
- ぼかしビュー
- 輝度
- カレンダー
- カメラ
- スクリーンショット
- チェックボックスコンポーネント
- クリップボード
- 連絡先
- 暗号化
- 日時ピッカー
- デバイス情報
- モーションセンサー
- ドキュメントピッカー
- エラー回復(クラッシュレポート)
- 顔認識
- ファイルシステム
- Firebase
- フラッシュリスト(スクロール高速化)
- フォント
- ジェスチャ
- GLビュー(OpenGL)
- ジャイロスコープ
- Haptics(タッチフィードバック)
- 画像操作(回転など)
- イメージピッカー
- アプリ内購入
- Androidインテント
- キープアウェイク(スリープ防止)
- 光センサー
- グラデーション
- ローカル認証(顔認証、指紋認証など)
- ローカリゼーション
- 位置情報
- Lottie(アニメーションレンダリング)
- 磁力計
- メール作成
- マップビュー
- マスク(ビュー)
- メディアライブラリ
- ナビゲーションバー
- ネットワーク接続情報
- IPアドレス、MACアドレス、機内モードなど
- 通知
- 歩数計
- ピッカー
- 印刷
- 乱数ジェネレーター
- アニメーション生成
- Rootコンポーネントへの登録
- デバイスのセーフエリア情報
- 画面の向き
- スクリーンリロード
- 秘密鍵管理
- セグメントコントロール(ラジオボタン的なUI)
- センサー(モーション、向き、圧力、磁場、歩数など)
- ファイル共有
- Skia Graphics Library
- スライダー
- SMS
- テキストスピーチ
- スプラッシュスクリーン
- SQLite
- ステータスバー
- ストアレビュー
- ストライプ(決済)
- SVG
- システムUI(ルートビューの背景色など)
- タスクマネージャー
- アップデート
- トラッキング(追跡用ライブラリ、広告ID、デバイスIDなどアプリによる追跡のリクエスト)
- ビデオサムネイル
- ビデオ
- ビューページャー
- ブラウザ
- WebView
デメリット
- Expoでできないネイティブ機能が使えない。(カメラによるAR/VRやエッジコンピューティングなど・・・)
- ハイパフォーマンスな画面表示が求められる場合
- UIなど細かいところまでこだわる場合
- ネイティブコードを使うパッケージの場合、ハマることがある。
終わりに
ExpoなしでのReact Nativeは結構、面倒な気がするので、ExpoありだったらReact Nativeでもカジュアル的なアプリならいけるきがします。
やりたいこととのトレードオフになると思うので、自社アプリなど、要件が自己決定できる環境のように、できないことはできないと割り切って使う分にはいいと思います。