追記: 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 を使うほうが移行する手間が省けるというものです。