| 反応する | |
|---|---|
| 原作者 | ジョーダン・ウォーク |
| 開発者 | メタとコミュニティ |
| 初回リリース | 2013年5月29日[ 1 ] [ 2 ] (2013年5月29日) |
| 安定リリース | |
| プレビューリリース | |
| リポジトリ | |
| 書かれた | JavaScript |
| プラットフォーム | ウェブプラットフォーム |
| タイプ | JavaScriptライブラリ |
| ライセンス | MITライセンス |
| Webサイト | https://react.dev/ |
React(React.jsまたはReactJSとも呼ばれる)は、コンポーネントに基づくユーザーインターフェースの構築をより「シームレス」にする目的で開発された、無料のオープンソースのフロントエンドJavaScriptライブラリです。 [ 5 ] [ 6 ] 。 [ 5 ] Meta(旧Facebook)と個人の開発者や企業のコミュニティによってメンテナンスされています。 [ 7 ] [ 8 ] [ 9 ] 2025年のStack Overflow開発者調査によると、Reactは最もよく使われているウェブ技術の1つです。[ 10 ]
Reactは、 Next.jsやReact Routerなどのフレームワークを使用して、シングルページ、モバイル、またはサーバーレンダリングアプリケーションの開発に使用できます。ReactはユーザーインターフェースとDOMへのコンポーネントのレンダリングのみを扱うため、Reactアプリケーションはルーティングやその他のクライアントサイド機能のためにライブラリに依存することがよくあります。 [ 11 ] [ 12 ] Reactの主な利点は、ページの変更された部分のみを再レンダリングし、変更されていないDOM要素の不要な再レンダリングを回避することです。Reactは、推定で全ウェブサイトの6%で使用されています。[ 13 ]
Reactは宣言型プログラミングパラダイムに準拠しています。[ 14 ] [ 15 ] : 76 開発者はアプリケーションの各状態に対してビューを設計し、Reactはデータが変更されるとコンポーネントを更新してレンダリングします。これは命令型プログラミングとは対照的です。[ 16 ]
Reactコードはコンポーネントと呼ばれるエンティティで構成されています。[ 15 ]:10~12 これらのコンポーネントはモジュール化されており、再利用できます。[ 15 ]:70React アプリケーションは通常、多くのレイヤーのコンポーネントで構成されています。コンポーネントはReact DOMライブラリを使用してDOMのルート要素にレンダリングされます。コンポーネントをレンダリングする際、値はprops(「プロパティ」の略)を介してコンポーネント間で受け渡されます。コンポーネント内部の値は状態と呼ばれます。[ 17 ]
Reactでコンポーネントを宣言する主な方法は、関数コンポーネントとクラスコンポーネントの2つです。[ 15 ]:118 [ 18 ]:10React v16.8以降では、関数コンポーネントの使用が推奨されています。
React Conf 2018で発表され、React v16.8以降で利用可能な関数コンポーネントは、単一の「props」引数を受け取りJSXを返す関数で宣言されます。関数コンポーネントは、useStateフックを使用して内部状態を使用できます。 [ 19 ]
2019年2月16日、React 16.8が一般公開され、React Hooksが導入されました。[ 19 ] Hooksは、開発者が関数コンポーネントからReactの状態とライフサイクル機能を「フック」できるようにする関数です。[ 20 ]注目すべきは、Hooksはクラス内では動作しないことです。開発者はクラスなしでReactのより多くの機能を利用できるようになります。[ 21 ]
ReactはuseState、[ 22 ] [ 18 ] : 37 useContext、[ 15 ] : 11 、 [ 22 ] [ 18 ] : 12、[ 15 ] : 92 useReducer、[ 22 ] [ 18 ] : 65–66 、[ 15 ] : 154、[ 22 ] [ 18 ] : 162、[ 23 ] [ 18 ] : 93–95その他のフックについては 、フックAPIリファレンスに記載されています。[ 24 ] [ 15 ] : 62 最もよく使用されるとは、それぞれ状態[ 15 ] : 37 と副作用、[ 15 ] : 61 を制御するために使用されます。 useMemouseEffectuseStateuseEffect
フックには2つのルールがあり[ 25 ]、フックが依存する特徴的なコードパターンを説明しています。
これらのルールは実行時に強制することはできませんが、リンターなどのコード解析ツールを設定すれば、開発中に多くのミスを検出できます。これらのルールは、フックの使用と、他のフックを呼び出す可能性のあるカスタムフック[ 26 ]の実装の両方に適用されます。
React Server Components(RSC)[ 27 ]は、サーバー上でのみ実行される関数コンポーネントです。この概念は、「サーバーコンポーネントによるデータ取得」という講演で初めて紹介されました。[ 28 ]現在、サーバーコンポーネントはNext.js で最も簡単に利用できます。Next.jsでは、サーバーとクライアント(ブラウザ)の両方のコンポーネントを記述できます。サーバーでレンダリングされたコンポーネントがブラウザで受信されると、ブラウザのReactが処理を引き継ぎ、仮想DOMを作成し、イベントハンドラをアタッチします。これはハイドレーションと呼ばれます。[ 29 ]
サーバーサイドレンダリング( RSC)と似た概念ですが、RSCはハイドレーションが発生しないため、対応するJavaScriptをクライアントに送信しません。そのため、フックにアクセスできません。ただし、非同期関数として実装することで、非同期操作を直接実行できます。
非同期関数MyComponent () {const message = fetchMessageFromDb ()を待機します。戻る(< div >メッセージ: { message } div >);}クラスコンポーネントはES6クラスを使用して宣言されます。関数コンポーネントと同じように動作しますが、状態とライフサイクルイベントの管理にフックを使用する代わりに、React.Component基底クラスのライフサイクルメソッドを使用します。
ParentComponentクラスはReact.Componentを拡張します。状態= {色: '緑' };与える(){戻る(< ChildComponent の色= { this . state . color } />);}}2019 年 2 月に React 16.8 で React Hooks が導入されたことで、開発者は関数コンポーネント内の状態とライフサイクルの動作を管理できるようになり、クラス コンポーネントへの依存が軽減されました。
この傾向は、関数型プログラミングとモジュール設計への業界全体の動きと一致しています。Reactが進化を続けるにつれ、開発者は新しいアプリケーションを構築したり、既存のアプリケーションをリファクタリングしたりする際に、関数型コンポーネントとReact Hooksの利点を考慮することが不可欠になります。[ 30 ]
React自体にはルーティングのサポートが組み込まれていません。Reactは主にユーザーインターフェースを構築するためのライブラリであり、すぐに使える本格的なルーティングソリューションは含まれていません。Reactアプリケーションでは、React Routerなどのサードパーティ製ライブラリを使用してルーティングを処理できます。[ 31 ]これにより、開発者はルートの定義、ナビゲーションの管理、URLの変更処理をReactに適した方法で行うことができます。

