個人的な観測範囲にある Node.js / React 関連のプロジェクトなどについて 2021 年 12 月時点の情報メモ。
ここ 2 年ぐらいコンシューマー向けの SPA や Node.js アプリケーションを書いておらず、react-admin で作った管理画面*1を書いているぐらいなのだが、久々にいろいろ見たらステータスが変わっていたので。
Node.js
https://nodejs.org/en/about/releases/
着々と version up してる。
- v10 は 2021-04-30 に EOL
- v14 が 2021-10-26 に Maintenance LTS になった
- v16 が 2021-04-20 にリリースされ、2021-10-26 に Active LTS になった
GitHub Actions の hosted runner でも v16 がデフォルトになった。
yarn
2020 年には v2 が出ているが、npm install yarn
すると未だに yarn v1 がインストールされて若干混乱する。v1 はメンテナンスモードであり、今後は修正されないバグもあるとのこと。
yarn を node.js 本体に入れようという議論もあったが却下され、corepack が v16.10 から本体に含まれるようになった。
Cybozu Frontend Monthly #10 に詳しい。
Migration | Yarn - Package Manager 見つつ v2 への migration やらないとな〜
npm
v8 系が最新。
npm は v7 から peer dependencies の解決アルゴリズムが若干変わったようで、これまで許容していた version mismatch がエラーになったりする。
GitHub Actions のubuntu-latest
イメージの更新で CI が何もしてないのに壊れた…状態になって知ることになった。
lerna
https://github.com/lerna/lerna
monorepo で複数のパッケージを管理するツール。有名どころだと Babel などを筆頭にけっこう多くのプロジェクトで使われていた気がする。
メンテナが monorepo に強い失望感を示していて厳しそうな感じ。
https://github.com/lerna/lerna/issues/2975
You should use something else, or, y'know, stop bothering with monorepos entirely, they were a mistake.
Babel もいつの間にか lerna を止めていた。
https://github.com/babel/babel/pull/12138
react
https://github.com/facebook/react
2020年10月におとなしめのv17がリリースされてからはしばらく落ち着いている。
v18 では Suspense を使って面白い感じになるらしいが、業務で SSR する機会はあまりないかも。
enzyme
https://github.com/enzymejs/enzyme
React 17 への対応イシューが open のまま滞っている。イシューを watch していると、フリーライダーからの心ないコメントが目に付くこともありメンタルヘルス的にも芳しく無さそう…。
そうこうしている間に React 18 対応を push する issue が出てきた。
https://github.com/enzymejs/enzyme/issues/2524
enzyme のことは応援しているが業務のコードからは削っていっている…
create-react-app
https://github.com/facebook/create-react-app
Meta (Facebook) がサポートしているというのがウリ文句だった気もしつつ、v4.0.3 が 2021-02-22 に出てからしばらくリリースがない。
メジャーアップデートは 2020-10-23 の v4.0.0 が最後で、issues はかなり溜まっていてさばけていない印象。
react-admin v4 に見る変化
大部分 react-admin が隠蔽してくれちゃっているので、ここ最近は細かいライブラリやツール群をあらかた気にせずともやってこれたというのもある。
関連: React Adminの感想 - valid,invalid
そんな react-admin が 2022 年に v4 を迎えるにあたり内部での大きな変更を予定している。依存ライブラリもガッツリ変わるようなので 4.0 Roadmap · Issue #5933 · marmelab/react-admin · GitHub を見ることで各種ライブラリの趨勢を垣間見ることができる。
connected-react-router
https://github.com/supasate/connected-react-router
本体は継続的に更新されてはいるが react-admin が Redux 依存を弱めていきたいオーラを出しているので取り除かれるようす。
redux-saga
https://github.com/redux-saga/redux-saga
直近も commit は積まれているが Latest release が 2019 年。
react-admin は v4 になる前から内部的には redux-saga を使っていない状態になっており、利用者がカスタムコードを足せるようになっていただけだった。
react-final-form
https://github.com/final-form/react-final-form
final-form 起因で直せないバグがあること、メンテナンスに不安があることを理由に脱却が決められていた。
formik が移行先として挙がっていたが最終的には react-hook-form になったようだ。
ちなみに移行先の候補に上がっていなかったけど redux-form も"unmaintained"と評されていた。
React のフォームライブラリ戦国時代あったな〜
redux
https://github.com/reduxjs/redux
先述の通り依存を弱めていきたい感じであり、クエリキャッシュも Redux ベースではなく react-query へ移行するとのこと。
新規に SPA をゼロから作ろうとするときに「昔つかったことあるから…」みたいなことを言わず、この辺のツール / ライブラリ選定の選球眼を改めて磨きたいところ。
*1:管理画面の構成は以前に書いた通りこんな感じ => https://ohbarye.hatenablog.jp/entry/2021/01/22/admin-feature-architecture-patterns