diff --git a/desktop/main.ts b/desktop/main.ts index 2b296d84f6a3..c21c3d16b0f0 100644 --- a/desktop/main.ts +++ b/desktop/main.ts @@ -8,6 +8,7 @@ import {autoUpdater} from 'electron-updater'; import {machineId} from 'node-machine-id'; import checkForUpdates from '@libs/checkForUpdates'; import {translate} from '@libs/Localize'; +import Log from '@libs/Log'; import CONFIG from '@src/CONFIG'; import CONST from '@src/CONST'; import type {TranslationPaths} from '@src/languages/types'; @@ -591,6 +592,17 @@ const mainWindow = (): Promise => { browserWindow.webContents.send(ELECTRON_EVENTS.BLUR); }); + // Handle renderer process crashes by relaunching the app + browserWindow.webContents.on('render-process-gone', (event, detailed) => { + if (detailed.reason === 'crashed') { + // relaunch app + app.relaunch({args: process.argv.slice(1).concat(['--relaunch'])}); + app.exit(0); + } + Log.info('App crashed render-process-gone'); + Log.info(JSON.stringify(detailed)); + }); + app.on('before-quit', () => { // Adding __DEV__ check because we want links to be handled by dev app only while it's running // https://github.com/Expensify/App/issues/15965#issuecomment-1483182952