Symbolicate JavaScript errors
By default, the SDK converts stack frames under the application directory to stableapp:///<relative path> URLs. The same build produces the same path regardless of where a user installs the application.
For example:
/dist/renderer.
1. Align service and version
Flashduty matches a source map using:- Event
service - Event
version - Minified file path in the stack frame
main.ts
renderer.ts
version is not copied to renderer events, so both processes must set it.
2. Generate source maps
Enable source maps for main-process and renderer builds:3. Upload main-process and renderer artifacts
Install the Flashduty CLI, then upload source maps for each process separately:--minified-path-prefix must match the directory shown in the stack frame. Do not include app:/// in the prefix.
Custom path mapping
Most projects can use the defaultapp:/// paths. Set normalizeStackPath only when your build directory cannot be represented relative to the application root:
main.ts
undefined lets the SDK apply its default rule.
Symbolicate native crashes
Native crashes come from ElectroncrashReporter minidumps. Without symbols, the stack contains modules and addresses:
1. Prepare symbol files
Download the symbol bundle from Electron releases that exactly matches the Electron version, operating system, and CPU architecture you ship:.node plugins, use dump_syms to generate .sym files for them.
2. Upload symbols
Place the.sym files under one directory, then run:
--dry-run to preview the files before uploading.
A single Breakpad .sym file must not exceed 2 GB; larger uploads are rejected (HTTP 413).
Native symbols match by module ID. service and release-version label the upload batch for discovery; they do not participate in symbol matching. This differs from JavaScript source maps.
3. Publish symbols with each release
Module IDs can change whenever Electron is upgraded or a native module is rebuilt. Upload symbols for every operating system and CPU architecture that you ship. Missing symbols do not prevent crash reporting. You can receive a crash with address-only frames and upload symbols later; historical crashes are symbolicated when viewed.Upload Electron symbols from the console
Besides the CLI, you can upload native symbols from the console. Go to Application Management → Source Code Management → Electron. This tab lists uploaded Electron symbols — one row per native module showing Module, Debug ID, Architecture, Service, Version, Size, and upload time. The list supports free-text search by Debug ID (the value carried in a crash event’sbinary_images) plus service, version, and build_id filters.
Click Upload Electron symbols to open the upload panel. Fill in the parameters below and the panel generates the matching upload command:
41.1.0) and pick the platform / architecture (darwin-arm64, darwin-x64, win32-x64, win32-arm64, linux-x64, linux-arm64) to get the download URL for the matching official symbols archive plus a one-line “download → unzip → upload” command:
.node plugins, expand Generate symbols for your own native modules (optional) and use dump_syms to produce .sym files in the same directory, for example:
package.json, downloading and extracting the official symbols archive for the target platform and architecture, generating .sym files with dump_syms when the app has custom native modules or .node plugins, and finally uploading with flashcat-cli electron-symbols upload. The prompt includes a link to this page and reminds the agent to inject the API key via an environment variable instead of committing it to the repository.
Verify symbolication
JavaScript errors
- Trigger an error with a stable stack in a test build.
- Confirm the event
serviceandversionin error details. - Compare the stack frame path with
--minified-path-prefix. - Confirm that error details show the original file, function, and source location.
Native crashes
- Trigger a test crash using the same Electron build as the release.
- Restart the application so the SDK can report the minidump.
- Confirm that Electron module frames display function names and line numbers.
Related pages
Advanced configuration
Configure versions, path mapping, and other advanced options.
Data collection
Learn how JavaScript errors and native crashes are collected.