Electron recovery after crash on render process

6.1k Views Asked by At

I'm building an electron app that must reload the render process window if a crash happens.

Currently I can restart the app from the main process

app.relaunch();
app.quit();

But I cannot detect the window crashing. I tried using the

win.on('unresponsive', () => { ... } );

But the event is not getting generated when I crash the process.

To crash the process I tried:

  • invoking the process.crash()
  • using all the available memory.

Both ways successfully crash the process but again, I cannot find a way to detect it.

I tried also using, from the render process, the window.onerror(...) and sending via IPC to the main process a message when the crash is detected, but this seems not to work as well.

2

There are 2 best solutions below

0
On

maybe look into "pm2-windows-service" which can install your app as windows service and watch if it crashes, to restart it

https://www.npmjs.com/package/pm2-windows-service

also electron has app.setLoginItemSettings({ openAtLogin: true }); but that does not guard for crash, only provide automatic app start at windows login

1
On

You should be looking for the 'crashed' event in webContents. Check https://electronjs.org/docs/api/web-contents#event-crashed

For example put something like this in main process:

win.webContents.on('crashed', (e) => {
    app.relaunch();
    app.quit()
});