@tillstack/electron
v0.2.1
Published
TillPulse observability SDK for Electron — main-process crashes, renderer-gone, hangs, native minidumps, crash-free sessions
Maintainers
Readme
@tillstack/electron
TillPulse observability for Electron desktop apps. Covers the surfaces a web error tracker can't reach: main-process crashes, native C++/V8 minidumps, renderer/GPU/child-process failures, and app hangs.
npm install @tillstack/electronIn your main process:
import { TillPulse } from '@tillstack/electron'
TillPulse.init({
dsn: 'https://<public-key>@ingest.tilldev.dev/<project-id>',
release: app.getVersion(),
environment: 'production',
})In each renderer, use @tillstack/browser — the renderer
is a Chromium page, so it gets the full web treatment (errors, Web Vitals,
network, breadcrumbs) with the same DSN.
The main-process SDK captures:
| Signal | Source |
|---|---|
| Main-process crashes | uncaughtException, unhandledRejection (stack-parsed) |
| Native crashes | Electron crashReporter minidumps (C++/V8 faults the JS layer can't catch) |
| Renderer/GPU/child gone | render-process-gone, child-process-gone (reason → crashed/oom) |
| App hangs | renderer unresponsive/responsive → duration-tagged hang events |
| Crash-free sessions | session on ready, crashed on an uncaught exception, exited on quit |
| Desktop context | OS + arch + RAM, Electron/Chrome/Node/V8 versions |
Events are PII-scrubbed on-device and buffered in a file-backed queue in
userData — so the report explaining a crash survives the restart after it.
Native minidump upload is opt-in (uploadMinidumps: true); by default dumps are
kept locally and a metadata event is sent.
Options
dsn, release required. Toggles (default on): enableNativeCrashReporter,
enableProcessMonitoring, enableHangDetection, enableSessionTracking. Also
uploadMinidumps, environment, dist, disableDefaultPiiScrubbing,
beforeSend, initialTags, flushIntervalMs, debug.
