リコイルバージョン 0.1.1 へようこそ!このリリースにはパフォーマンスの向上があり、React Naive のサポート、React 以外のところでスナップショットを扱うこと、ロギング、外部ストアとの同期、永続化などの atoms の副作用を管理するための atoms エフェクトなど、いくつかの実験的な機能が導入されています。
さらに、nightly ビルドが nightly
ブランチから利用できるようになりました。
パフォーマンス
リコイルのパフォーマンスを向上させるためのいくつかの変更
useRecoilCallback()
の実行中に実行されるアップデートはバッチ化されるようになり、データ構造のコピーや中間状態のアップデートが回避されます。これにより、ループで 5,000 の atoms を設定することが、一部のストレステストで 10 秒 -> 25 ミリ秒に短縮されました。(@davidmccabe)- また、セレクターの依存関係が変更されていない場合、リコイルはキャッシュ内でセレクターの値の検索を行わなくなりました。これにより、データフローグラフが複雑な一部のアプリケーションが 30 ~ 40 倍高速になりました。(@davidmccabe)
React Native (実験的)
リコイルは React Native 環境でも動作するようになりました。ただし、サーバーサイドレンダリングと同様に、正式にはサポートされていません。(#114 - @jacques-blom, @mondaychen)
atoms エフェクト (実験的)
Atom の効果 は、atom()
または atomFamily()
の定義中に Atom の副作用ポリシーを、Atom ごとに管理することを簡略化します。エフェクトは、ロギング や、リモートデータベース、ローカルストレージ、ブラウザの URL 履歴など外部ストレージとの状態同期や永続化などの興味深い用途に使用できます。たとえば、Atom をユーザー状態のローカルコピーとして使用し、サーバの変更を購読しローカルコピーを更新し、ローカルの変更は書き込みを行いサーバを更新する効果を提供できます。#680, #380, #381, #384, #385, #448, #449, #412, #591, #634, #682— @drarmstr, @csantos4242)
テスト用のスナップショット (試験的)
スナップショットは今ではReact コンテキストの外で構築できます。これは、React コンテキストの外でテストを行う場合やセレクタを評価する場合に役立ちます。#649— @drarmstr, @habond)
バグ修正
- 今回の更新には、テストとインフラストラクチャに関するバグ修正が含まれています。#555, #587, #588, #590, #635, #631, #683, #684, #686— @aaronabramov, @mondaychen, @drarmstr, @mallchel, @davidmccabe, @csantos4242)
- 凍結する必要のないオブジェクトは凍結しない。#597, #633, #672— @RinGoku, @a-sane)
Snapshot
のTypeScriptタイピング。(#687— @kevinfrei, @drarmstr, @habond)waitForAll()
の同時実行に対する追加テスト。(#681— @drarmstr)
将来の作業
Recoilは将来のリリースにおいて、使用されなくなったatomとセレクターが利用するメモリーを自動的に解放し、atomの数が増加してもより優れたパフォーマンスを発揮します。(@davidmccabe)
プロトタイプのChrome開発者ツールのリリース。(@maxijb)
一般的な状態永続化(例: ブラウザのローカルストレージやURL履歴)用のエフェクトのライブラリ。(@bezi)
Recoilへの継続的なご関心ありがとうございます!