# crashReporter

The `crash-reporter` module enables sending your app's crash reports.

The following is an example of automatically submitting a crash report to a
remote server:

```javascript
const crashReporter = require('electron').crashReporter;

crashReporter.start({
  productName: 'YourName',
  companyName: 'YourCompany',
  submitURL: 'https://your-domain.com/url-to-submit',
  autoSubmit: true
});
```

## Methods

The `crash-reporter` module has the following methods:

### `crashReporter.start(options)`

`options` Object, properties:

* `productName` String, default: Electron.
* `companyName` String, default: GitHub, Inc.
* `submitURL` String, default: http://54.249.141.255:1127/post.
  * URL that crash reports will be sent to as POST.
* `autoSubmit` Boolean, default: `true`.
  * Send the crash report without user interaction.
* `ignoreSystemCrashHandler` Boolean, default: `false`.
* `extra` Object
  * An object you can define that will be sent along with the report.
  * Only string properties are sent correctly.
  * Nested objects are not supported.

You are required to call this method before using other `crashReporter`
APIs.

**Note:** On OS X, Electron uses a new `crashpad` client, which is different
from `breakpad` on Windows and Linux. To enable the crash collection feature,
you are required to call the `crashReporter.start` API to initialize `crashpad`
in the main process and in each renderer process from which you wish to collect
crash reports.

### `crashReporter.getLastCrashReport()`

Returns the date and ID of the last crash report. If no crash reports have been
sent or the crash reporter has not been started, `null` is returned.

### `crashReporter.getUploadedReports()`

Returns all uploaded crash reports. Each report contains the date and uploaded
ID.

## crash-reporter Payload

The crash reporter will send the following data to the `submitURL` as `POST`:

* `ver` String - The version of Electron.
* `platform` String - e.g. 'win32'.
* `process_type` String - e.g. 'renderer'.
* `guid` String - e.g. '5e1286fc-da97-479e-918b-6bfb0c3d1c72'
* `_version` String - The version in `package.json`.
* `_productName` String - The product name in the `crashReporter` `options`
  object.
* `prod` String - Name of the underlying product. In this case Electron.
* `_companyName` String - The company name in the `crashReporter` `options`
  object.
* `upload_file_minidump` File - The crash report as file.
* All level one properties of the `extra` object in the `crashReporter`.
  `options` object