◉RORK LABEN
●GPT6.1 — Rork のモデルメニューに GPT-6.1 Sol が加わりました(9月29日)。GPT-6 Sol と同価格で、1M トークンの文脈を読みます●SDK58 — Expo SDK 58 Beta が公開されました(React Native 0.88 RC 同梱)。安定版の日付はまだ確認できていません●10/12 — React Native 0.88.x の正式リリース予定まで残り5日。Expo Go の更新で SDK 57 のサポートが落ちる流れです●TESTFLIGHT — Mac なし・Windows だけで iPhone アプリを TestFlight に載せた手順と、つまずいた4か所が Zenn に出ています●NEW — Sonnet 5.5・GPT-6.1 Sol・Opus 5.5 のどれに頼むかを修正の種類で決め、クレジットの行き先を1週間記録しました●EXPO — Shopify がネイティブに戻る中で、1人開発では Expo に残る、という判断の記事が Zenn に出ています。確かめる人が1人という点が論点です●GPT6.1 — Rork のモデルメニューに GPT-6.1 Sol が加わりました(9月29日)。GPT-6 Sol と同価格で、1M トークンの文脈を読みます●SDK58 — Expo SDK 58 Beta が公開されました(React Native 0.88 RC 同梱)。安定版の日付はまだ確認できていません●10/12 — React Native 0.88.x の正式リリース予定まで残り5日。Expo Go の更新で SDK 57 のサポートが落ちる流れです●TESTFLIGHT — Mac なし・Windows だけで iPhone アプリを TestFlight に載せた手順と、つまずいた4か所が Zenn に出ています●NEW — Sonnet 5.5・GPT-6.1 Sol・Opus 5.5 のどれに頼むかを修正の種類で決め、クレジットの行き先を1週間記録しました●EXPO — Shopify がネイティブに戻る中で、1人開発では Expo に残る、という判断の記事が Zenn に出ています。確かめる人が1人という点が論点です
記事一覧/開発ツール
⬡ 開発ツール/2026-08-23上級

Android 16 の予測型「戻る」を、8月31日までに直すか後回しにするか

targetSdk 36 では予測型「戻る」が既定で有効になり、onBackPressed が呼ばれなくなります。期限までに必要な作業と、切り離してよい作業を分ける判断と、opt-out を config plugin に置くまでを書きました。

Android 164predictive backExpo213React Native238config plugin6

✦ プレミアム記事

targetSdkVersion を 36 に上げたあと、プレビュー画面で端から内側へスワイプしたときの見え方が変わっていました。画面が少し縮んで、後ろが覗く。Android 側の予測型「戻る」のアニメーションです。

そこまでは知っていた変更でした。手が止まったのは、その先です。プレビューから一覧へ戻るつもりの操作が、アプリの終了として扱われる場面がありました。

React Native 側の告知には「BackHandler は引き続き動作します」と書かれています。実際、BackHandler は動いていました。それでも戻る操作の結果は変わっていました。この二つが同時に成り立つ理由を理解するまでに、少し時間がかかりました。

「BackHandler は動く」と「戻る操作が変わらない」は別の話です

Android 16 を対象にするアプリでは、予測型「戻る」が既定で有効になります。このとき OS 側で起きているのは、次の二つです。

従来(targetSdk 35 以下)targetSdk 36
onBackPressed() が呼ばれる呼ばれない
KeyEvent.KEYCODE_BACK が配送される配送されない

React Native 0.81 では、この変化を吸収して JS 側の BackHandler を動かし続けるための修正が入っています。コミュニティのアナウンスには、onBackPressed はもう呼ばれないが BackHandler は動作を続けるはずで、独自のネイティブ側の戻る処理を持っている場合は OnBackPressedDispatcher へ手で移行する必要がある、と書かれています。

ここで私が読み違えていたのが、「BackHandler が動く」の射程でした。動くのは、自分で hardwareBackPress に登録したハンドラです。ハンドラを登録していない画面 — つまりナビゲーションライブラリに戻る操作を任せている画面 — の挙動までが保証されているわけではありません。

そして React Navigation は、この記事を書いている時点で予測型「戻る」に追随しきれていません。公式ドキュメントは、システムの戻るジェスチャーを期待どおり動かすために android:enableOnBackInvokedCallback を false にする案内を出しています。Expo 側でも SDK 54 でスタック内の戻る操作が効かなくなる報告が上がっており、react-native-screens の新しいネイティブスタックで対応が進んでいる段階です。

つまり、壊れうるのは自分が書いた BackHandler ではなく、書かなかった箇所のほうでした。これが今回いちばん直感に反した点です。自分のコードを読み返しても、壊れる理由は見つかりません。

opt-out フラグが止めるものと、止めないもの

android:enableOnBackInvokedCallback="false" は、一時的な回避として公式に案内されているフラグです。ただしこのフラグの効き方には、把握しておかないと判断を誤る非対称があります。

対象フラグを false にしたとき
予測型「戻る」のシステムアニメーション無効になる
OnBackInvokedCallback無視される
OnBackPressedCallback値によらず呼ばれ続ける

OnBackPressedCallback はフラグの値に関係なく呼ばれます。ですので、AndroidX の作法で戻るを扱っている部分は、opt-out を入れても入れなくても動きます。フラグで戻せるのは、あくまで OS 側のアニメーションと新しいコールバック経路のほうです。

もう一点。このフラグは <application> にも <activity> にも書けます。両方に書いた場合は個別の指定が優先されるため、<application> に false を入れたのに <activity> 側へ過去の検証で true が残っていると、その画面だけ挙動が揃いません。私はこの取りこぼしを機械で潰すことにしました(後述のスクリプトで <activity> 側も見ているのはこのためです)。

✦

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

この記事の続きを読む

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

この記事で得られること
✦8月31日の期限に必要なのは targetSdk の引き上げだけで、予測型「戻る」への本対応は切り離せると判断できるようになる
✦手元の複数アプリのうちどれが戻る操作で壊れうるかを、実機を触る前に検査スクリプトで仕分けられるようになる
✦AndroidManifest への手書きが次の prebuild で消える事故を避け、opt-out を再現可能な形で残せるようになる
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

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

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

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

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

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

関連記事

⬡ 開発ツール2026-07-28
prebuild --clean で消える手入れを、上げる前に数える — Expo SDK 57 移行の棚卸し
Expo SDK 57 への移行前に、ios/ へ加えた手入れが prebuild の再生成でいくつ失われるかを数える手順をまとめました。素の差分649行のうち意味を持つのは3行。ノイズを正規化して実質的な変更だけを抽出するスクリプトと、config plugin への移し替えを実測つきで共有します。
⬡ 開発ツール2026-09-10
画面を暗くする機能を足したら、アプリを閉じたあとも iPhone が暗いままでした
expo-brightness の setBrightnessAsync は、Android では現在のアクティビティにだけ効き、iOS では端末の明るさそのものを変えます。戻す責任が片側にしかない理由と、AppState で後始末をするフックの実装をまとめました。
⬡ 開発ツール2026-09-04
EAS の secret は「アプリに入れない」設定ではありません — 接頭辞と可視性を別々に決める
EXPO_PUBLIC_ の接頭辞は成果物に入るかを決め、EAS の可視性は誰が読めるかを決めます。二つを重ねたときに OTA 更新でだけ値が消える筋道と、出荷前に自分の手で確かめる手順をまとめました。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます