Jotai v1リリース・AtomベースのReact状態管理ライブラリ
- Jotai v1.0.0をリリースしました!
- マスコットができました!
- ページはこちら 👉 https://jotai.pmnd.rs
少しだけ経緯など
React hooksが出てから、useContextのextra re-renders問題というものを知り、いくつかのライブラリを作りました。
- https://github.com/dai-shi/reactive-react-redux (今は実験プロジェクト)
- https://react-tracked.js.org (こっちがreduxもサポートしたので)
- https://github.com/dai-shi/use-context-selector (react-trackedからcontext部分だけを抜き出した、その後react-trackedのdependencyになった)
- https://github.com/pmndrs/valtio (react-trackedがreact-reduxライクなのに対して、こっちはmobxライク。いずれも内部ではproxy-compareを使用)
jotaiはvaltioより前に開発開始しましたが、valtioの方が先にv1リリースしました。jotaiはもともとはuse-context-selectorの上に作っていたのですが、asyncをサポートするには筋が悪いことがわかり、今ではmutable storeを素直に持っています。react 18で新しい機能が追加されれば、より良い実装ができるかもしれません。
jotai以外のライブラリはproxyをベースにしているものが多いですが、もっとシンプルな方法はないものかと考えていたところrecoilのAPIを見て、これは良いと。似たようなものはもっと前からあったので調査不足だったとも言えます。しかし、asyncサポートは新しく、しかも実装がとても困難でここまでくるのに1年以上かかりました。
今後についてなど
大きな不具合は解消していますが、asyncやeffectのなどタイミング的に複雑なものなどまだ不具合があるかもしれません。今後、issueが上がってきたら対処していく予定です。ゴールというよりここからがスタートかもしれません。Core APIをベースにした周辺APIも拡充していく予定です。すでにurqlやrxjsとの統合は着手。誰かお手伝いいただける人いませか。
もう一つの重要なポイントとして、jotaiのAPIは柔軟すぎるので、プロジェクトで導入する際は使い方を制限するようなパターンやベストプラクティスが必要だと思っています。ファイル構成やatomの粒度など様々な決め方がありそうです。この辺りはエコシステムとして広がっていくことを期待。
というわけで、まだ試していない方はぜひお試しください。よろしくお願いします。質問などは、下記のどれかで。
- GitHub issue か discussion
- Twitter @dai_shi
- Discord Daishi's OSS
- Slack(日本語) React Fanコミュニティ
Discussion