Apollo vs urql: どちらのGraphQLクライアントを選ぶか
Apollo Clientは強力な正規化キャッシュを備えた機能豊富なGraphQLクライアントで、urqlはより軽量で組み合わせ可能なexchangeベースのクライアントです。
Apollo Clientは、洗練された正規化キャッシュ、ローカル状態、subscription、大きなエコシステムを提供し、複雑なGraphQLアプリのデフォルトになりますが、バンドルは大きく、設定も多くなります。urqlはより小さく、組み合わせ可能なexchangeを中心に構築され、よりシンプルなデフォルトのキャッシュ(document caching)と、正規化のためのオプションのgraphcacheを備えます。Apolloはキャッシュの強力さとエコシステムで優れ、urqlはサイズ、シンプルさ、組み合わせやすさで優れます。
| Apollo | urql | |
|---|---|---|
| キャッシュ | 正規化(強力) | document(graphcacheはオプション) |
| バンドルサイズ | 大きい | 小さい |
| 拡張性 | plugin、link | 組み合わせ可能なexchange |
| エコシステム | 大きい | 小さめ、成長中 |
| 最適な用途 | 複雑なGraphQLアプリ | 軽量で組み合わせ可能なクライアント |
ユースケースとキャッシュ
Apolloは、強力な正規化キャッシュ、ローカル状態、広いエコシステムを必要とする大規模なGraphQLアプリに向いています。urqlは、より軽量なクライアント、組み合わせ可能なexchange、よりシンプルなデフォルトを求め、必要なときにだけ正規化キャッシュを追加したいチームに向いています。分かれ目は機能の深さか、バンドルサイズとシンプルさかです。
テストとCI
どちらもテストでGraphQL操作をモックするユーティリティを提供します。いずれもマネージドrunner上で実行でき、より高速なrunnerはGraphQLの統合テストスイートを短縮します。
結論
強力な正規化キャッシュ、ローカル状態、大きなエコシステムが必要なら: Apollo Client。よりシンプルなデフォルトを備えた軽量で組み合わせ可能なクライアントが欲しいなら: urql。Apolloはキャッシュの深さで、urqlはサイズと組み合わせやすさで優れます。