エラーの調査とスタックトレースの復元
失敗した更新とイベントを特定し、同じビルドで生成したソースマップからエラーの発生箇所を調べます。
更新日 2026-09-14
この順序で診断します
影響を受けるデバイスで
getUpdateMetadata().currentVersionを使用して アップデートを特定します。記録時間とネイティブバージョン。単なるスクリーンショットではなく、キャプチャされた JS エラーまたは既存のクラッシュ レポーターから スタックを収集します。
正確な
.ppkビルドから 一致するマップを見つけます。新しく再構築されたマップは代わりにはなりません。ソースの場所をシンボル化して検証し、新しいリリースを修正してテストします。
なぜそれが重要なのか
最も恐ろしい OTA シナリオ: アップデートはすでにユーザーのデバイスにあり、一部のモデルでは画面が真っ白になり、「ユーザーは開かないと言う」だけです。 Pakta は、JS エラー報告パイプラインを SDK に構築します。エラーが発生すると、アクティブな更新 ID (appKey、ネイティブ パッケージ バージョン、アクティブな更新ハッシュ) とともに報告されるため、「どのバージョンが失敗しているか」が 1 つのクエリ可能なフィールドになります。
自動レポート
初期化後、SDK は React Native のグローバル ErrorUtils にチェーンします。これは既存のハンドラーを置き換えるのではなく、その後に実行されます。
キャッチされなかった JS 例外は自動的に報告されます。
報告されたペイロード: エラー メッセージ、JS スタック、更新 ID および基本的なデバイス情報。
レポートは、テレメトリの更新と同じサービス構成を共有します。
JS エラー報告のみをオプトアウトするには:
const updateClient = new Pakta({
appKey,
disableErrorReporting: true, // disable JS error reporting only
// disableTelemetry: true, // also disable update lifecycle telemetry
});手動キャプチャ
キャッチされた例外 (API レイヤーで試行/キャッチしたものなど) はデフォルトでは報告されません。重要な場合は明示的に送信してください。
// Reuse the existing client created outside the root component.
try {
await riskyCheckout();
} catch (error) {
client.captureException(error, { context: 'checkout' });
}コンテキスト オブジェクトはエラーと一緒に保存されます。デバッグ中に必要なビジネス識別子を入れます。
クラッシュ プラットフォームの相関関係
ネイティブ クラッシュと ANR は JS パイプラインの外に存在します。それらを Sentry / Crashlytics に渡し、Pakta が アクティブな更新 ID をこれらのレポートに挿入します。
import * as Sentry from '@sentry/react-native';
import { attachToSentry } from 'rn-update';
// Call after existing Sentry initialization, passing the reporter.
attachToSentry(Sentry);Sentry ボードを pakta.currentVersion でフィルターすると、「これらのクラッシュがクラスターに発生するホット アップデートのバージョン」に答えることができます。
記号
bundle はデフォルトでソースマップを生成します。 publish --sourcemap を使用してアーカイブし、CLI を使用して実稼働スタックをソース位置に戻します。
pakta symbolicate stack.txt --platform android --hash <UPDATE_HASH>getUpdateMetadata().currentVersion から hash を取得します。Hermesのソースマップはバンドル時に生成されます。設定方法はCLIの診断オプションを参照してください。
ソースの場所が見つからない場合
publish --sourcemap が正常にアーカイブされたこと、ハッシュが失敗した更新に属していること、およびプラットフォームが一致していることを確認してください。埋め込みバンドルには空の currentVersion があり、ネイティブ ビルド マッピング ワークフローが必要です。元のマップがないと、正確なソースの回復は保証されません。
