OpenAIReact Native2025/08/12 0:00

React Native 0.81 - Android 16 support, faster iOS builds, and more

要点だけを先に読めるように短く再構成したセクションです。

元記事

Quick Digest

要約

要点だけを先に読めるように短く再構成したセクションです。

openaijamodel: gpt-5-mini-2025-08-07

React Native 0.81 リリース — Android 16 対応、iOS ビルド高速化など

Key Points

  • Android 16 を既定ターゲット化
  • SafeAreaView を非推奨化
  • iOS 事前コンパイルでビルド高速化(実験)

Summary

React Native 0.81 が公開されました。主な変更は Android 16 (API 36) の既定ターゲット化、SafeAreaView の非推奨化、組み込み JavaScriptCore の削除(コミュニティ版へ移行)、および iOS の事前コンパイルによるビルド高速化(実験的)です。開発環境やネイティブライブラリへの影響があるため、アップグレード前に下記の対応を確認してください。

Key Points

  • Android 16 をデフォルトターゲットに変更
    • edge-to-edge 表示が必須。アプリ側でのレスポンシブ対応と大画面レイアウトの確認を推奨。
    • プロパティ edgeToEdgeEnabled(gradle)で 16 未満の挙動を制御可能。
    • 予測バックジェスチャがデフォルト有効。カスタムネイティブの onBackPressed 実装は要確認/移行。
  • SafeAreaView の非推奨化
    • 組み込み SafeAreaView は将来削除予定。react-native-safe-area-context 等への移行を推奨。
  • JavaScriptCore の変更
    • 組み込み JSC を削除。JSC が必要な場合はコミュニティ版パッケージを明示的に導入してから 0.81 に上げる。
  • iOS の事前コンパイル(experimental)
    • ビルドが最大 10x 速くなる可能性。試すには pod install 実行時に環境変数を設定:RCT_USE_RN_DEP=1 と RCT_USE_PREBUILT_RNCORE=1。
    • 制約: RN 内部のステップ実行デバッグ不可、Xcode 26 Beta は未対応(SWIFT_ENABLE_EXPLICIT_MODULES=NO の一時回避可)。
  • 破壊的変更と環境要件
    • Node.js >= 20.19.4 が必須。
    • Xcode >= 16.1 が必須。
    • Metro の高度設定(resolveRequest / getModulesRunBeforeMainModule)が Community CLI プロジェクトで尊重されるようになった(既存の挙動を戻したければ削除が必要)。
  • ネイティブライブラリ影響点
    • 新マクロ RN_SERIALIZABLE_STATE と C++ フラグを利用。独自の CMakeLists を持つライブラリは target_compile_reactnative_options を呼び出して対応。
    • 一部 Android クラスを internal 化、textAlignVertical を ParagraphAttribute.h へ移動など。該当ライブラリは修正が必要。
  • リリース注意点
    • Google Play の 16KB ページサイズ要件(ネイティブバイナリ)に 2025-11-01 以降で対応が必要。

Upgrade checklist(実務向け)

  • Node.js と Xcode をバージョンアップして CI を更新する。
  • SafeAreaView を検出して react-native-safe-area-context 等へ置換する。
  • JSC を利用している場合は community jsc パッケージを導入してからアップグレードする。
  • カスタムネイティブのバック処理や Fabric コンポーネントをテストし、必要なら修正する。
  • 事前コンパイルを試す場合は環境変数を設定して pod install を実行し、既知の制約(デバッグ、Xcode 26)を確認する。
  • CMake を使うライブラリは target_compile_reactnative_options を追加する。

詳細な破壊的変更や完全なリストは公式 CHANGELOG を参照してください。

Full Translation

翻訳

原文の流れを保ったまま読める翻訳セクションです。

openaijamodel: gpt-5-mini-2025-08-07

React Native 0.81 — Android 16 サポート、iOS ビルド高速化など

今日、React Native 0.81 をリリースできることを嬉しく思います!このリリースでは Android 16 (API level 36) のサポートに対応するとともに、さまざまな安定性向上やバグ修正を含んでいます。さらに、事前コンパイルによる iOS ビルド高速化の実験的サポートも含まれます。

ハイライト

  • Android 16 サポート
  • SafeAreaView の非推奨
  • コミュニティ管理の JavaScriptCore サポートに移行
  • 実験的:Precompiled iOS ビルド(ビルド時間を最大で 10x 短縮)

