RORK LABEN
PLAY — Google Play の target API level 36 要件が昨日8月31日に発効しました。今日以降、新規アプリと既存アプリの更新は Android 16 対応が必須ですVISIBILITY — API 35 のままのアプリは掲載こそ続きますが、新しい Android 版のユーザーには表示されなくなります。エラーが出ないまま新規インストールだけが減る点に注意が要りますEXTENSION — 間に合わなかった場合は、Play Console から2026年11月1日までの延長申請が出せます。恒久対応の計画とセットで進めるのが実務的ですAPPLE — Apple 側は9月9日にイベント、iOS 27 の正式リリースは9月14日と報じられています。生成したアプリの iOS 27 実機確認はリリース週の前に済ませておきたいところですEXPO — Expo が expo-paste-input を公開しました(8月28日)。React Native の TextInput に画像・GIF・ステッカーの貼り付けを追加するネイティブモジュールですEAS — EAS Observe が8月20日に GA になりました。クラッシュや性能の観測を、ビルドや配信と同じ EAS 上で持てるようになっていますPLAY — Google Play の target API level 36 要件が昨日8月31日に発効しました。今日以降、新規アプリと既存アプリの更新は Android 16 対応が必須ですVISIBILITY — API 35 のままのアプリは掲載こそ続きますが、新しい Android 版のユーザーには表示されなくなります。エラーが出ないまま新規インストールだけが減る点に注意が要りますEXTENSION — 間に合わなかった場合は、Play Console から2026年11月1日までの延長申請が出せます。恒久対応の計画とセットで進めるのが実務的ですAPPLE — Apple 側は9月9日にイベント、iOS 27 の正式リリースは9月14日と報じられています。生成したアプリの iOS 27 実機確認はリリース週の前に済ませておきたいところですEXPO — Expo が expo-paste-input を公開しました(8月28日)。React Native の TextInput に画像・GIF・ステッカーの貼り付けを追加するネイティブモジュールですEAS — EAS Observe が8月20日に GA になりました。クラッシュや性能の観測を、ビルドや配信と同じ EAS 上で持てるようになっています
記事一覧/開発ツール
開発ツール/2026-05-29上級

Rork × EAS Update の Runtime Version 戦略 — 6 アプリ並行運用で既存ユーザーを壊さない SDK アップグレード設計

Rork で作った 6 つのアプリを並行運用しながら Expo SDK 50→51 を段階的に上げた実装を、runtimeVersion ポリシー比較・eas.json 完全版・配信スクリプト・本番事故からの復旧手順まで一気通貫で残します。

Rork547EAS Update7Runtime VersionExpo SDK2OTA7本番運用10個人開発204

プレミアム記事

廣川政樹です。Dolice Labs として個人で 6 本のアプリを並行運用していますが、いちばん理解されにくく、いちばん事故に直結しているのが Expo の runtimeVersion 設定だと感じています。

きっかけは 2026 年 4 月、Rork で作った壁紙アプリのひとつを Expo SDK 50 から 51 へ上げた翌日でした。手元のシミュレータでも、本番ビルドの TestFlight でも問題なく動いていたのに、App Store で配信中の旧バージョン(SDK 50)を入れているユーザーから「アイコンの並びが昨日と変わって、お気に入りが消えた」という問い合わせが連続で 3 件届きました。原因は単純です。SDK 51 用に最適化した JS バンドルを、eas update --branch production で旧バージョンの runtimeVersion にも配信してしまっていたのです。

公式ドキュメントは「runtimeVersion を合わせる必要がある」と書いてはいますが、その「合っていない」状態がどう壊れるか、どう自動で防ぐかまでは踏み込んで書かれていません。累計 5,000 万ダウンロードを支えてきた 1 個人開発者として、6 アプリを抱えたまま SDK を上げ続けるための実装一式を、ここに置いておきます。

なぜ Runtime Version が「沈黙の地雷」になるのか

