React 18に向けてのプラン

June 8, 2021 by Andrew Clark, Brian Vaughn, Christine Abernathy, Dan Abramov, Rachel Nabors, Rick Hanlon, Sebastian Markbåge, and Seth Webster


React チームより幾つかのお知らせがあります!

  1. 次のメジャーバージョンとなる React 18 リリースに向けての作業を開始しました。
  2. コミュニティが React 18 の新機能を段階的に導入できるようにするため、ワーキンググループを作成しました。
  3. ライブラリの作者が試用してフィードバックを送れるようにするため、React 18 のアルファ版を公開しました。

これらのお知らせは、主にサードパーティのライブラリメンテナ向けです。ユーザ向けのアプリケーションを作成するために React を学んでいる、教えている、あるいは利用している方は、この投稿を無視していただいて問題ありません。もちろん興味があれば React 18 ワーキンググループでの議論をフォローすることは歓迎です!


React 18 の新機能

React 18 のリリース時点で、自動で有効になるパフォーマンス改善(例:自動バッチング)、新たな API(例:startTransition)、そして React.lazy の組み込みサポートを有する新しいストリーミングサーバレンダラが含まれています。

これらは、React 18 で我々が追加しようとしている新たなオプトインのメカニズムのおかげで実現可能になるものです。そのメカニズムとは「並行レンダリング」であり、これにより React は、UI の複数のバージョンを同時に用意しておくことができるようになります。これはほとんどの場面では裏で勝手に行われますが、あなたのアプリの実パフォーマンスおよび体感上のパフォーマンスを向上させる可能性を秘めています。

我々が React の未来に向けて行ってきた様々なリサーチをフォローしてきた方であれば(そうすべきと言っている訳ではないですよ)、“Concurrent Mode” なる言葉を聞いたこと、あるいはそれのせいであなたのアプリが動かなくなるかもしれないということを聞いたことがあるかもしれません。これに関してのコミュニティのフィードバックを受けて、我々は段階的な導入に向けてのアップグレード戦略を再設計しました。イチかゼロかの「モード」の代わりに、並行レンダリングは新機能のどれかを利用するような更新がある場合にのみ有効化されるようになりました。実用上、これはつまり書き換えをせずに React 18 を導入し、自分のペースで React 18 の新機能を試していけるようになるということです。

段階的な導入戦略

React 18 における並行レンダリングはオプトインになるため、コンポーネントの振る舞いにおいてデフォルトで大きな破壊的変更があるということはなくなります。いつものメジャーリリースの時に要する労力と大差ないレベルの最小限の書き換えで、あるいは書き換えゼロで、React 18 にアップグレードすることができます。我々がいくつかのアプリを React 18 に移植した経験から、多くのユーザは半日以内にアップグレード作業を完了できるだろうと考えています。

Facebook 内では既に数万のコンポーネントを並行レンダリングの機能を用いてリリースすることができました。我々の経験ではほとんどの React コンポーネントは追加の開発なしで「ごく普通に」動作することが分かっています。しかしコミュニティ全体で今回のアップグレードが確実にスムースに行くようにしたいと考えており、そのために本日、React 18 ワーキンググループを発表します。

コミュニティとの共同作業

このリリースで、私たちは新たな試みをしようとしています。React コミュニティ全体から、少数のエキスパート、開発者、ライブラリ作者、教育関係者を React 18 ワーキンググループに招待して、フィードバックをもらったり、質問をもらったり、リリースに向けての共同作業を行ってもらったりしているのです。初期は小さなグループであり、メンバーとして我々が望む全員を招待することはできませんでしたが、この試みがうまくいけば、将来的により多くの人を招待できると考えています!

React 18 ワーキンググループの目的は、既存のアプリケーションやライブラリが React 18 をスムースかつ段階的に採用できるように、エコシステムを整えることです。ワーキングループは GitHub Discussions でホストされており、誰でも読めるようになっています。ワーキンググループのメンバーのみがフィードバックを送ったり、質問したり、アイディアを共有したりできるようになっています。このディスカッション用のリポジトリは、コアチームのメンバーも研究の成果を共有するために使用します。安定リリースが近づけば、あらゆる重要な情報はこのブログにも投稿されます。

React 18 へのアップグレードに関する詳細やリリースに関するその他の情報については、React 18 アナウンスをご覧ください。

ワーキンググループへのアクセス方法

React 18 ワーキンググループのリポジトリでのディスカッションは、誰でも閲覧可能です。

当初はワーキンググループ内部で一気に興味が高まることが予想されますので、招待されたメンバーのみがスレッドを作成したりコメントしたりできるようになっています。しかしスレッドは誰でも見えるようになっていますので、全員が同じ情報にアクセスできます。ワーキンググループのメンバーにとって生産的な環境を整えつつ、より広いコミュニティへの透明性も確保するという意味で、これが良い落とし所だと考えています。

もちろんこれまで通り、バグレポートや質問や一般的なフィードバックについては誰でもイシュートラッカに投稿することができます。

React 18 アルファ版を今すぐ試す

新しいアルファ版は npm に @alpha タグ付きで定期的に公開されます。これらのリリースは我々のメインリポジトリにある最新のコミットを使ってビルドされます。新しい機能やバグ修正がマージされた場合、次の平日にはアルファ版で利用可能になります。

アルファ版同士の間では動作や API について大きな変更が加わる可能性があります。ユーザが利用する本番用アプリケーションではアルファ版は推奨されないということを銘記してください。

React 18 リリースタイミングの見通し

具体的に予定されたリリース日時はまだありませんが、React 18 が本番アプリケーションで使えるようになるまでに、フィードバックを受けて改善を繰り返す期間が数か月ほど必要だろうと考えています。

  • ライブラリ作者向けのアルファ:本日より利用可能
  • 公開ベータ:少なくとも数か月後
  • リリース候補 (RC):ベータから少なくとも数週間後
  • 一般向けリリース:RC から少なくとも数週間後

リリースタイミングの見通しについての更なる詳細はワーキンググループ内の投稿で見ることができます。公開リリースが近づいたらこのブログでも情報をお伝えします。