こんにちは。株式会社インプルの平澤です。
Reactのライブラリ選定で迷われたこと、迷っていることはありませんでしょうか?
そんな方々へ私の選ぶベストライブラリセットご提供します。
バリデーション
フォームをReact hook form もしくは Formikで実装し、バリデーションをYupやZodで行うのが
主流となっています。
個人的にはformはreact-hook-formをお勧めします。
GitHubのスター数は同じくらいですが、react-hook-formの方が後発ながら2022年5月にダウンロード数でformikを上回っています。
実際にさまざまなReactのGitHubを見ると最近はreact-hook-formを採用しているものが多く、ドキュメントが日本語対応しているという面でも導入のしやすさを感じます。
バリデーションのライブラリに関してはyupかzodをお勧めします。
他にもさまざまなライブラリがありますが、yupが2015年でzodが2020年にリリースされており経過年数に対してのGitHubスター数やnpmのダウンロード数も一線を画しています。
React hook form
Yup
Zod
画面遷移
画面遷移は現状ではReact routerを選んでおけば間違えはないといった状況です。
GitHubのスター数などをみても群を抜いています。
ただ、React Queryなどの作者でもあるTanner Linsley氏が開発したReact Locationという比較的新しいライブラリがあり、React Routerと比較してシンプルで扱いやすくこちらも気になるところです。
本番環境で使用するにはまだ心もとないですが、非同期ルーティングや検索パラメータ周りの充実など使用してみる価値アリな印象です。
React router
React location
UI
UIライブラリはここではMUIとChackraの2つを取り上げます。
ここで取り上げる2つを使用する場合には、後述するCSSのライブラリはemotionを使用することをおすすめします。
UIライブラリは実際にドキュメントを確認し、デザインが自分の求めているものにより近いものを選ぶのが良いです。
MUIは、にはテーマやパレットという考え方があり、統一感のある色やレイアウトを簡単に実現することができます。
ChakraUIは限られたパラメータを設定することで、統一感のあるデザインを表現することができます。
mui
chakra
CSS
CSSの個人的おすすめはemotionかtailwindになります。
tailwindはクラス名を考える必要がないことなどがあり、スピード感を持って開発を進めることができます。
Css in Jsを使用する場合とTailwindを使用する場合はUIフレームワークに何を使用するかなども考慮するべき点ではあります。
tailwindを採用するとUIフレームワークはHeadless UIが相性が良く、muiやchakraを使用する場合はemotionの方が相性がいいです。
詳しくは下記の別記事にまとめていますので、こちらをご覧ください。
emotion
tailwind
通信(キャッシュ)
外部システムとの通信はアプリケーション開発のパフォーマンスボトルネックになりがちです。
これを解決するための手法の一つとして、キャッシュを利用する方法があります。
ここで取り上げるのは、通信で取得したデータをキャッシュして利用できるライブラリをご紹介します。
SWRとReactQueryは非常に似ていて、どちらを使っても正直そこまで差を感じません。
機能面でいくとRectQueryの方が多機能でありますが、バンドルサイズを比較するとSWR:4.2KB, ReactQuery:13.0KBですので、
様々な機能を使い倒したい -> ReactQuery
とりあえず導入したいが迷っている -> SWR
といった判断で問題ありません。
SWRは日本語のドキュメントがある点でも導入のしやすさを感じます。
SWR
React query
状態管理
状態管理の個人的おすすめはzustandかjotaiになります。
個人開発で規模の小さいものであれば、jotaiで規模感が大きくなる場合はzustandを選ぶのをお勧めします。
詳しくは下記の別記事にまとめておりますので、こちらをご覧ください。
Zustand
Jotai
チャート
チャートのライブラリに関してもUIライブラリと同様に、デザインや表示する内容でイメージと近いものを選択するのが無難です。
rechartsはReact コンポーネントとして使え、素の SVG の描画をサポートしています。
また、画面に表示したいコンポーネントを宣言するだけで描画可能です。
react-chartjs-2はchartjsをreact用にしたライブラリになり、react-chartjs-2とchartjs両方のインストールが必要になります。
chartjsのGitHubスター数は58.9kとなっており非常に有名なライブラリです。
recharts
react-chartjs-2
他
React icons
Reactでiconを入れるならコレといった感じですね。
React hot toast
超お手軽にポップアップの実装ができます。私は多用してます。おすすめです。