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 |
今後数ヶ月で、さらに多くのコンポーネントがこの道をたどってコアをスリム化する予定です。この取り組みにご協力いただける方を募集しています。リーンコアアンブレラをご覧ください。
👩🏽💻 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の最新の推奨事項に従ってクリーンアップされており、既存のアプリに潜在的な破損を引き起こす可能性があります。この問題は、ランタイムクラッシュと「You need to use a Theme.AppCompat theme (or descendant) with this activity」というメッセージとして現れる可能性があります。プロジェクトの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は大規模なリリースです。ぜひお試しください。
年末にかけて、さらに多くの改善が予定されています。ご期待ください!