Android 16 サポート

  • React Native 0.81 でビルドされた Android アプリはデフォルトで Android 16 (API level 36) をターゲットにします。
  • Google の発表どおり、Android 16 はアプリの表示を edge-to-edge(画面端まで表示)にすることを要求し、opt-out のサポートはありません。これに対応するため、従来案内していた組み込みの SafeAreaView コンポーネントを非推奨にしています。代替手段(下記参照)を使うことで、より良い edge-to-edge 対応が可能です。
  • 新しい Gradle プロパティ edgeToEdgeEnabled を追加しました。これにより Android 16 未満のサポート対象バージョンでも edge-to-edge を有効化するかどうかを選択できます。
  • Predictive back gesture(予測戻るジェスチャー)は Android 16 をターゲットにしているアプリでデフォルト有効になりました。ほとんどのユースケースでは BackHandler API はこれまで通り機能しますが、onBackPressed() をオーバーライドするなどカスタムネイティブコードで戻る処理を行っている場合は、手動で移行するか一時的に opt-out する必要があるかもしれません。アップグレード後はアプリの戻るナビゲーションを十分にテストしてください。
  • Google は大画面デバイスでのアダプティブレイアウト対応を期待しています。現時点では opt-out は可能ですが、Android 17 が来る前に大画面でのレスポンシブ UI 対応をテストして更新することを推奨します。
  • 重要: 2025年11月1日以降、Google Play へのアプリ提出はネイティブバイナリの 16 KB ページサイズ要件を満たす必要があります(Android 15+ をターゲットとする新規・更新アプリに適用)。React Native 自体は既に 16KB ページサイズに準拠しています。ネイティブコードやサードパーティライブラリも準拠していることを確認してください。
  • Android 16 の変更点とマイグレーション手順の詳細は discussions-and-proposals リポジトリの投稿を参照してください。

SafeAreaView の非推奨

  • 組み込みの SafeAreaView コンポーネントは、もともと iOS に限った「セーフエリア」対応(カメラノッチや角の丸みを避ける)のための限定的な実装でした。Android の edge-to-edge 描画とは互換性がなく、パディング以上のカスタマイズができません。
  • そのため、多くのアプリはより移植性や柔軟性の高い react-native-safe-area-context などの代替を採用しています。
  • React Native 0.81 ではレガシー版 SafeAreaView を非推奨にし、使用しているアプリでは React Native DevTools に警告が表示されます。将来のリリースで削除される予定です。
  • 推奨移行先: react-native-safe-area-context などのライブラリを使って、クロスプラットフォームで最適な見た目を確保してください。

コミュニティ管理の JavaScriptCore (JSC) サポート

  • 昨年発表したとおり、JavaScriptCore (JSC) エンジンのサポートは React Native 本体から分離され、コミュニティがメンテナンスする別パッケージとして配布されています。
  • React Native 0.81 では組み込みの JSC を削除しました。JSC を必要とするアプリは、0.81 にアップグレードする前にコミュニティパッケージを使用する必要があります。インストール手順は該当パッケージのドキュメントを参照してください。
  • この変更は Hermes を使用しているアプリには影響しません。

実験的: Precompiled iOS ビルド

  • React Native 0.81 では、事前コンパイル済み(precompiled)iOS ビルドを導入しました。React Native が主要依存であるプロジェクトでは、ビルド時間が最大で 10x 短縮されることがあります。

  • これは Expo と Meta の協力による成果で、React Native 0.80 で導入した作業の拡張です。現時点では実験的機能ですが、将来のリリースで全アプリ向けに有効化されることを目指しています。

  • 試してみたい場合は、pod install を実行する際に以下の環境変数を指定して有効化できます(実行例):

    RCT_USE_RN_DEP = 1 RCT_USE_PREBUILT_RNCORE = 1 bundle exec pod install

  • フィードバックは該当の GitHub discussion にお願いします。

  • 既知の制限(現在対応中):

    • Precompiled ビルドでは、React Native の内部にステップインしてデバッグすることはできません。自身のネイティブコードのデバッグは可能です。
    • Xcode 26 Beta では prebuild がサポートされていません(IDE がすべてのターゲットを Swift explicit modules 有効でビルドするため)。Xcode 26 で precompiled ビルドを使う場合は、Xcode プロジェクトで SWIFT_ENABLE_EXPLICIT_MODULES フラグを NO に設定してください。これは今後のパッチリリースで対応します。
  • この機能の詳細は Expo のブログ記事「Precompiled React Native for iOS: Faster builds are coming in 0.81」を参照してください。


