valid,invalid

関心を持てる事柄について

Node.js/React周辺プロジェクトステータス (2021年12月時点)

個人的な観測範囲にある 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 がデフォルトになった。

https://github.blog/changelog/2021-12-10-github-actions-github-hosted-runners-now-run-node-js-16-by-default/

yarn

https://yarnpkg.com/

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

https://docs.npmjs.com/cli/

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