Islands in the byte stream

Technical notes by a software engineer

apollo-boost はサンプルコード専用と思ったほうがよい

TypeScript用のGraphQL clientであるところの Apollo ですが、これのGet Startedなどのドキュメントでは apollo-boost というパッケージを使っています。

www.apollographql.com

しかし、 apollo-boost はサンプルコードをシンプルにするためのパッケージと考えたほうがよく、プロダクションコードでは 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 を生で使うほうがよい

特に、 apollo を使うとすぐ batch request をしたくなるでしょうから、プロダクションコードでは最初から apollo-boost を使わないで apollo-client を使うほうが移行する手間が省けるというものです。