Safeguard
Developer Tools•

What does Electron's crash reporter send, and how do you keep it local?

Electron's crashReporter uploads minidumps by default once started. What the payload contains, the uploadToServer setting and a privacy checklist.

Safeguard Security Team
3 min read

Once you call crashReporter.start(), Electron collects crashes and, by default, uploads a minidump to the URL you configure. You can keep reports on the device by setting uploadToServer to false. Decide this deliberately, because a crash report is data leaving your users' machines.

How it works

The Electron documentation says Electron uses Crashpad to monitor and report crashes, with the same upload protocol as Breakpad. Call start() early, preferably before the app ready event. Once started, the reporter cannot be disabled, and renderers created before it starts are not monitored. Reports are stored in the directory returned by app.getPath('crashDumps'), and the page notes the file layout is an implementation detail that may change.

What is in the upload

Reports go as a multipart POST to submitURL, gzip compressed unless compress is false. The payload includes:

  • Electron and app version fields
  • The platform and process type
  • A GUID
  • The minidump file
  • globalExtra values and the crashed process's extra parameters

The documentation warns that Crashpad and Chromium may add other fields that can change without notice.

The settings that matter for privacy

SettingDefault and effect
uploadToServerDefaults to true; when false, crashes are stored locally and not uploaded
rateLimitCaps uploads at one per hour; extra reports stay on disk
extra and addExtraParameterApply to the calling process only
globalExtraFixed once the reporter starts; values are not returned by getParameters

Parameter keys are limited to 39 bytes and values to 20,320 bytes. The docs say setUploadToServer() has no effect before start() and that the setting would normally be controlled by user preferences.

A privacy checklist

  1. Decide whether uploads are on by default or opt in. Wire uploadToServer to a user setting.
  2. Review every value you add through extra or globalExtra. Never put tokens, emails or file paths with user names in them.
  3. Know where submitURL points, who operates it and how long reports are kept.
  4. Disclose crash reporting in your privacy notice.
  5. Protect the crash dump directory like any other local data, since it holds minidumps.
  6. Remember Mac App Store builds: the documentation says the module is disabled there.

What a minidump may contain

The Electron page gives no detailed statement of a minidump's contents. Minidumps are memory snapshots by nature, so assume they can include data your app held at crash time, and treat them as sensitive until your own review says otherwise.

Try it yourself

The scan demo shows how code is checked for patterns that leak data. Click through it and note what kinds of findings get flagged.

Click through it at your own pace, or open it full screen.

Quick check

Can I turn the crash reporter off after it starts?

The documentation says once started it cannot be disabled. You can stop uploads with uploadToServer set to false.

Are renderer extras sent with main process crashes?

Extra parameters apply only to the process that set them. Main process parameters are not sent with renderer or child process crashes.

Safeguard's code scanning and policy checks can help catch risky data handling before release. A free scan is at gold.safeguard.sh/scan.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.