ケンガリ · オープンソース
小さく、大きく響く。
React と React Native のための、状態管理とモーションのオープンソースツール。最初の import からすぐに動き、必要な分だけ育てられる、役割の明確な 3 つのパッケージです。
- 3 つのパッケージ
- React · React Native
- TypeScript 型定義付き
- ISC ライセンス
銅鑼を打ってみてください。それぞれのツールが、自分らしいやり方で響きに応えます。
restate()useDraft.set()shallowpersistedRestate()useRestateScope()useAnimatedValuetiming()spring()interpolate()Animated.KeepAnimated.SceneMotionNumberMotionHighlightMotionListMotionSwapMotionSheetProgressRingrestate()useDraft.set()shallowpersistedRestate()useRestateScope()useAnimatedValuetiming()spring()interpolate()Animated.KeepAnimated.SceneMotionNumberMotionHighlightMotionListMotionSwapMotionSheetProgressRing

状態管理·React + React Native
01
フックひとつで共有。保存は自分のタイミングで。
Provider もアクションもリデューサーもなしで、コンポーネントが同じ値を読み取ります。再レンダリングは選択した値が変わったときだけ。保存や復元は、指示したときにだけ行われます。
- Provider なしで共有
- 選択した部分だけを購読
- IndexedDB や MMKV への明示的な保存
インストールnpm install @kkwaenggwari/restate
ライブ
2 つのコンポーネントで 1 つのストア
左右どちらかのボタンを押してみてください。2 つのパネルは同じ restate() の値を読み取って一緒に変わり、送料バッジは選択した値だけを監視しています。
02
ひとつの値が、画面全体を指揮する。
React Native の Animated でおなじみの timing、spring、interpolate を React DOM で。ひとつの値で多くの要素のスタイルを動かし、フレームごとの React レンダリングはありません。
- おなじみの React Native Animated API
- 中断しても位置と速度を引き継ぐ
- 持ち主がいなくなれば自動で片付く
インストールnpm install @kkwaenggwari/animated
ライブ
1 つの Value で 12 個の図形
スライダーが変えるのはひとつの Value だけ。12 個の図形の位置、回転、大きさ、角の丸みはすべてそこから導かれます。スプリングを押して、動いている途中でスライダーをつかんでみてください。

完成済みコンポーネント·React · React Native
03
難しいインタラクションは、もう完成しています。
回転する数字、移動するハイライト、変わった項目だけが動くリスト、シート、スワイプアクション。データを渡すだけで、Provider も初期化の呼び出しも要りません。React でも React Native でも動きます。
- 数字、タブ、リスト、シート
- Web でもネイティブでも同じ import
- 新しい入力は画面に見えている状態から続く
インストールnpm install @kkwaenggwari/animated-chorus @kkwaenggwari/animated
ライブ
データだけで動くダッシュボード
期間を選んでみてください。MotionHighlight がそこへ移動し、MotionNumber が回転し、ProgressRing が満ち、MotionList は変わった行だけを動かします。
02 · アンサンブル
ひと打ちで、すべてが動く。
このステージは Animated でつくられています。スクロールの進み具合を持つひとつの Value が、48 個の図形の位置、回転、大きさ、不透明度を同時に指揮します。
- 01
- 02
分かれる輪は 3 つに分かれ、それぞれのツールの色をまといます。
- 03
形づくる状態のつながり、モーションの軌跡、コーラスの柱へと姿を変えます。
- 04
progress
import ひとつから始める
最初からラップする Provider やグローバルな設定は要りません。アプリが必要としたときに、必要な機能だけを足します。
必要なところだけ
更新されるのは、選択した値が変わったコンポーネント、値を使う要素、そして動いた行だけです。
最後まで責任を持つ
中断されたモーションは画面に見えている状態から続き、購読やアニメーションは持ち主がいなくなれば解放されます。
型付きで、ドキュメントも充実
すべてのパッケージに TypeScript の型定義が付属し、ドキュメントは 39 の言語で読めます。