概要

Expo のクラッシュレポートとエラー追跡を有効にすると、リアルユーザーモニタリングで包括的なクラッシュレポートとエラートレンドを取得できます。

この機能により、以下の機能にアクセスが可能になります。

  • 集計済みの Expo クラッシュダッシュボードおよび属性
  • シンボル化された iOS のクラッシュレポートおよび難読化された Android のクラッシュレポート
  • Expo エラー追跡とトレンド分析

スタックトレースをシンボル化し、Android のクラッシュを難読化するには、expo-datadog 構成プラグインを使って、.dSYM、Proguard マッピングファイル、ソースマップを Datadog にアップロードします。

クラッシュレポートは Error Tracking に表示されます。

セットアップ

expo-datadogパッケージと構成プラグインを使用します。詳細については、Expo と Expo Go のドキュメントを参照してください。

開発依存として @datadog/datadog-ci を追加します。このパッケージには、ソースマップをアップロードするためのスクリプトが含まれています。NPM でインストールすることができます。

npm install @datadog/datadog-ci --save-dev

または、Yarn でインストールすることができます。

yarn add -D @datadog/datadog-ci

eas secret:create を実行して、DATADOG_API_KEY を Datadog API キーに設定します。

ファイルのアップロードを無効にする

iosDsymsiosSourcemapsandroidProguardMappingFilesandroidSourcemaps パラメーターを false に設定すると、一部のファイルのアップロードを禁止することができます。

{
    "expo": {
        "plugins": [
            [
                "expo-datadog",
                {
                    "errorTracking": {
                        "iosDsyms": false
                    }
                }
            ]
        ]
    }
}

Datadog のサイトを設定する

eas secret:create を実行して、DATADOG_SITE を Datadog サイトのホストに設定します (例: datadoghq.eu)。デフォルトでは、datadoghq.com が使用されます。

プラグインコンフィギュレーションオプション

パラメーターデフォルト説明
iosDsymstrueiOS のネイティブクラッシュのシンボル化用に、dSYMS ファイルのアップロードを可能にします。
iosSourcemapstrueiOS ビルドにおける JavaScript ソースマップのアップロードを可能にします。
androidProguardMappingFilestrueAndroid のネイティブクラッシュの難読化を解除するための Proguard マッピングファイルのアップロードを有効にします (難読化が有効な場合のみ適用されます)。
androidSourcemapstrueAndroid ビルドにおける JavaScript ソースマップのアップロードを可能にします。

Sentry を併用する

Datadog と Sentry の構成プラグインは、iOS のビルドフェーズ “Bundle React Native code and images” を変更してソースマップを送信するために、どちらも正規表現を使用します。これにより、EAS のビルドが失敗したときに、 error: Found argument 'datadog-ci' which wasn't expected, or isn't valid in this context エラーを出すようにすることができます。

両方のプラグインを使用する場合は、必ず expo-datadog プラグインを最初に app.json ファイルに追加してください。

"plugins": [
    "expo-datadog",
    "sentry-expo"
]

expo-dev-client を使用していて、すでに expo-datadog プラグインがある場合は、sentry-expo を追加して両方のプラグインで npx expo prebuild を実行する前に、project.pbxproj ファイルに対するその変更を元に戻します。

その他の参考資料