追記: Apollo Boost は Apollo Client に統合される見込みのようです。Apollo Client 3.0 Roadmap · Issue #33 · apollographql/apollo-feature-requests · GitHub
TypeScript用のGraphQL clientであるところの Apollo ですが、これのGet Startedなどのドキュメントでは apollo-boost
というパッケージを使っています。
しかし、 apollo-boost
はサンプルコードをシンプルにするための apollo-client
などのラッパーと考えたほうがよく、プロダクションコードでは apollo-boost
ではなく apollo-client
および関連モジュールを直接使うほうがいいです。
以下理由:
apollo-boost
は "zero-config" なapollo-client
のラッパーだが、カスタマイズ性に乏しい- カスタマイズ不要なときに
apollo-boost
を使い、カスタマイズが必要になったらapollo-client
を使え、という位置づけのよう apollo-boost
からapollo-client
への移行ガイドもある:- Apollo Boost migration | Apollo Client
Apollo Boost is a great way to get started with Apollo Client quickly, but there are some advanced features it doesn’t support out of the box.
- カスタマイズ不要なときに
- 特に
apollo-client
の強力な機能である "link" (Rack middleware のようなもの) をカスタマイズできないので、バッチリクエストや GraphQL subscriptions を利用する方法がない - エラーハンドリングも細かく制御したいときは
apollo-client
を生で使うほうがよい - 公式ドキュメントで
import ApolloClient from "apollo-boost"
とimport { ApolloClient } from "apollo-client"
の2パターンがあるが、この2つの ApolloClient は(継承関係にあるものの)コンストラクタのオプションが全く違うので別物と考えたほうがよく、非常に混乱する
特に、 apollo を使うとすぐ batch request をしたくなるでしょうから、プロダクションコードでは最初から apollo-boost
を使わないで apollo-client
を使うほうが移行する手間が省けるというものです。