Breaking Changes(互換性に関わる変更)

Minimum Node.js が 20 に上がりました

  • React Native は Node.js バージョン 20.19.4(執筆時点の最新 Maintenance LTS)以上を要求します。開発環境や CI の Node.js をアップグレードする必要があるかもしれません。

Minimum Xcode が 16.1 に上がりました

  • iOS プロジェクトをビルドするために Xcode 16.1 以上が必要です。開発環境や CI の Xcode をアップグレードしてください。

Metro: Community CLI プロジェクトで高度な設定のサポート向上

  • Metro は now resolveRequestgetModulesRunBeforeMainModule オプションを、React Native Community CLI プロジェクトの metro.config.js に指定されている場合に尊重するようになりました。以前はこれらを設定しても効果がありませんでした。
  • metro.config.js にカスタム値を設定していた場合、以前の動作を復元したいならそれらの設定を削除する必要があるかもしれません。

未捕捉 JavaScript エラーの報告が改善されました

  • React Native DevTools は未捕捉の JavaScript エラーに対して、元のメッセージとスタックトレース、原因(if any)、およびコンポーネントによってスローされたエラーの Owner Stack を表示するようになりました。これによりデバッグと修正が容易になります。
  • JavaScript エラーをバックエンドやサードパーティのエラー報告サービスにログしている場合、0.81 へアップグレード後はログの内容が変わる可能性があります(例: これまで console.error 経由で報告されていたものが throw として表れるなど)。必要に応じてバックエンド側のロジックを更新してください。

RN_SERIALIZABLE_STATE と C++ フラグ

  • Components on New Architecture に対してシリアライズ可能な状態をサポートするためのマクロ RN_SERIALIZABLE_STATE を導入しました。

  • ライブラリ作者でカスタムの CMakeLists.txt を持っている場合、このマクロを指定しないと C++ のビルドが失敗する可能性があります。

  • 新しい CMake 関数 target_compile_reactnative_options を導入しました。これを使うことでこのマクロと必要な C++ フラグの設定を自動で行えます。使用例:

    target_compile_reactnative_options(myLibraryName PRIVATE)

  • react-native-screens がこのマクロをどう設定しているかの例も参照してください。

  • この変更は、より高度で複雑なライブラリにのみ影響します。codegen を使用していてカスタム CMake ファイルがない場合は影響を受けません。

その他の破壊的変更(Android)

  • いくつかのクラスを internal にしました。これらのクラスは公開 API の一部ではなく、アクセスすべきではありません。影響を受けるライブラリには既に通知またはパッチを送っています。

    • com.facebook.react.fabric.mounting.MountingManager
    • com.facebook.react.views.text.TextLayoutManager
  • textAlignVertical ネイティブプロパティを TextAttribute.h から ParagraphAttribute.h に移動しました。

    • textAlignVertical は最上位のテキストビュー(パラグラフビュー)にのみ影響しますが、従来は text 属性プロップに存在していました。プラットフォーム制限をより正確に反映するために移動しています。JS API 自体には影響しません。
    • C++ Text API とやり取りする Fabric コンポーネントを実装している場合のみ影響を受けます。影響を受ける場合はコード中の TextAttributes.hParagraphAttribute.h に置き換えてください。
  • 0.81 の CHANGELOG にある破壊的変更の完全な一覧を確認してください。


謝辞

  • React Native 0.81 には 110 人のコントリビュータから 1110 件以上のコミットが含まれています。皆さんの多大な貢献に感謝します!
  • 本リリースで重要な貢献をしてくれたコミュニティメンバーへ特別な感謝を送ります:
    • Christian Falch — precompiled iOS ビルドに関する素晴らしい貢献
    • Mathieu Acthernoene — Android の edge-to-edge サポートへの重要な貢献
    • Enrique López-Mañas — Android 16 統合と SafeAreaView 非推奨のテストの支援

0.81 へのアップグレード

  • 既存プロジェクトの差分を確認するには React Native Upgrade Helper と Upgrading ドキュメントを併用してください。

  • 新規プロジェクトを作成するには:

    npx @ react - native - community / cli @ latest init MyProject -- version latest

  • Expo を使用している場合、React Native 0.81 は今後の Expo SDK 54 でデフォルトの React Native バージョンとしてサポートされます。

info 0.81 is now the latest stable version of React Native and 0.78.x moves to unsupported. For more information see React Native's support policy.

React Native 0.81 — Android 16 サポート、iOS ビルド高速化など | React Native | DocsDigest