◉RORK LABEN
●GPT6.1 — Rork のモデルメニューに GPT-6.1 Sol が加わりました(9月29日)。changelog の最新エントリです●10/12 — React Native 0.88.x の正式リリース予定まで残り7日。Expo SDK 58 の安定版は、10月上旬としか示されていません●NEW — すでに「有効」になっている複数シート購入を、10月22日の前に残すか外すか決める●SDK 58 — 新規プロジェクトで npm install が通らない問題の修正 PR(#50998)が審査中です。安定版の日付はまだ示されていません●SONNET — Rork に Claude Sonnet 5.5 が入りました(9月28日)。Sonnet 5 より出力が30%超速いと説明されています●iOS 27 — 2027年4月から、App Store へのアップロードは iOS 27 SDK が必須になります。ビルド環境の更新は余裕を持って進められます●GPT6.1 — Rork のモデルメニューに GPT-6.1 Sol が加わりました(9月29日)。changelog の最新エントリです●10/12 — React Native 0.88.x の正式リリース予定まで残り7日。Expo SDK 58 の安定版は、10月上旬としか示されていません●NEW — すでに「有効」になっている複数シート購入を、10月22日の前に残すか外すか決める●SDK 58 — 新規プロジェクトで npm install が通らない問題の修正 PR(#50998)が審査中です。安定版の日付はまだ示されていません●SONNET — Rork に Claude Sonnet 5.5 が入りました(9月28日)。Sonnet 5 より出力が30%超速いと説明されています●iOS 27 — 2027年4月から、App Store へのアップロードは iOS 27 SDK が必須になります。ビルド環境の更新は余裕を持って進められます
記事一覧/開発ツール
⬡ 開発ツール/2026-08-17上級

Expo UI の drop-in 置き換えで、依存が本当に1本減る条件

Expo UI が SDK 56 で安定版になり、コミュニティ製パッケージ8件に drop-in の置き換えが用意されました。import を1行入れ替えても依存が減らない場合があります。減る条件を依存グラフから機械的に判定する手順をまとめました。

Expo212React Native238Expo UI個人開発215依存関係4

✦ プレミアム記事

package.json から1行消せるはずでした。消えませんでした。

Expo UI は SDK 56 で安定版になり、これまでコミュニティ製パッケージに任せていたピッカーやスライダーが、SwiftUI と Jetpack Compose の実物に置き換わりました。あわせて8件の drop-in 置き換えが用意されています。公式の案内は「多くの移行は import 1行の入れ替えで済みます」です。

個人開発で運用している壁紙アプリは、画像を横送りで見せる画面を持っています。ページ送りとページジャンプの両方を扱う画面なので、置き換え表に react-native-pager-view が載っているのを見たとき、ここは素直に1本減らせると思いました。

減らなかった理由は、置き換えた側ではなく、それを別の場所から要求しているパッケージの側にありました。しかも、その要求は dependencies ではなく peerDependencies に書かれていたので、package.json を眺めているだけでは目に入りません。

置き換えの是非を判断する前に、まず「そもそも減るのか」を機械的に出す必要がありました。

置き換え表は、削除できる依存の表ではありません

SDK 56 で用意された対応は次の8件です。左の依存を外し、右を使うという対応関係そのものは公開されています。

これまでのパッケージ置き換え先
@react-native-community/datetimepicker@expo/ui/community/datetime-picker
@react-native-community/slider@expo/ui/community/slider
react-native-pager-view@expo/ui/community/pager-view
@react-native-picker/picker@expo/ui/community/picker
@react-native-segmented-control/segmented-control@expo/ui/community/segmented-control
@react-native-masked-view/masked-view@expo/ui/community/masked-view
@react-native-menu/menu@expo/ui/community/menu
@gorhom/bottom-sheet@expo/ui/community/bottom-sheet

この表が答えているのは「置き換え先が存在するか」だけです。「置き換えたら依存が1本減るか」には答えていません。両者は別の問いで、後者はプロジェクトごとに答えが変わります。

置き換えの動機が「見た目をOSに寄せたい」なら前者だけで足ります。動機が「ネイティブ依存を減らして SDK 更新のたびに壊れる箇所を減らしたい」なら、後者を先に確かめないと作業の見積もりを間違えます。私の動機は後者でした。

peerDependencies は package.json の grep に出てきません

手作業での確認は、だいたいこうなります。

grep react-native-pager-view package.json
# "react-native-pager-view": "^9.0.2"

直接依存に1件だけ。使っている画面も1つだけ。ならば置き換えれば消せる、と読みたくなります。

実際には、react-native-tab-view がこれを要求しています。要求の書かれている場所が dependencies ではないところが厄介です。

// react-native-tab-view@4.3.2 の package.json(抜粋)
{
  "dependencies": {
    "use-latest-callback": "^0.2.4"
  },
  "peerDependencies": {
    "react": ">= 18.2.0",
    "react-native": "*",
    "react-native-pager-view": ">= 6.0.0"
  }
}

peer は「自分では入れないが、入っていることを前提にする」宣言です。React Navigation のマテリアルトップタブを使っていれば react-native-tab-view が入りますから、タブを1つでも持っているアプリでは react-native-pager-view は残ります。自分の画面を全部 Expo UI に置き換えても、npm の依存としては1本も減りません。

ここが最初の落とし穴でした。減るかどうかを決めているのは、置き換える側ではなく、それを peer で要求している別のパッケージです。

✦

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
✦Expo UI の置き換え候補8件のうち、自分のプロジェクトで本当に依存が減るのはどれかを、コマンド1本で判定できるようになります
✦peerDependencies 経由で残ってしまう依存を、置き換え作業に手をつける前に見つけられるようになります
✦共通コンポーネントを複数のアプリで使い回している場合に、どのアプリのどの画面から着手すべきかを、依存グラフを根拠に決められるようになります
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Rork Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • ✦コピー&ペーストで使える実装コード付き
  • ✦毎日新しい上級ガイドを追加
  • ✦¥580/月 または ¥2,480 の永久アクセス
メンバーシップを見る →

関連記事

⬡ 開発ツール2026-09-01
expo-paste-input で画像を貼り付けられる入力欄を作り、消える file:// を documents へ逃がす
チャット入力に画像やGIFを貼り付けられるようにする expo-paste-input の実装手順です。onPaste が返す file:// は一時ファイルで、送信までの間に消えることがあります。保存先を移す実装と、実機で確かめる順番をまとめました。
⬡ 開発ツール2026-07-30
Renovate が触ってよい依存と、触ってはいけない依存 — Expo SDK 57 の123パッケージを機械的に切り分ける
Rork 生成アプリに依存の自動更新を入れると、Expo が版を管理している123パッケージまで巻き込まれます。2026年7月30日時点の実測では、うち6件が npm の最新版へメジャー更新される差でした。除外リストを手で書かず SDK から機械生成する手順をまとめます。
⬡ 開発ツール2026-09-10
画面を暗くする機能を足したら、アプリを閉じたあとも iPhone が暗いままでした
expo-brightness の setBrightnessAsync は、Android では現在のアクティビティにだけ効き、iOS では端末の明るさそのものを変えます。戻す責任が片側にしかない理由と、AppState で後始末をするフックの実装をまとめました。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます