
RecoilはFacebook(現Meta)が2020年に公開した、React向けの実験的状態管理ライブラリです。「atom」と「selector」という小さな状態の単位を組み合わせて、コンポーネント間で粒度の細かい状態共有を実現する、Reactとほぼ同じメンタルモデルで書けるAPI設計が特徴でした。公開当初は『次世代のReact公式状態管理』として大きく期待されましたが、2024年以降は実質的にメンテナンスが縮小し、後継ライブラリのJotaiへ移行する組織が増えているのが現状です。
この記事の目次
- atomとselectorの2層
- Facebookが2020年に発表
- 向いていた用途と限界
- Jotai・Reduxとの違い
- まとめ
atomとselectorの2層

Recoilのデータモデルは「atom」と「selector」の2つで構成されます。atomは独立した小さな状態の単位で、文字列のkeyとデフォルト値を与えて宣言します。コンポーネントはuseRecoilState(useStateのRecoil版)で読み書きでき、同じatomを参照する他のコンポーネントへ自動的に変更が伝播する仕組みです。
selectorは1つ以上のatomを入力にして派生値を計算する純粋関数で、Reduxのreselectのような役割を果たします。依存しているatomが更新されたときだけ再計算され、結果は自動的にメモ化されます。非同期のselectorも書け、PromiseとSuspenseと組み合わせてサーバからのデータ取得を表現することも可能です。「状態を細かい原子に分け、必要なものだけ購読する」というモデルが、大規模UIでの再レンダリング抑制に向くと評価されました。
Facebookが2020年に発表

Recoilは2020年5月、Facebookのソフトウェアエンジニア、Dave McCabeがReact Europeカンファレンスで発表しました。Facebook内部の地図系プロダクト「Facebook Origin」などで実際に運用されていた経験を元にしており、Reactの将来的なConcurrent Modeを前提に設計されている点が、ReduxやMobXとの違いとして強調されました。Reactと同じ会社が作るライブラリということもあり、「公式格上げ」を期待する声も少なくありませんでした。
しかし2023年頃から開発の停滞が指摘され始め、主要開発者がMetaを離れたタイミングを境にコミット頻度が落ちます。公式にプロジェクト終了の宣言があったわけではないものの、新機能のリリースはほぼ止まり、コミュニティでは「Recoilの設計思想を継いだJotaiへ移った方が良い」との見方が広がりました。Recoilを採用していたチームの一部は移行を進めており、新規採用は減少傾向にあるのが2025年時点の状況です。
向いていた用途と限界

Recoilが特に光ったのは、「画面内に独立した状態が数百〜数千個ある」種類のアプリです。地図のピン情報、表計算アプリのセル、複雑なフォームビルダーの各フィールドなど、atom単位で購読を分けることで、ある場所の更新が画面全体の再レンダリングを引き起こさない設計が容易でした。Reduxではセレクタの最適化に頭を悩ませる場面でも、Recoilなら宣言的に粒度を制御できました。
一方で、APIが実験的な扱いのまま長期間留まり、安定版(v1.0以降の保証)の到達も遅れ気味でした。メンテナンスが事実上停滞した現在、本番採用には注意が必要であり、新規プロジェクトではほぼ同じ思想で開発が活発なJotaiが第一候補として選ばれます。既存のRecoilコードベースを抱えるチームは、移行コストとリスクを天秤にかけて段階的に置き換えるケースが多くなっています。
Jotai・Reduxとの違い

Recoilと最もよく比較されるのが、Daishi Katoが2020年に公開したJotaiです。Jotaiは「Recoilのアイディアをよりミニマルに、よりTypeScript親和的に再設計したライブラリ」と言われ、atomという中心概念は共通しつつ、keyの文字列指定が不要だったり、ストア概念をより整理した設計を取っています。Recoilがほぼ停滞している今、Jotaiの開発はPoimandres傘下で活発に続いており、移行先として自然な選択肢になっています。
Reduxと比べると、Recoilは厳密な一方向データフローを強制せず、atom単位で独立して値を読み書きする構造でした。そのため大規模チームでの統制力ではReduxに譲るものの、粒度の細かい状態管理が必要なアプリでは1ランク上の生産性を発揮できる設計だったといえます。歴史的にReact状態管理の進化に大きな影響を与えたライブラリとして、知識として押さえておく価値があります。
まとめ
RecoilはFacebookが2020年に提案したatom指向のReact状態管理ライブラリで、Concurrent Mode時代を見据えた設計や非同期selectorは画期的でした。現在はメンテナンスが縮小し、新規採用は同じ思想の後継ライブラリJotaiが選ばれる流れですが、React状態管理の歴史を語る上で外せない、影響力の大きいプロジェクトです。
※本記事はIT用語辞典の手書きドラフトです。公開前に最新情報・出典を確認のうえ加筆修正してください。

コメント