From 1561d4b3bb4125da2057bda7dcb29ec00a43630e Mon Sep 17 00:00:00 2001 From: Ben Wilson Date: Fri, 15 Aug 2025 11:07:27 +0100 Subject: [PATCH 1/7] refactor: :recycle: swap out deprecated setPreloads API for registerPreloadScript --- packages/plugin-electron-ipc/electron-ipc.js | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/packages/plugin-electron-ipc/electron-ipc.js b/packages/plugin-electron-ipc/electron-ipc.js index 22c2a7c3f0..fa86924941 100644 --- a/packages/plugin-electron-ipc/electron-ipc.js +++ b/packages/plugin-electron-ipc/electron-ipc.js @@ -34,21 +34,13 @@ module.exports = { } const setPreload = () => { - const bugsnagPreload = resolve(__dirname, 'dist', 'preload.bundle.js') + const bugsnagPreloadPath = resolve(__dirname, 'dist', 'preload.bundle.js') // for every session created, insert Bugsnag's preload script app.on('session-created', session => { - // setPreloads replaces any existing value, so check the existing value first - const existingPreloads = session.getPreloads() - session.setPreloads([bugsnagPreload, ...existingPreloads]) - - // ensure our preload is never replaced with subsequent setPreloads calls - const setPreloads = session.setPreloads - session.setPreloads = (...args) => { - // if an invalid (non-array) parameter is passed, send it through to the - // original method to let that raise an error in the default way - if (!Array.isArray(args[0])) setPreloads.call(session, ...args) - setPreloads.call(session, [bugsnagPreload, ...args[0]]) - } + session.registerPreloadScript({ + type: 'frame', + filePath: bugsnagPreloadPath + }) }) } From bd2e3415fb9114261a249cbb268f491ae6493352 Mon Sep 17 00:00:00 2001 From: Mikael Finstad Date: Tue, 20 Aug 2024 00:37:44 +0200 Subject: [PATCH 2/7] fix types if not i'm getting typescript errors when importing --- packages/electron/package.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/electron/package.json b/packages/electron/package.json index 06184aeccc..8a79219bed 100644 --- a/packages/electron/package.json +++ b/packages/electron/package.json @@ -3,7 +3,11 @@ "version": "8.4.0", "main": "src/notifier.js", "exports": { - ".": "./src/notifier.js", + ".": { + "types": "./types/notifier.d.ts", + "default": "./src/notifier.js", + "import": "./src/notifier.js" + }, "./main": "./src/client/main.js", "./renderer": "./src/client/renderer.js" }, From 55b178d8fddd09de7df1922a6b823bbbf68f519a Mon Sep 17 00:00:00 2001 From: Mikael Finstad Date: Thu, 22 Aug 2024 00:49:58 +0200 Subject: [PATCH 3/7] Update package.json fix also other exports --- packages/electron/package.json | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/packages/electron/package.json b/packages/electron/package.json index 8a79219bed..e3d8bb9246 100644 --- a/packages/electron/package.json +++ b/packages/electron/package.json @@ -8,8 +8,16 @@ "default": "./src/notifier.js", "import": "./src/notifier.js" }, - "./main": "./src/client/main.js", - "./renderer": "./src/client/renderer.js" + "./main": { + "types": "./types/notifier.d.ts", + "default": "./src/client/main.js", + "import": "./src/client/main.js" + }, + "./renderer": { + "types": "./types/notifier.d.ts", + "default": "./src/client/renderer.js", + "import": "./src/client/renderer.js" + } }, "types": "types/notifier.d.ts", "description": "@bugsnag/electron notifier", From 9d9a5d0e4a16f5cb9351cc39f3151e8d85b01101 Mon Sep 17 00:00:00 2001 From: Ben Wilson Date: Fri, 15 Aug 2025 12:45:01 +0100 Subject: [PATCH 4/7] docs: :memo: add CHANGELOG entry --- CHANGELOG.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 81431e0b5f..1fcafd413f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # Changelog +## [Unreleased] + +### Changed + +- (electron) Remove usage of deprecated `session.setPreloads` API [#2524](https://github.com/bugsnag/bugsnag-js/pull/2524) + +### Fixed + +- (plugin-electron-ipc) Fixed exports in `package.json` to improve TypeScript compatibility [#2524](https://github.com/bugsnag/bugsnag-js/pull/2524) + ## [8.4.0] - 2025-06-18 ### Added From 62e87927c6dbb7886d307f8063e6657017683e6a Mon Sep 17 00:00:00 2001 From: Ben Wilson Date: Fri, 15 Aug 2025 14:15:37 +0100 Subject: [PATCH 5/7] chore: :goal_net: add error handling to preload --- packages/plugin-electron-ipc/electron-ipc.js | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/packages/plugin-electron-ipc/electron-ipc.js b/packages/plugin-electron-ipc/electron-ipc.js index fa86924941..91cc490bfe 100644 --- a/packages/plugin-electron-ipc/electron-ipc.js +++ b/packages/plugin-electron-ipc/electron-ipc.js @@ -29,18 +29,22 @@ module.exports = { ipcMain.handle(CHANNEL_RENDERER_TO_MAIN, bugsnagIpcMain.handle) ipcMain.on(CHANNEL_RENDERER_TO_MAIN_SYNC, bugsnagIpcMain.handleSync) - setPreload() + setPreload(client) } } -const setPreload = () => { +const setPreload = (client) => { const bugsnagPreloadPath = resolve(__dirname, 'dist', 'preload.bundle.js') // for every session created, insert Bugsnag's preload script app.on('session-created', session => { - session.registerPreloadScript({ - type: 'frame', - filePath: bugsnagPreloadPath - }) + try { + session.registerPreloadScript({ + type: 'frame', + filePath: bugsnagPreloadPath + }) + } catch (err) { + client._logger.error('Failed to register Bugsnag preload script:', err) + } }) } From 61decb9c79ad318cabc0a4c787c5b635e2ab3bdc Mon Sep 17 00:00:00 2001 From: Ben Wilson Date: Fri, 15 Aug 2025 15:02:47 +0100 Subject: [PATCH 6/7] refactor preload script to continue backwards compatibility --- packages/plugin-electron-ipc/electron-ipc.js | 31 +++++++++++++++----- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/packages/plugin-electron-ipc/electron-ipc.js b/packages/plugin-electron-ipc/electron-ipc.js index 91cc490bfe..014fdfb31c 100644 --- a/packages/plugin-electron-ipc/electron-ipc.js +++ b/packages/plugin-electron-ipc/electron-ipc.js @@ -34,17 +34,32 @@ module.exports = { } const setPreload = (client) => { - const bugsnagPreloadPath = resolve(__dirname, 'dist', 'preload.bundle.js') + const bugsnagPreload = resolve(__dirname, 'dist', 'preload.bundle.js') // for every session created, insert Bugsnag's preload script app.on('session-created', session => { - try { - session.registerPreloadScript({ - type: 'frame', - filePath: bugsnagPreloadPath - }) - } catch (err) { - client._logger.error('Failed to register Bugsnag preload script:', err) + if (typeof session.registerPreloadScript === 'function') { + try { + session.registerPreloadScript({ + type: 'frame', + filePath: bugsnagPreload + }) + } catch (err) { + client._logger.error('Failed to register Bugsnag preload script:', err) + } + } else { + // setPreloads replaces any existing value, so check the existing value first + const existingPreloads = session.getPreloads() + session.setPreloads([bugsnagPreload, ...existingPreloads]) + + // ensure our preload is never replaced with subsequent setPreloads calls + const setPreloads = session.setPreloads + session.setPreloads = (...args) => { + // if an invalid (non-array) parameter is passed, send it through to the + // original method to let that raise an error in the default way + if (!Array.isArray(args[0])) setPreloads.call(session, ...args) + setPreloads.call(session, [bugsnagPreload, ...args[0]]) + } } }) } From 055d3d6a9c5b6af3b440a995e89313f3851f9be0 Mon Sep 17 00:00:00 2001 From: Ben Wilson Date: Mon, 18 Aug 2025 10:21:02 +0100 Subject: [PATCH 7/7] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1fcafd413f..71e48bacc0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ ### Changed -- (electron) Remove usage of deprecated `session.setPreloads` API [#2524](https://github.com/bugsnag/bugsnag-js/pull/2524) +- (electron) Prefer `registerPreloadScript` over `session.setPreloads` API when available [#2524](https://github.com/bugsnag/bugsnag-js/pull/2524) ### Fixed