- 既存ツール(
Profiler、Why Did You Render?、React Devtools)と異なり、コード変更がほとんど不要で、シンプルなビジュアルキューとプログラム可能なAPIを提供
- パフォーマンス問題を引き起こすレンダリングを自動で検出して強調表示し、どのコンポーネントを修正すべきかを正確に示す
- シンプルな JavaScript なので、どこにでも組み込める: Scriptタグ、NPM など
React Scanが必要な理由
- React の最適化は難しいことがある
- 意図的に、コンポーネントの props は値ではなく参照で比較される。これによってレンダリング実行コストを削減する
- しかし、その結果として不要なレンダリングが誤って発生しやすくなり、アプリが遅くなる可能性がある
- 数百人の開発者がいる大規模な本番アプリでも最適化が難しいことが多い(GitHub、Twitter、Instagram の事例)
React ScanがReact Devtoolsより優れている点
- React Devtoolsの限界:
- 汎用ツールとして設計されているため、不要なレンダーと必要なレンダーを明確に区別できない。
- プログラム可能なAPIがなく、パフォーマンスデバッグの自動化が難しい。
- React Devtoolsのハイライト機能に対する個人的な不満:
- レンダリング検知の遅延: React Devtools はレンダリングをバッチ処理するため、高速にレンダリングされるコンポーネントは毎秒1回しか表示されない。
- ボックス位置更新の問題: スクロールやリサイズ時にボックス位置が更新されない。
- レンダリング回数表示の不足: 各コンポーネントのレンダリング回数を表示しない。
- 問題のあるレンダリングの判別が難しい: 遅い、または非効率なレンダリングを確認するには、自分でコンポーネントを調べる必要がある。
- ユーザー体験の不足: メニューが隠れており、機能のオン・オフが面倒。パフォーマンスデバッグ向けのUI設計ではない。
- プログラムAPIがない: デバッグの自動化や高度な作業に使えない。
- Chrome拡張に限定: Web のどこでも使えるわけではなく、ブラウザ拡張に依存している。
- 主観的なデザイン上の問題: ボックスの線がぼやけていて、動作も遅く感じる。
- React Scanの差別化ポイント:
- パフォーマンスデバッグ向けに設計された専用ツールで、不要なレンダーを明確に特定する。
- すべてのプラットフォームで利用可能(Web、スクリプト、npm)で、開発者体験を最適化。
- 意欲的な機能ロードマップにより、React Devtools を超える可能性を提供。
3件のコメント
見やすくて良いです。
非常に適切な使用例
デモが小さなアプリだからかもしれませんが、反応速度は速いですね。