OpenAIReact NativeAug 12, 2025, 12:00 AM

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

A condensed section focused on the key takeaways first.

Original Post

Quick Digest

Summary

A condensed section focused on the key takeaways first.

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

React Native 0.81 — Android 16 support, precompiled iOS builds, JSC removed

Key Points

  • Targets Android 16 (API 36) by default
  • Experimental precompiled iOS builds (up to 10× faster)
  • Built-in JavaScriptCore removed — use the community package

Summary

React Native 0.81 updates Android support to target Android 16 (API 36) by default, deprecates the legacy SafeAreaView, removes the built-in JavaScriptCore (JSC) in favor of a community package, and introduces experimental precompiled iOS builds that can cut compile times by up to 10x. This release also includes several breaking changes and platform/tooling requirement bumps.

Key Points

  • Android

    • Default target: Android 16 (API 36). Predictive back gesture enabled by default for apps targeting 16.
    • Edge-to-edge requirement: SafeAreaView is deprecated; migrate to react-native-safe-area-context or alternatives.
    • New gradle property edgeToEdgeEnabled to opt-in/opt-out for older versions.
    • Test back navigation and large-screen adaptive layouts; Google Play native 16KB page-size requirement applies from Nov 1, 2025.
  • JavaScriptCore

    • Built-in JSC removed. If your app needs JSC, install the community-maintained JSC package before upgrading.
    • Hermes users are unaffected.
  • iOS builds (experimental)

    • Precompiled React Native builds available; can reduce compile times dramatically when RN is the primary dependency.
    • Enable via environment variables before pod install: RCT_USE_RN_DEP=1 and RCT_USE_PREBUILT_RNCORE=1.
    • Limitations: cannot step into RN internals during debug; Xcode 26 requires setting SWIFT_ENABLE_EXPLICIT_MODULES=NO until patched.
  • Breaking/tooling changes

    • Node.js minimum: 20.19.4+ — upgrade CI/dev environments as needed.
    • Xcode minimum: 16.1+ for iOS builds.
    • Metro now respects resolveRequest and getModulesRunBeforeMainModule in community CLI projects; removing custom values may be required to restore previous behavior.
    • Improved DevTools reporting changes error grouping/logging; verify any backend error processing.
    • New RN_SERIALIZABLE_STATE macro and target_compile_reactnative_options CMake helper for New Architecture C++ libraries — add to custom CMakeLists if applicable.
  • Other notes

    • Several Android classes were made internal and a native prop (textAlignVertical) moved to paragraph props; check native libraries for compatibility.
    • 0.81 is now stable; 0.78.x moves to unsupported. Use the React Native Upgrade Helper for project-specific diffs.

Recommended upgrade checklist

  • Upgrade Node to >=20.19.4 and Xcode to >=16.1 in dev and CI.
  • Migrate SafeAreaView usages to react-native-safe-area-context.
  • If you rely on JSC, add the community JSC package before upgrading.
  • Test back handling, predictive back gesture behavior, and large-screen layouts on Android.
  • If using New Architecture native libraries with custom CMake, add target_compile_reactnative_options(myLib PRIVATE).
  • Try experimental precompiled iOS builds via the environment flags and report feedback to the discussion linked in the release notes.

Full Translation

Translations

A translation section that keeps the flow of the original article.

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.