OpenAIReact NativeDec 6, 2023, 12:00 AM

React Native 0.73 - Debugging Improvements, Stable Symlink Support, 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.73 — Debugging Improvements, Symlink Support, Bridgeless Mode

Key Points

  • Hermes captures console.log history
  • Metro enables symlinks by default
  • Experimental Bridgeless Mode released

Summary

React Native 0.73 focuses on improving debugging (Hermes and an experimental new debugger), stabilizing symlink support in Metro for monorepos, adding Android 14 support, and continuing rollout of the New Architecture with an experimental Bridgeless Mode. The release also introduces Android tooling requirements and several breaking changes you should address when upgrading.

Key Points

  • Debugging

    • Hermes now captures all console.log() calls during app startup and will show them when a debugger connects (Flipper / Chrome DevTools with Hermes / new experimental debugger).
    • An experimental New Debugger (technical preview) is available; Flipper native integration is deprecated and will be removed in a future release.
    • Remote JavaScript Debugging is deprecated and removed from the Dev Menu; enable it manually via NativeDevSettings if needed.
  • Metro and monorepos

    • Symlink resolution in Metro is enabled by default, improving support for monorepos (requires proper watchFolders configuration).
  • Android and templates

    • Kotlin is now the recommended Android template language (smaller MainActivity/MainApplication files).
    • Full Android 14 (API 34) support added.
    • Android Gradle Plugin upgraded to 8.1.x and Java 17 is now required to build Android apps.
    • 0.73 is the last release supporting Android 5.0 (API 21); the next release will raise the min SDK to 23.
  • New Architecture

    • Bridgeless Mode (experimental) can be enabled to disable the legacy bridge; includes a Native Module Interop Layer and Renderer Interop updates.
  • Breaking changes & tooling

    • Babel packages moved/renamed to @react-native/babel-preset and @react-native/metro-babel-transformer (update deps and Babel config accordingly).
    • Node.js minimum raised to 18.x; template uses TypeScript 5.0; iOS min version raised to 13.4.
    • CLI changes: build-android runs the bundle task by default, metro.config.js updated format required, --configuration/--variant options replaced by --mode.
    • @types/react-native is deprecated — use the built-in types shipped with react-native.

Upgrade Notes

  • Use the React Native Upgrade Helper and follow the Upgrade docs.
  • Update local tooling: Node 18+, Java 17, AGP 8.1.x, and adjust Babel packages.
  • Test debugging flows (Hermes, new debugger) and verify Flipper-based tooling if you rely on Flipper plugins.

Where to look

  • Read the full changelog for a complete list of breaking changes and migration steps.
  • Report New Debugger or New Architecture issues to the New Architecture working group or the discussion thread referenced in the docs.

Full Translation

Translations

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

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

React Native 0.73 — デバッグ改善、安定したシンボリックリンクサポート、その他

Today we're releasing React Native 0.73! このリリースでは、Hermes を使ったデバッグ体験の改善、Metro の安定したシンボリックリンク(symlink)サポート、Android 14 対応、および新しい実験的機能を追加しています。旧来のデバッグ機能の非推奨化も行い、新アーキテクチャの次の柱である Bridgeless Mode(ブリッジなしモード)を公開します。

ハイライト

  • デバッグの改善
  • Metro の安定したシンボリックリンクサポート
  • Android 向け Kotlin テンプレート
  • Android 14 サポート
  • New Architecture の更新
  • 非推奨となったデバッグ機能

デバッグの改善

React Native チームと Hermes チームは、React Native におけるデバッグ体験の改善に取り組んでいます。0.73 では、この継続的な投資から初期の進捗をいくつか提供します。

コンソールログの履歴(Hermes)

console.log() は開発者が JavaScript コードを素早くデバッグするためによく使う方法です。従来のリリースでは、React Native アプリ内のコンソールログはデバッガが接続されるまで記録されないことがあり、アプリロード直後に発生するログの観察が困難でした。React Native 0.73 ではこの問題を解決しました。Hermes はバックグラウンドですべての console.log() 呼び出しをキャプチャし、デバッガが初めて接続されたときに Console タブへ送信します — これはウェブブラウザでのデバッグ体験と同様の挙動です。

この新しい挙動は Flipper、Hermes に接続した Chrome DevTools、および実験的な New Debugger で動作します。

デバッグドキュメントの更新

ドキュメントの「Debugging」セクションを刷新しました。サポートされているデバッガへの接続方法、React DevTools に関する情報、視覚資料の更新を含みます。

実験的な New Debugger

React Native チームは Flipper に代わる新しい JavaScript デバッガ体験に取り組んでおり、React Native 0.73 で Technical Preview を提供します。新しいデバッガはすぐに起動し、Hermes を用いて React Native をデバッグするためにカスタマイズされたシンプルな Chrome DevTools UI を特徴としています。