もう一つの注目すべき機能は、仮想ドキュメントオブジェクトモデル(仮想DOM)の使用です。ReactはブラウザのDOMに似たメモリ内データ構造を作成します。コンポーネントがレンダリングされるたびに、その結果は仮想DOMと比較されます。そして、計算された差分のみを使用して、ブラウザに表示されるDOMを効率的に更新します。[ 32 ]このプロセスは調整と呼ばれます。これにより、プログラマーは変更のたびにページ全体がレンダリングされるかのようにコードを記述できますが、Reactは実際に変更されたコンポーネントのみをレンダリングします。この選択的なレンダリングは、パフォーマンスを大幅に向上させます。[ 33 ] [ 34 ]
ReactDOM.render[ 35 ]が同じコンポーネントとターゲットに対して再度呼び出されると、Reactは仮想DOMの新しいUI状態を表現し、リビングDOMのどの部分(もしあれば)を変更する必要があるかを判断します。[ 36 ]

クラスベースのコンポーネントのライフサイクル メソッドは、コンポーネントの有効期間中に設定されたポイントでコードを実行できるようにする フック形式を使用します。
ShouldComponentUpdateレンダリングが不要な場合に false を返すことで、開発者はコンポーネントの不要な再レンダリングを防ぐことができます。componentDidMountコンポーネントが「マウント」されると(コンポーネントはユーザーインターフェースに作成され、多くの場合DOMノードに関連付けられます)、呼び出されます。これは通常、 APIを介してリモートソースからデータの読み込みをトリガーするために使用されます。componentDidUpdate更新が行われた直後に呼び出されます。[ 37 ]componentWillUnmountコンポーネントが破棄される、つまり「アンマウント」される直前に呼び出されます。これは通常、コンポーネントのアンマウントでは単純に削除されない、コンポーネントへのリソースを大量に消費する依存関係をクリアするために使用されます(例えば、setInterval()コンポーネントに関連するインスタンスや、コンポーネントの存在によって「ドキュメント」に設定された「eventListener」を削除するなど)。renderは最も重要なライフサイクルメソッドであり、どのコンポーネントでも唯一必須のメソッドです。通常、コンポーネントの状態が更新されるたびに呼び出され、その更新はユーザーインターフェースに反映されます。JSX、または JavaScript XML は、JavaScript 言語構文の拡張です。[ 38 ]見た目は HTML に似ていますが[ 15 ] : 11 JSX は、多くの開発者に馴染みのある構文を使用してコンポーネントのレンダリングを構造化する方法を提供します[ 15 ] : 15 。React コンポーネントは通常 JSX を使用して記述されますが、必ずしも JSX である必要はありません (コンポーネントは純粋な JavaScript で記述することもできます)。コンパイル中に、JSX は JavaScript コードに変換されます。JSX は、Facebook がPHP用に作成したXHPと呼ばれる別の拡張構文に似ています。
JSX コードの例:
function Example () { // 新しい状態変数を宣言します。これを「count」と呼びます。const [ count , setCount ] = useState ( 0 ) ;return ( < div > < p > { count }回クリックしました< / p > < button onClick = {() => setCount ( count + 1 )}>クリックしてください</ button > </ div > ); }Reactの基本アーキテクチャは、ブラウザでのHTMLレンダリングだけにとどまりません。例えば、Facebookは<canvas>タグにレンダリングされる動的なチャートを提供しており[ 39 ]、NetflixとPayPalはユニバーサルロードを使用してサーバーとクライアントの両方で同一のHTMLをレンダリングしています[ 40 ] 。 [ 41 ] Reactは、 React Nativeを使用してAndroidとiOS向けのネイティブアプリを開発するためにも使用できます。
サーバーサイドレンダリング(SSR)とは、クライアント側のJavaScriptアプリケーションをブラウザではなくサーバー上でレンダリングするプロセスを指します。[ 42 ]これにより、特に低速接続や低速デバイスを使用しているユーザーにとって、アプリケーションのパフォーマンスが向上します。[ 43 ]
SSRでは、クライアントに送信される最初のHTMLには、アプリケーションの完全にレンダリングされたUIが含まれます。[ 44 ]これにより、クライアントのブラウザは、JavaScriptがダウンロードされて実行されるまで待ってからUIをレンダリングする必要がなく、すぐにUIを表示できます。[ 44 ]
ReactはSSRをサポートしており、開発者はReactコンポーネントをサーバー上でレンダリングし、結果のHTMLをクライアントに送信することができます。[ 45 ]これは、アプリケーションのパフォーマンスを向上させるだけでなく、検索エンジンの最適化にも役立ちます。[ 46 ]
Reactは完全なアプリケーションライブラリを提供することを目指していません。ユーザーインターフェースの構築に特化して設計されているため[ 5 ]、一部の開発者がアプリケーション構築に必要と考えるツールの多くは含まれていません。そのため、ネットワークアクセスやローカルデータストレージなどのタスクを実行するために、開発者は好みのライブラリを選択できます。ライブラリが成熟するにつれて、一般的な使用パターンが生まれてきました。
Reactの単方向データフローの概念( AngularJSの双方向フローとは対照的かもしれない)をサポートするために、一般的なモデル・ビュー・コントローラアーキテクチャの代替としてFluxアーキテクチャが開発されました。Fluxは、中央ディスパッチャを介してストアに送信されるアクションを特徴としており、ストアへの変更はビューに伝播されます。[ 47 ] Reactで使用する場合、この伝播はコンポーネントプロパティを通じて実現されます。Fluxは、その構想以来、 ReduxやMobXなどのライブラリに取って代わられてきました。[ 48 ]
フラックスは観察者パターンの変種と考えることができる。[ 49 ]
Fluxアーキテクチャに基づくReactコンポーネントは、渡されたプロパティを直接変更するのではなく、ディスパッチャからストアを変更するために送信されるアクションを作成するコールバック関数を渡す必要があります。アクションは、何が起こったかを記述する役割を持つオブジェクトです。例えば、あるユーザーが別のユーザーを「フォロー」するアクションには、ユーザーID、ターゲットユーザーID、およびタイプが含まれます。[ 50 ]ストアはモデルと考えることができ、ディスパッチャから受信したアクションに応じて自身を変更できます。 USER_FOLLOWED_ANOTHER_USER
このパターンは、「プロパティは下向きに流れ、アクションは上向きに流れる」と表現されることがあります。Fluxの実装は誕生以来数多く開発されてきましたが、おそらく最もよく知られているのはReduxでしょう。Reduxは単一のストア(しばしば「単一の真実の源」と呼ばれます)を備えています。[ 51 ]
2019年2月、React 16.8リリースでフックuseReducerとして導入されました。Reduxと一貫性のあるAPIを提供し、開発者はコンポーネントの状態に対してローカルなRedux風のストアを作成できます。[ 52 ]
ReactはMetaのソフトウェアエンジニアであるJordan Walkeによって開発されました。彼は当初「F-Bolt」 [ 53 ]というプロトタイプを開発し、後に「FaxJS」に改名しました。この初期バージョンはJordan WalkeのGitHubリポジトリに文書化されています。[1]このプロジェクトに影響を与えたものには、PHP用のHTMLコンポーネントライブラリであるXHPが含まれています。
Reactは2011年にFacebookのニュースフィードに初めて導入され、その後2012年にInstagramに統合されました。 [ 54 ] 2013年5月のJSConf USで、プロジェクトは正式にオープンソース化され、その採用と成長における重要な転換点となりました。[2]
React によるネイティブAndroid、iOS、UWP開発を可能にするReact Native は、2015 年 2 月に Facebook の React Conf で発表され、2015 年 3 月にオープンソース化されました。
2017年4月18日、FacebookはReactの旧レンダリングアルゴリズム「Stack」に代わる、レンダリングのための新しい内部アルゴリズムセット「React Fiber」を発表しました。[ 55 ] React Fiberは、Reactライブラリの将来の改良と機能開発の基盤となることになりました。[ 56 ] Reactプログラミングの構文自体は変更されておらず、構文の実行方法のみが変更されています。[ 57 ] Reactの旧レンダリングシステム「Stack」は、動的な変化へのシステムの重点が理解されていなかった時代に開発されました。例えば、Stackは複雑なアニメーションの描画に時間がかかり、すべてを一度に実行しようとしていました。Fiberはアニメーションを複数のフレームに分散できるセグメントに分割します。同様に、ページの構造も個別に保守・更新できるセグメントに分割できます。JavaScript関数と仮想DOMオブジェクトは「ファイバー」と呼ばれ、それぞれを個別に操作・更新できるため、画面上のレンダリングがよりスムーズになります。[ 58 ]
2017年9月26日、React 16.0が一般公開されました。[ 59 ] React 16.0では、子ツリーのどこでもJavaScriptエラーをキャッチし、アプリをクラッシュさせる代わりにフォールバックUIをレンダリングする新しいコンポーネントタイプであるエラー境界が導入されました。[ 60 ]
2020年10月20日、ReactチームはReact v17.0をリリースしました。これは、React開発者向けAPIに大きな変更がない最初のメジャーリリースとして注目に値します。[ 61 ]
2022年3月29日、React 18がリリースされ、新しい並行レンダラー、自動バッチ処理、サスペンスによるサーバーサイドレンダリングのサポートが導入されました。[ 62 ] React 18ではInternet Explorer 11のサポートが廃止されました。[ 63 ]
2024年12月5日、React 19がリリースされました。このリリースでは、Actionsが導入され、保留状態、エラー、楽観的更新を手動で処理するのではなく、非同期関数を使用して状態更新プロセスを簡素化できるようになりました。React 19には、サーバーコンポーネントのサポートと静的サイト生成の改善も含まれています。[ 64 ]
2025年10月、MetaはReact、React Native、JSX(JavaScript XML )をLinux Foundationの一部である新しいReact Foundationに寄贈すると発表した。[ 65 ]
2025年11月29日、React2Shellとも呼ばれる脆弱性CVE-2025-55182が報告され、リモートコード実行が可能となりました。CVSSスコアは最高値の10.0でした。 [ 66 ] [ 67 ]バージョン19.0.1、19.1.2、19.2.1で修正が導入されました。[ 68 ]
2025年12月11日、ReactチームはReact Server Componentsにおける追加の脆弱性を公開しました。サービス拒否問題(CVE-2025-55184およびCVE-2025-67779、CVSS 7.5)とソースコード露出問題(CVE-2025-55183、CVSS 5.3)です。[ 69 ] [ 70 ] [ 71 ] [ 72 ] [ 73 ]修正はバージョン19.0.3、19.1.4、19.2.3にバックポートされました。[ 74 ]
| バージョン | 発売日 | 変更点 |
|---|---|---|
| 0.3.0 | 2013年5月29日 | 初回公開リリース |
| 0.4.0 | 2013年7月20日 | コメント ノードのサポート<div>{/* */}</div>、サーバー側レンダリング API の改善、React.autoBind の削除、key プロパティのサポート、フォームの改善、バグの修正。 |
| 0.5.0 | 2013年10月20日 | メモリ使用量の改善、Selection および Composition イベントのサポート、mixin での getInitialState および getDefaultProps のサポート、React.version および React.isValidClass の追加、Windows との互換性の向上。 |
| 0.8.0 | 2013年12月20日 | 行と列、遅延と非同期、ループ、自動修正属性のサポートを追加しました<audio>。onContextMenu<video>イベントを追加しました。jstransformとesprima-fbツールをアップグレードしました。browserifyをアップグレードしました。 |
| 0.9.0 | 2014年2月20日 | crossOrigin、download、hrefLang、mediaGroup、muted、sandbox、seamless、srcDoc、scope 属性のサポートが追加されました。React.PropTypes に any、arrayOf、component、oneOfType、renderable、shape が追加されました。onMouseOver および onMouseOut イベントのサポートが追加されました。<img>要素の onLoad および onError のサポートが追加されました。 |
| 0.10.0 | 2014年3月21日 | srcSet および textAnchor 属性のサポートが追加され、不変データの更新関数が追加され、すべての void 要素に閉じタグが挿入されないようになりました。 |
| 0.11.0 | 2014年7月17日 | SVG サポートの改善、e.view イベントの正規化、$apply コマンドの更新、名前空間のサポートの追加、新しい transformWithDetails API の追加、dist/ の下に事前構築されたパッケージの追加、MyComponent() がインスタンスではなく記述子を返すようになりました。 |
| 0.12.0 | 2014年11月21日 | 新機能の追加、this.transferPropsTo を廃止するために導入されたスプレッド演算子 ({...})、acceptCharset、classID、マニフェスト HTML 属性のサポートの追加、API に React.addons.batchedUpdates の追加、@jsx React.DOM は不要になった、CSS トランジションの問題を修正しました。 |
| 0.13.0 | 2015年3月10日 | 0.12 で警告された非推奨のパターンは動作しなくなり、参照解決の順序が変更され、プロパティ this._pendingState と this._rootNodeID が削除され、ES6 クラスがサポートされ、API React.findDOMNode(component) が追加され、イテレータと immutable-js シーケンスがサポートされ、新機能 React.addons.createFragment が追加され、React.addons.classSet が非推奨になりました。 |
| 15.0.0 | 2016年4月7日 | 初期レンダリングでは HTML を生成する代わりに document.createElement を使用するようになりました。余分な<span>s はなくなり、SVG サポートが改善され、ReactPerf.getLastMeasurements()不透明になりました。警告とともに新しい非推奨が導入され、複数の小さなメモリ リークが修正され、React DOM では cite および profile HTML 属性と cssFloat、gridRow、gridColumn CSS プロパティがサポートされるようになりました。 |
| 15.1.0 | 2016年5月20日 | バッチ処理のバグを修正し、最新のオブジェクト割り当ての使用を確実にし、回帰を修正し、マージ ユーティリティの使用を削除し、いくつかのモジュールの名前を変更しました。 |
| 15.2.0 | 2016年7月1日 | コンポーネント スタック情報を追加、マウント時にプロパティの検証を停止、React.PropTypes.symbol を追加、要素に onLoad 処理<link>と onError 処理を追加<source>、isRunning()API を追加、パフォーマンスの低下を修正。 |
| 15.3.0 | 2016年7月30日 | React.PureComponent を追加、ネストされたサーバー レンダリングの問題を修正、SVG 属性をサポートするために xmlns、xmlnsXlink を追加、HTML 属性に referrerPolicy を追加、React Perf アドオンを更新、ref の問題を修正。 |
| 15.4.0 | 2016年11月16日 | React パッケージとブラウザ ビルドには React DOM が含まれなくなり、開発パフォーマンスが向上し、不定期に発生するテストの失敗が修正され、batchedUpdates API、React Perf が更新されましたReactTestRenderer.create()。 |
| 15.5.0 | 2017年4月7日 | react-dom/test-utils を追加、peerDependencies を削除、Closure Compiler の問題を修正、React.createClass および React.PropTypes の非推奨警告を追加、Chrome のバグを修正しました。 |
| 15.6.0 | 2017年6月13日 | スタイル属性とグリッド スタイル プロパティの CSS 変数のサポートを追加し、React に依存するアドオンの AMD サポートを修正し、不要な依存関係を削除し、React.createClass および React.DOM ファクトリー ヘルパーの非推奨警告を追加します。 |
| 16.0.0 | 2017年9月26日 | 「エラー境界」の導入によるエラー処理の改善、React DOM で非標準属性の受け渡しが可能、setState の動作に小さな変更、react-with-addons.js ビルドの削除、create-react-class として React.createClass を追加、prop-types として React.PropTypes を追加、react-dom-factories として React.DOM を追加、スケジュールおよびライフサイクル メソッドの動作の変更。 |
| 16.1.0 | 2017年11月9日 | Bower リリースの廃止、UMD ビルドでの偶発的な追加グローバル変数の修正、onMouseEnter および onMouseLeave の発動の修正、<textarea> プレースホルダーの修正、未使用コードの削除、不足している package.json 依存関係の追加、React DevTools のサポートの追加。 |
| 16.3.0 | 2018年3月29日 | 正式にサポートされている新しいコンテキスト API を追加し、新しいパッケージを追加して、SSR でポータルをレンダリングしようとするときに無限ループを防止し、this.state の問題を修正し、IE/Edge の問題を修正しました。 |
| 16.4.0 | 2018年5月24日 | ポインター イベント仕様のサポートを追加、propTypes を指定する機能を追加、読み取りコンテキストを修正、getDerivedStateFromProps()サポートを修正、testInstance.parent クラッシュを修正、パフォーマンスを測定するための React.unstable_Profiler コンポーネントを追加、内部イベント名を変更します。 |
| 16.5.0 | 2018年9月5日 | React DevTools Profiler のサポートを追加し、より多くのエッジ ケースでエラーを適切に処理し、react-dom/profiling を追加し、ブラウザーの onAuxClick イベントを追加し、マウス イベントに movementX および movementY フィールドを追加し、ポインター イベントに tangentialPressure および twist フィールドを追加します。 |
| 16.6.0 | 2018年10月23日 | contextType のサポートを追加、優先レベル、継続、ラップされたコールバックをサポート、フォールバック メカニズムを改善、iOS Safari のグレーのオーバーレイを修正、React.lazy()コード分割コンポーネントを追加します。 |
| 16.7.0 | 2018年12月20日 | 遅延ロードされたコンポーネントの React.lazy のパフォーマンスを修正し、メモリ リークを回避するためにアンマウント時にフィールドをクリアし、SSR のバグを修正し、パフォーマンスの低下を修正しました。 |
| 16.8.0 | 2019年2月6日 | フックを追加し、更新ReactTestRenderer.act()をReactTestUtils.act()バッチ処理するために追加し、React.lazy() に渡される同期 thenable をサポートし、useReducer フックの遅延初期化 API を改善します。 |
| 16.9.0 | 2019年8月9日 | プログラムでパフォーマンス測定を収集するためのReact.Profiler APIを追加しました。unstable_ConcurrentModeを削除し、unstable_createRootを導入しました。 |
| 16.10.0 | 2019年9月27日 | フックの更新がメモ化されないエッジケースを修正しました。更新中に誤ってハイドレートしないように、ハイドレートのタイミングを決定するヒューリスティックを修正しました。メモリを節約するため、アンマウント時に追加のファイバーフィールドをクリアしました。Firefoxの必須テキストフィールドに関するバグを修正しました。インラインポリフィルではなく、Object.is が利用可能な場合はそれを優先します。サスペンスとエラー処理を混在させる際のバグを修正しました。 |
| 16.11.0 | 2019年10月22日 | ネストされたReactコンテナ内でmouseEnterハンドラが2回実行される問題を修正しました。unstable_createRootおよびunstable_createSyncRootの試験的APIを削除しました。(これらはExperimentalチャンネルでcreateRootおよびcreateSyncRootとして利用可能です。) |
| 16.12.0 | 2019年11月14日 | React DOM –useEffectマルチルートアプリでパッシブエフェクト()が発動しない問題を修正。React Is –および型がコンポーネントではなく要素 lazyとみなされる問題を修正memo |
| 16.13.0 | 2020年2月26日 | React Concurrent モードに機能が追加されました。React コアライブラリと React Dom の回帰を修正しました。 |
| 16.14.0 | 2020年10月14日 | 新しい JSX 変換のサポートを追加します。 |
| 17.0.0 | 2020年10月20日 | 「新機能なし」を選択すると、Reactの旧バージョンからの段階的なアップデートが可能になります。新しいJSXトランスフォームの追加、イベントデリゲーションの変更など |
| 18.0.0 | 2022年3月29日 | 並行React、自動バッチ処理、新しいサスペンス機能、トランジション、クライアントとサーバーのレンダリングAPI、新しいStrict Modeの動作、新しいフック[ 75 ] |
| 18.1.0 | 2022年4月26日 | 多くの修正とパフォーマンスの改善 |
| 18.2.0 | 2022年6月14日 | さらに多くの修正とパフォーマンスの改善 |
| 18.3.0 | 2024年4月25日 | React 19 の機能に対する非推奨の警告を追加します。 |
| 19.0.0 | 2024年12月5日 | アクション、新しいフック (useActionState、useFormStatus、useOptimistic)、use API、サーバー コンポーネント、サーバー アクション、ref を通常のプロパティとして渡す、ハイドレーション差分の改善、コンテキスト API の改善、ref のクリーンアップ関数、useDeferredValue API の改善、ドキュメント メタデータのサポート、スタイルシートのサポート、非同期スクリプトのサポート、リソースのプリロードのサポート、エラー レポートの改善、カスタム要素のサポート。 |
2013年5月にReactが初めて公開された際には、Apache License 2.0が使用されていました。2014年10月、React 0.12.00ではこれを3条項BSDライセンスに置き換え、ソフトウェアに関連するFacebookの特許の使用を許可するPATENTSテキストファイルを別途追加しました。[ 76 ]
本契約に基づいて付与されるライセンスは、次の主張(訴訟、主張、その他の措置の提起を含む)を行った者に対して、自動的に通知なく終了します。(a) Facebook またはその子会社または関連会社による、特許の直接的、間接的、または幇助的な侵害または侵害の教唆(当該主張が本ソフトウェアに関連するか否かに関わらず)、(ii) Facebook またはその子会社または関連会社のソフトウェア、製品、サービスに起因して当該主張が本ソフトウェアに関連するか否かに関わらず、いずれかの当事者による、または (iii) 本ソフトウェアに関連するいずれかの当事者による、または (b) Facebook の特許主張におけるいずれかの権利が無効または執行不可能である、という主張。
この型破りな条項は、Reactユーザーコミュニティで論争を巻き起こしました。なぜなら、Facebookがライセンシーを訴え、その行動をブログなどで公表するなど「その他の措置」を講じるよう促した場合など、多くのシナリオにおいてFacebookがライセンスを取り消す権限を与えていると解釈される可能性があるためです。多くの人が、Facebookがこの解除条項を不当に利用したり、Reactを製品に統合することでスタートアップ企業の将来の買収が複雑化したりするのではないかと懸念を表明しました。[ 77 ]
Facebookはコミュニティからのフィードバックに基づいて、2015年4月に特許付与をより曖昧さが少なく、より寛容なものに更新しました。[ 78 ]
本契約に基づき付与されたライセンスは、お客様(またはお客様の子会社、関連会社、代理人)が、(i)Facebookまたはその子会社または関連会社に対して、(ii)Facebookまたはその子会社または関連会社のソフトウェア、技術、製品、またはサービスに起因して全部または一部生じた特許主張を、直接的または間接的に開始するか、直接的な金銭的利益を得た場合、自動的に予告なく終了します。(iii)本ソフトウェアに関連する当事者に対する特許主張。[...]「特許主張」とは、交差請求または反訴を含む、特許の直接、間接、または幇助侵害または侵害の教唆を主張する訴訟またはその他の行為を指します。[ 79 ]
Apacheソフトウェア財団は、このライセンス契約は「ライセンシーではなくライセンサーに不利な形でソフトウェアの下流の消費者にリスクを転嫁するものであり、普遍的な寄付者であるというApacheの法的方針に違反する」ため、そのライセンスポリシーに反すると判断しました。また、「[Apache License 2.0]に含まれるライセンスのサブセットではなく、[Apache License 2.0]としてサブライセンスすることもできません」としています。[ 80 ] 2017年8月、FacebookはApache財団の下流の懸念を却下し、ライセンスの再検討を拒否しました。[ 81 ] [ 82 ]翌月、WordPressはGutenbergとCalypsoプロジェクトをReactから切り替えることを決定しました。[ 83 ]
2017年9月23日、Facebookは翌週、Flow、Jest、React、Immutable.jsを標準MITライセンスの下で再ライセンスすると発表した。同社はReactが「ウェブ向けオープンソースソフトウェアの幅広いエコシステムの基盤」であり、「非技術的な理由で進歩を遅らせたくない」と述べた。[ 84 ]
2017年9月26日に、React 16.0.0がMITライセンスでリリースされました。[ 85 ] MITライセンスの変更は、React 15.6.2とともに15.xリリースラインにもバックポートされています。[ 86 ]
{{cite book}}:|website=無視されました (ヘルプ)