メインコンテンツへスキップ

React Native 0.59のリリース

·7分で読めます
Ryan Turner
コアメンテナー & React Native開発者

React Native 0.59のリリースへようこそ!これは、88人の貢献者による644のコミットを含む、もう1つの大規模なリリースです。貢献は他の形でも行われているため、問題の維持、コミュニティの育成、React Nativeに関する指導に感謝いたします。今月は待望の変更がいくつか行われ、皆様に楽しんでいただければ幸いです。

🎣 Hooksが登場

React Hooksはこのリリースの一部であり、コンポーネント間でステートフルなロジックを再利用できます。Hooksについては多くの話題がありますが、まだ聞いたことがない場合は、以下の素晴らしいリソースをご覧ください。

  • Hooksの紹介では、なぜReactにHooksを追加するのかを説明しています。
  • Hooksの概要では、組み込みHooksの概要を素早く説明しています。
  • 独自のHooksの構築では、カスタムHooksによるコードの再利用を示しています。
  • React Hooksを理解するでは、Hooksによって開かれた新しい可能性を探求しています。
  • useHooks.comでは、コミュニティが管理するHooksのレシピとデモを紹介しています。

ぜひご自身のアプリでお試しください。私たちと同じくらい、再利用性にワクワクしていただけることを願っています。

📱 JSCの更新により、Androidでのパフォーマンス向上と64ビットサポートが実現

React Nativeは、アプリケーションの動作にJSC(JavaScriptCore)を使用しています。Android版のJSCは数年前のものであり、多くの最新JavaScript機能がサポートされていませんでした。さらに悪いことに、iOSの最新JSCと比較してパフォーマンスが劣っていました。このリリースで、それらすべてが変わります。

@DanielZlotin@dulmandakh@gengjiawen@kmagiera、および@kudoの素晴らしい努力のおかげで、JSCはこの数年間の進歩に追いつきました。これにより、64ビットサポート、最新JavaScriptサポート、そして大幅なパフォーマンス改善が実現しました。将来のWebKitの改善を少ない労力で活用できる、維持可能なプロセスを構築してくれたことにも感謝します。また、この作業を可能にしてくれたSoftware MansionとExpoにも感謝します。

💨 インラインrequireでアプリの起動を高速化

私たちは、デフォルトでパフォーマンスの高いReact Nativeアプリを開発できるよう支援し、Facebookの最適化をコミュニティに提供することに取り組んでいます。アプリケーションは、起動を遅らせるのではなく、必要に応じてリソースをロードします。この機能は「インラインrequire」と呼ばれ、Metroが遅延ロードするコンポーネントを識別できるようにします。深く多様なコンポーネントアーキテクチャを持つアプリは、最も改善を実感できるでしょう。

source of the metro.config.js file in the 0.59 template, demonstrating where to enable inlineRequires

この機能をデフォルトで有効にする前に、コミュニティにその動作を知らせてもらう必要があります。0.59にアップグレードすると、新しいmetro.config.jsファイルが作成されます。オプションをtrueに設定して、ご意見をお聞かせください!アプリをベンチマークするには、パフォーマンスドキュメントでインラインrequireの詳細をご覧ください。

🚅 Lean Coreが進行中

React Nativeは、複雑なリポジトリを持つ大規模で複雑なプロジェクトです。これにより、コードベースがコントリビューターにとって扱いにくく、テストが困難になり、開発依存関係として肥大化しています。Lean Coreは、これらの問題に対処するため、より良い管理のためにコードを別のライブラリに移行する取り組みです。過去数回のリリースでその第一歩が踏み出されましたが、本腰を入れて取り組む時が来ました。

追加のコンポーネントが正式に非推奨になったことに気づかれるかもしれません。これは素晴らしいニュースです。なぜなら、これらの機能のアクティブなメンテナーが今やいるからです。警告メッセージに注意し、これらの機能には新しいライブラリに移行してください。なぜなら、それらは将来のリリースで削除されるからです。以下に、コンポーネント、そのステータス、そして移行先の場所を示す表を示します。

今後数ヶ月で、より多くのコンポーネントがこのパスに従ってよりスリムなコアに移行する予定です。これに関するご協力を求めています — ぜひリーンコアの包括的なイシューにご協力ください。

👩🏽‍💻 CLIの改善

React Nativeのコマンドラインツールは開発者にとってエコシステムへの入り口ですが、長年の問題があり、公式サポートが不足していました。CLIツールは新しいリポジトリに移動され、専任のメンテナーグループがすでにいくつかの素晴らしい改善を行っています。

ログのフォーマットが大幅に改善されました。コマンドはほぼ瞬時に実行されるようになりました。すぐに違いに気づくでしょう。

0.58's CLI is slow to start0.58's CLI is nearly instantaneous

🚀 0.59へのアップグレード

React Nativeのアップグレードプロセスに関するフィードバックをいただきましたので、今後のリリースでのエクスペリエンスを改善するための措置を講じています。0.59にアップグレードするには、rn-diff-purgeを使用して、現在のReact Nativeバージョンと0.59の間で何が変更されたかを特定し、それらの変更を手動で適用することをお勧めします。プロジェクトを0.59にアップグレードすると、新しく改善されたreact-native upgradeコマンド(rn-diff-purgeベース!)を使用して、新しいリリースが利用可能になったときに0.60以降にアップグレードできるようになります。

🔨 破壊的変更

0.59のAndroidサポートはGoogleの最新推奨事項に従って整理され、既存のアプリに潜在的な破損をもたらす可能性があります。この問題は、実行時クラッシュとして「このアクティビティではTheme.AppCompatテーマ(またはその子孫)を使用する必要があります」というメッセージで表示される場合があります。プロジェクトのAndroidManifest.xmlファイルを更新し、android:themeの値がAppCompatテーマ(例:@style/Theme.AppCompat.Light.NoActionBar)であることを確認することをお勧めします。

react-native-git-upgradeコマンドは0.59で削除され、新しく改良されたreact-native upgradeコマンドが推奨されます。

🤗 感謝

多くの新しいコントリビューターがフロー型からのネイティブコード生成を有効にすることやXcodeの警告を解決することに協力してくれました。これらはReact Nativeの動作を学び、より大きな善に貢献する素晴らしい方法です。ありがとうございました!今後も同様の問題に注目してください。

これらが私たちが注目したハイライトですが、他にも多くの興奮すべき点があります。すべてのアップデートを見るには、チェンジログをご覧ください。0.59は大規模なリリースです。ぜひお試しください。

年末にかけて、さらに多くの改善が予定されています。ご期待ください!

RyanReact Nativeコアチーム一同