注: 新しいデバッガは実験的であり、既知の問題があります。これらは将来のリリースで解決に取り組んでいます。試用する場合は、同じディスカッションスレッドでフィードバックを報告してください。ドキュメントでこの体験の有効化方法を確認してください。


Metro における安定したシンボリックリンクサポート

Metro での symlink 解決サポートがデフォルトで有効になりました。シンボリックリンクのサポートにより、watchFolders を設定したモノレポ構成で React Native を利用できるようになります。シンボリックリンクは Metro の内部で深く表現されており、Fast Refresh などの機能と連携し、バンドル中の性能オーバーヘッドは小さいです。シンボリックリンクは Watchman の有無にかかわらず、すべてのデスクトッププラットフォームでサポートされています。

Info: モノレポに関する回避策

モノレポレイアウトで React Native を使用する際にいくつかのエッジケースが残っていることは認識しています。0.73 に間に合わなかった課題に対処する作業を計画しており、できるだけ早く提供することを目指しています。

  • React Native テンプレートプロジェクト(npx react-native init)では、Metro がそれらを検出するために、プロジェクトルート外の watchFolders を構成する必要があります(詳細参照)。
  • react-native 依存が別レベルのフォルダにインストールされている場合、ファイルパスの更新が必要になることがあります。
  • Expo アプリでは、Yarn (Classic) Workspaces のサポートがデフォルトで設定されています。Expo ドキュメントの "Work with monorepos" ガイドも参照してください。

Android の Kotlin テンプレート

0.73 から、Android アプリ向けの推奨言語が Java から Kotlin に変わりました。これは Android エコシステムの方向性に沿ったもので、モダンな言語でアプリを書けるようにします。React Native の Android テンプレートを Java から Kotlin に更新しました。新しい MainActivity.kt と MainApplication.kt はサイズが約 36% 小さくなっています。

Upgrade Helper も .java ファイルから .kt ファイルへの移行を容易にするよう更新されています。プロジェクト内の Java ファイルを以前に変更していて Kotlin への移行をサポートが必要な場合は、Android Studio の Code > Convert Java file to Kotlin File ユーティリティ(ショートカット: Cmd ⌘ + Shift ⇧ + Option ⌥ + K)を利用できます。


Android 14 サポート

React Native を更新し、Android 14 を完全にサポートするようになりました。0.73 から、React Native 開発者は最新の Android SDK バージョン(API Level 34, Upside Down Cake)をターゲットにできます。

Java 17 とAndroid Gradle Plugin のアップグレード

Android 14 をサポートするために、Android アプリをビルドするために使用する Android Gradle Plugin (AGP) を 7.4.x から 8.1.x に更新しました。この AGP のメジャーバージョン上げには一連の破壊的変更が伴い、Google のリリースノート(8.0.0 と 8.1.0)を参照してください。最も重要なのは、Android アプリのビルドに Java 17 が必要になったことです。Java のバージョンを 17 に更新するには次のコマンドを実行してください:

brew install --cask zulu@17

その後、Getting Started ガイドに従って JAVA_HOME を更新してください。

ライブラリ開発者であれば、ライブラリは変更なしで React Native 0.73 と動作するはずです。今年初めに、AGP のバンプがライブラリ作者にとって何を意味するかについての注記を公開しました。

写真・動画への部分的アクセス権付与

Selected Photos Access により、Android 14 ユーザーはアプリにメディアライブラリのすべてではなく特定の項目へのアクセスを許可できます。0.73 では、PermissionsAndroid API の READ_MEDIA_VISUAL_USER_SELECTED 権限を使用することで、この機能をサポートします。

Min SDK の引き上げ

React Native 0.73 は Android 5.0(API Level 21)をサポートする最後のバージョンになります。次のバージョンでは最小 SDK バージョンを 23(Android 6.0)に引き上げます。min SDK 引き上げの今後の変更についての詳細はリンク先を参照してください。


New Architecture の更新

New Architecture を OSS コミュニティ全体に提供する展開を継続しています。React Native 0.68 以降、新しいレンダラ(Fabric)と新しいネイティブモジュールシステム(TurboModules)は実験・評価目的で利用可能でした。これまでのフィードバックに感謝します。

本日、New Architecture のもう一つのピースである Bridgeless Mode を公開します。これまで New Architecture を有効にしてもブリッジは古いコンポーネントやモジュールとの後方互換性を保つために残されていましたが、私たちのビジョンはブリッジを完全に廃止することです。React Native 0.73 からは Bridgeless Mode を有効にするとブリッジの作成自体が無効になります。

Bridgeless Mode と共に、Bridgeless Mode 中に既存のモジュールを再利用できる Native Module Interop Layer を提供します。React Native 0.72 で導入した Renderer Interop Layer も Bridgeless Mode に対応するよう適合されています。

New Architecture の他の部分と同様に、Bridgeless Mode は当初は実験的です。興味のある方は有効化して、New Architecture ワーキンググループに問題や互換性の問題を報告してください。


非推奨となったデバッグ機能

Flipper ↔ React Native 統合

デフォルトの React Native デバッグツールとして Flipper から徐々に離れていきます。0.73 では、React Native に含まれるネイティブ Flipper 統合(Flipper のコアプラグインを接続するブートストラップコード)を非推奨にします。次回のリリースでこの統合と依存を削除する予定であり、その結果 Network プラグインなど Flipper の一部は動作しなくなります。

  • 変更なし: ネイティブアプリデバッグのための独立製品としての Flipper は引き続き存在します。将来 React Native の新規プロジェクトから削除された後でも、開発者が希望すれば手動で Flipper をアプリに追加できます。

なぜ Flipper から離れるかの詳細は RFC を参照してください。

Remote JavaScript Debugging

Remote JavaScript Debugging は、外部のウェブブラウザ(Chrome)をアプリに接続し、JavaScript コードをウェブページ(例: http://localhost:8081/debugger-ui )内で実行するレガシーなデバッグモードです。このモデルはデバッグ中にアプリの挙動が一貫しないことを招く可能性があり、New Architecture の下ではネイティブモジュールと互換性がありません。0.73 では Remote JavaScript Debugging を非推奨とし、Dev Menu から削除しました。リモートデバッガを有効にするには、NativeDevSettings API を介して手動で行う必要があります。手順は Other Debugging Methods のドキュメントに記載されています。

Info: Remote JavaScript Debugging は以前 JavaScriptCore (JSC) を使うアプリのデフォルトデバッグ体験でした。iOS アプリでは Safari Developer Tools(JSC による直接デバッグ)を推奨します。すべてのプラットフォームで一貫したデバッグ体験を得るには Hermes の利用を推奨します。


破壊的変更(Breaking Changes)

Babel パッケージ名変更

Metro から 2 つの Babel 関連パッケージを React Native のリポジトリおよびバージョニングに移動しました。これにより保守とアップグレードが簡素化されます。これらの新しいパッケージは 0.73 の New Architecture 機能をサポートするため、依存関係を更新する必要があります。アップグレードの際は Upgrade Helper を参照して依存関係が正しく更新されていることを確認してください。

一部パッケージ名の変更:

  • metro-react-native-babel-preset -> @react-native/babel-preset
  • metro-react-native-babel-transformer -> @react-native/metro-babel-transformer

Info: @react-native/babel-preset には @react-native/babel-plugin-codegen が含まれるようになったため、Babel 設定で別途指定する必要はありません。

その他の主な破壊的変更

以下は 0.73 の主要な破壊的変更の一部です。完全な一覧はフルチェンジログを参照してください。

  • Node.js の最小要件を 18.x に引き上げ(#37709)(Node.js 16 の EOL も参照)。
  • テンプレートは TypeScript 5.0 を使用するようになりました(#36862)。React Native の型は TypeScript 4.8 でも動作を継続します。
  • Android: Android アプリのビルドに Java 17 が必要になりました(上記参照)。
  • Android: Fresco を 3.0 にメジャーアップデート(#38275)。
  • iOS: 最小 iOS バージョンを 13.4 に引き上げ(#36795)。
  • iOS: Xcode を経由したビルド時に Metro が自動で起動されなくなります(#38242)。

ライブラリ作者向け:

  • Android: AGP を 8.1.1 に引き上げ(discussion)。

React Native CLI の変更

ハイライトされた破壊的変更

  • build-android コマンドでのデフォルトタスクプレフィックスを変更。今後 build-android を実行すると assemble の代わりに bundle タスクが実行されます(#1913)。
  • Metro 設定のデフォルトに対するフォールバック flow を削除しました(#1972)。0.72 以降の更新された metro.config.js フォーマットが 0.73 では必須です。
  • run-ios から --configuration オプションを削除(--mode に置き換え)(#2028)。
  • build-android から --variant オプションを削除(--mode に置き換え)(#2026)。

v12.0.0 のフルチェンジログを参照してください。


@types/react-native の非推奨

First-class Support for TypeScript で述べた通り、0.71 以降 react-native に TypeScript 型定義を同梱しており、0.73 で @types/react-native を非推奨にします。既存バージョンに対する将来のパッチは提供しません。@types/react-native からの移行を推奨します。移行手順はドキュメントを参照してください。


謝辞

React Native 0.73 は 68 名のコントリビュータによる 2259 を超えるコミットを含みます。皆さんの貢献に感謝します!


0.73 へのアップグレード

既存プロジェクトの間で React Native バージョン間のコード差分を確認するには React Native Upgrade Helper を使用し、Upgrading ドキュメントも参照してください。新しいプロジェクトを作成するには次を実行します:

npx react-native@latest init MyProject

Expo を使用している場合、React Native 0.73 は Expo SDK 50 のリリースでサポートされます。

Info: 0.73 は現在の最新の安定版であり、0.70.x 系はサポート対象外になります。詳細は React Native のサポートポリシーを参照してください。