鈴木颯介のブログ

Sentry SDK 5.0.0の破壊的な変更

Sentry SDKのメジャーアップデートが最近あったらしくお仕事でそれを追う必要が出てきたのでまとめておきます。

まず、このアップデートには内部的な改善が多く含まれています。そしていくつかの機能がSDKから切り出され、@sentry/integrationという独自のパッケージに入りました。

あんまり深く使っていない場合はそのままアップデートして大丈夫みたいです。しかし、APIからいくつかのメソッドを削除し、デフォルトエクスポートからいくつかのクラスを削除しているため、それらを使っている場合はマイグレーションを適切に行う必要があります。

以下は今回のアップデートによる破壊的変更のリストです。

  • @sentry/node: 例外から生成されたEventがトップレベルのmessage属性を持たなくなった。
  • @sentry/core: 内部でSyncPromiseを使うことでメモリの負荷を大幅に軽減した。
  • @sentry/browser & @sentry/node: BrowserBackendをデフォルトエクスポートから削除した。
  • @sentry/code: closeメソッドを使うことでフラッシュされたクライアントを無効にできるようになった。
  • @sentry/core: 文字列化されたデータの代わりにEventをsendEventにわたすようになった。
  • @sentry/utils: isArrayを削除した。
  • @sentry/utils: isNaNを削除した。
  • @sentry/utils: isFunctionを削除した。
  • @sentry/utils: isUndefinedを削除した。
  • @sentry/utils: assignを削除した。
  • @sentry/utils: includesを削除した。
  • @sentry/utils: serializeKeysToEventMessagekeysToEventMessageに改名した。
  • @sentry/utils: limitObjectDepthToSizenormalizeToSizeに改名した。
  • @sentry/utils: safeNormalizenormalizeに改名して書き直した。
  • @sentry/utils: serializedeserializecloseserializeObject関数を削除した。
  • @sentry/utils: シリアライズ関数の大部分を削除し、normalizenormalizeToSizeに置き換えた。
  • @sentry/core: プラグインとして使える箇所をすべて個別の@sentry/integrationsに切り出した。
  • @sentry/core: extraErrorData@sentry/integrationsに切り出した。
  • 全て: MechanismExecptionに移動。
  • 全て: ESM対応。
  • 全て: ESMビルドのターゲットにESNextではなくES6を使う。
  • @sentry/core: Dedupeはオプショナルになりデフォルトでは無効に。
  • @sentry/core: デフォルトでクライアントのフィンガープリンティングを削除。
  • @sentry/core: captureEventsendEventに改名。
  • @sentry/core: SDK情報のインテグレーションを削除。
  • @sentry/core: install関数をインテグレーションのインターフェースから削除。