React Native 0.59のリリース
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が遅延ロードするコンポーネントを特定できるようにします。深く多様なコンポーネントアーキテクチャを持つアプリは、最大の改善を目の当たりにするでしょう。
デフォルトでオンにする前に、コミュニティにその機能がどのように機能するかを知らせてもらう必要があります。0.59にアップグレードすると、新しいmetro.config.js
ファイルが作成されます。オプションをtrueに設定して、ご意見をお寄せください! アプリのベンチマークについては、パフォーマンスドキュメントでインラインrequireについて詳しくお読みください。
🚅 Lean Coreが進行中
React Nativeは、複雑なリポジトリを持つ大規模で複雑なプロジェクトです。そのため、コードベースはコントリビューターにとってアプローチしにくく、テストが困難で、開発依存関係として肥大化しています。Lean Coreは、より良い管理のためにコードを別のライブラリに移行することで、これらの問題に対処するための私たちの取り組みです。過去数回のリリースでこの最初のステップが見られましたが、真剣に取り組みましょう。
追加のコンポーネントが正式に非推奨になったことに気づくかもしれません。これは素晴らしいニュースです。これらの機能には現在、積極的に保守している所有者がいるからです。警告メッセージに注意し、これらの機能には新しいライブラリに移行してください。将来のリリースで削除されるからです。以下は、コンポーネント、そのステータス、および移行先を示す表です。
コンポーネント | 非推奨? | 新しいホーム |
---|---|---|
AsyncStorage | 0.59 | @react-native-community/react-native-async-storage |
ImageStore | 0.59 | expo-file-systemまたはreact-native-fs |
MaskedViewIOS | 0.59 | @react-native-community/react-native-masked-view |
NetInfo | 0.59 | @react-native-community/react-native-netinfo |
Slider | 0.59 | @react-native-community/react-native-slider |
ViewPagerAndroid | 0.59 | @react-native-community/react-native-viewpager |
今後数ヶ月で、より多くのコンポーネントがこのパスを辿り、よりスリムなコアへと向かいます。この件についてご協力をお願いしています — lean core umbrellaにぜひご参加ください。
👩🏽💻 CLIの改善
React Nativeのコマンドラインツールは開発者のエコシステムへの入り口ですが、長年の問題があり、公式のサポートが不足していました。CLIツールは新しいリポジトリに移動され、専門のメンテナーグループがすでにいくつかの刺激的な改善を行っています。
ログのフォーマットが大幅に改善されました。コマンドはほぼ瞬時に実行されるようになりました。すぐに違いに気づくでしょう。
🚀 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
コマンドが推奨されます。
🤗 感謝
多くの新しい貢献者が、Flowタイプからのネイティブコード生成の有効化とXcodeの警告の解決に協力してくれました。これらはReact Nativeがどのように機能するかを学び、より大きな利益に貢献する素晴らしい方法です。ありがとうございます! 今後も同様の問題に注意してください。
これらが私たちが注目したハイライトですが、他にも多くの興奮すべき点があります。すべてのアップデートを見るには、チェンジログをご覧ください。0.59は大規模なリリースです。ぜひお試しください。
年末にかけて、さらに多くの改善が予定されています。ご期待ください!