EAS Update は、JS バンドルとアセットを App Store / Google Play の審査を経ずに端末へ届けてくれます。ただし配信先は「ブランチ」ではなく「同じ runtimeVersion を持つビルド済みバイナリ」です。ここに 3 つの事実が重なります。

  1. runtimeVersion: "appVersion" を採用すると、app.jsonversion を上げるたびに runtimeVersion も自動で上がります。旧バージョンを保有しているユーザーは新しい OTA を受け取れません。逆もまた然りで、SDK だけ上げて version を据え置くと、Native と JS のバージョンがずれた OTA が古いネイティブに配信されます。
  2. SDK のアップグレードは React Native の Hermes バイトコードや内部ブリッジを差し替えます。SDK 51 でビルドした JS を SDK 50 のネイティブが読むと、Hermes のバージョンミスマッチで JSI 呼び出しが落ちます。シミュレータと TestFlight では再現しません。
  3. EAS Update は配信に失敗してもユーザーに通知しません。eas update 側は緑色で Published と出るのに、端末側は静かに古い JS を使い続けます。Sentry にも何も来ません。

この 3 つを抑えないまま SDK を上げると、「自分の端末では直っているのに、ユーザーからの『壊れた』報告が止まらない」という地獄が起きます。

3 つのポリシーをどう使い分けるか

runtimeVersion には大きく 3 つの設定値があります。Dolice Labs では、運用フェーズと SDK 移行の頻度に応じてアプリごとに使い分けています。

"appVersion" — リリース頻度が低いアプリ向け

app.jsonversion と一体運用されるため、設定ミスは起きません。ただし version を上げない限り OTA も別ランタイムにならないので、メジャーリリースの間隔が短いと「同じ version の中に複数の SDK を混ぜる」ことができず柔軟性は落ちます。私の 6 アプリのうち、月 1 本ペースでストア更新する 2 本はこれを採用しています。

sdkVersion 直接指定 — SDK 1 つを長く使い倒すアプリ向け

"runtimeVersion": "50.0.0" のように Expo SDK バージョンを書きます。SDK を上げない限り runtimeVersion はそのままなので、OTA を頻繁に出してもネイティブとずれることはありません。AdMob の収益化チューニングを月 30 回 OTA で配信している 2 本はこれを採用しています。

明示的セマンティックバージョン — 共通コードベースを 2 系統に分けるとき向け

"runtimeVersion": "2026.5.1" のような独自の番号体系で、ストアバージョンとは独立に管理します。私が iPad 専用 UI を別ランタイムで配信した時に使ったやり方です。新旧 UI を併存させ、Native 変更を伴う差分だけ別系統で動かせます。

公式は新規アプリで "appVersion" を推奨していますが、Rork で生成したコードのように JS 側の差分が頻繁に出る案件では sdkVersion 固定の方が事故率が下がる、というのが私の判断です。

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

この記事の続きを読む

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

この記事で得られること
runtimeVersion: "appVersion" の自動採用が、SDK アップグレード時に旧バージョン保有ユーザーへの OTA 配信を静かに止める仕組みを、具体例で理解できます
Rork で生成した 6 つのアプリを抱えたまま Expo SDK 50→51 へ移行するための、eas.json + チャンネル命名規約 + 配信スクリプトの実装一式を持ち帰れます
Sentry の crash-free 率と EAS Update Webhook を連動させて 1 端末でも壊れたら配信を止める仕組みと、Native 変更を OTA に乗せてしまった本番事故からの 30 分復旧手順が手に入ります
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

開発ツール2026-06-28
EAS Update を少人数から配り、クラッシュ率で自動的に止める
OTA 更新は一瞬で全員に届くからこそ、悪い更新も一瞬で全員に届きます。EAS Update を少人数(カナリア)から配り、クラッシュ率を見て広げるか止めるかを自動で判断し、最後は端末側で安全網を張る設計を、動くコードでまとめます。
開発ツール2026-06-24
EAS Update を入れたのに『直したはずのバグ』が消えないとき — OTA が静かに届かない原因と運用メモ
EAS Update を導入しても OTA が一部のユーザーに届かないことがあります。runtimeVersion のドリフト、配信したのに採用されない更新、安全なロールバックの選び方を、Rork アプリの運用で実際に効いた計装とともに整理します。
開発ツール2026-05-08
Rork アプリの段階的リリース戦略 — 壊さない本番運用を作る
Rork で出したアプリの本番運用を、iOS Phased Release・Android Staged Rollout・OTA ホットフィックスの三層で守る方法を、判断基準と監視自動化のコード付きで解説します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →