Skip to content

Upgrade Electron to 39.2.7 to fix macOS Tahoe GPU performance regression - #931

Merged
thomasnordquist merged 4 commits into
masterfrom
copilot/update-electron-versions
Dec 20, 2025
Merged

Upgrade Electron to 39.2.7 to fix macOS Tahoe GPU performance regression#931
thomasnordquist merged 4 commits into
masterfrom
copilot/update-electron-versions

Conversation

Copilot AI commented Dec 20, 2025

Copy link
Copy Markdown
Contributor

Electron versions prior to 36.9.2/37.6.0/38.2.0 suffer from a major GPU performance regression on macOS 15 (Tahoe). This updates to the latest stable release (39.2.7).

Changes

  • Electron: 29.2.0 → 39.2.7
  • Type compatibility fixes for stricter Electron 39 type enforcement:
    • SaveDialogReturnValue.filePath: Changed from undefined to empty string when dialog is canceled
    • Iterator usage: Replaced for...of over Map.entries() with Array.from() for ES2017 target compatibility

Example

// Before (fails type check in Electron 39)
backendRpc.on(makeSaveDialogRpc(), async request => {
  return { canceled: true, filePath: undefined }
})

// After
backendRpc.on(makeSaveDialogRpc(), async request => {
  return { canceled: true, filePath: '' }
})
// Before (compilation error with ES2017 target)
for (const [connectionId, webContentsId] of this.connectionOwners.entries()) {
  if (webContentsId === sender.id) {
    this.connectionOwners.delete(connectionId)
  }
}

// After
Array.from(this.connectionOwners.entries()).forEach(([connectionId, webContentsId]) => {
  if (webContentsId === sender.id) {
    this.connectionOwners.delete(connectionId)
  }
})

Screenshot

Application running with Electron 39.2.7:

MQTT Explorer Connection Form

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • app-telemetry.t7n.de
    • Triggering command: /home/REDACTED/work/MQTT-Explorer/MQTT-Explorer/node_modules/electron/dist/chrome_crashpad_handler /home/REDACTED/work/MQTT-Explorer/MQTT-Explorer/node_modules/electron/dist/chrome_crashpad_handler --monitor-self-annotation=ptype=crashpad-handler --no-rate-limit --database=/home/REDACTED/.config/MQTT-Explorer/Crashpad --url=REDACTED --annotation=_companyName=thomasnordquist --annotation=_productName=MQTT Explorer --annotation=_version=0.4.0-beta.5 --annotation=lsb-release=Ubuntu 24.04.3 LTS --annotation=plat=Linux --annotation=prod=Electron --annotation=ver=38.7.2 --initial-client-fd=61 --shared-client-connection (dns block)
    • Triggering command: /home/REDACTED/work/MQTT-Explorer/MQTT-Explorer/node_modules/electron/dist/chrome_crashpad_handler /home/REDACTED/work/MQTT-Explorer/MQTT-Explorer/node_modules/electron/dist/chrome_crashpad_handler --monitor-self-annotation=ptype=crashpad-handler --no-rate-limit --database=/home/REDACTED/.config/MQTT-Explorer/Crashpad --url=REDACTED --annotation=_companyName=thomasnordquist --annotation=_productName=MQTT Explorer --annotation=_version=0.4.0-beta.5 --annotation=lsb-release=Ubuntu 24.04.3 LTS --annotation=plat=Linux --annotation=prod=Electron --annotation=ver=38.7.2 --initial-client-fd=64 --shared-client-connection (dns block)
    • Triggering command: /home/REDACTED/work/MQTT-Explorer/MQTT-Explorer/node_modules/electron/dist/chrome_crashpad_handler /home/REDACTED/work/MQTT-Explorer/MQTT-Explorer/node_modules/electron/dist/chrome_crashpad_handler --monitor-self-annotation=ptype=crashpad-handler --no-rate-limit --database=/home/REDACTED/.config/MQTT-Explorer/Crashpad --url=REDACTED --annotation=_companyName=thomasnordquist --annotation=_productName=MQTT Explorer --annotation=_version=0.4.0-beta.5 --annotation=lsb-release=Ubuntu 24.04.3 LTS --annotation=plat=Linux --annotation=prod=Electron --annotation=ver=38.7.2 --initial-client-fd=56 --shared-client-connection (dns block)
  • redirector.gvt1.com
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --crashpad-handler-pid=4007 --enable-crash-reporter=21f844bd-a28f-4123-9113-645cfd46fc8e,no_channel --user-data-dir=/home/REDACTED/.config/MQTT-Explorer --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,3276333164901190862,7085038990776519106,262144 --enable-features=PdfUseShowSaveFilePicker --disable-features=ScreenAIOCREnabled,SpareRendererForSitePerProcess,TraceSiteInstanceGetProcessCreation --variations-seed-version (dns block)
    • Triggering command: /home/REDACTED/work/MQTT-Explorer/MQTT-Explorer/node_modules/electron/dist/electron /home/REDACTED/work/MQTT-Explorer/MQTT-Explorer/node_modules/electron/dist/electron /home/REDACTED/work/MQTT-Explorer/MQTT-Explorer --enable-mcp-introspection --remote-debugging-port=9222 --no-sandbox (dns block)
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --disable-dev-shm-usage --crashpad-handler-pid=4273 --enable-crash-reporter=21f844bd-a28f-4123-9113-645cfd46fc8e,no_channel --user-data-dir=/home/REDACTED/.config/MQTT-Explorer --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,14665164224057329752,10124714749095546070,262144 --enable-features=NetworkService,NetworkServiceInProcess,PdfUseShowSaveFilePicker --disable-features=AcceptCHFrame,AutoExpandDetailsElement,AvoidUnnecessaryBeforeUnloadCheckSync,CertificateTransparencyComponentUpdater,DestroyProfileOnBrowserClose,DialMediaRouteProvider,GlobalMediaControls,HttpsUpgrades,ImprovedCookieControls,LazyFrameL (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

Original prompt

This section details on the original issue you should resolve

<issue_title>MacOS Tahoe: Bump Electron to at least versions v38.2.0, v37.6.0 and v36.9.2</issue_title>
<issue_description>Major GPU performance issue on macOS 26 (electron/electron#48376).

https://www.heise.de/news/Electron-Nerv-App-zeigt-welche-Programme-mit-macOS-Tahoe-Probleme-machen-10865895.html?seite=all</issue_description>

<agent_instructions>Update electron, ensure demo video still runs, provide screenshots</agent_instructions>

Comments on the Issue (you are @copilot in this section)

@thomasnordquist I'll try to get all dependencies updated.

✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.

Copilot AI and others added 3 commits December 20, 2025 01:44
Co-authored-by: thomasnordquist <7721625+thomasnordquist@users.noreply.github.com>
Co-authored-by: thomasnordquist <7721625+thomasnordquist@users.noreply.github.com>
Co-authored-by: thomasnordquist <7721625+thomasnordquist@users.noreply.github.com>
Copilot AI changed the title [WIP] Update Electron to v38.2.0, v37.6.0, and v36.9.2 Upgrade Electron to 39.2.7 to fix macOS Tahoe GPU performance regression Dec 20, 2025
@thomasnordquist

Copy link
Copy Markdown
Owner

@copilot tests are failing with
$ mocha --require ts-node/register --require source-map-support/register --recursive ./src//**/.spec.ts

Exception during run: ../events/EventSystem/IpcMainEventBus.ts(29,55): error TS2802: Type 'IterableIterator<[string, number]>' can only be iterated through when using the '--downlevelIteration' flag or with a '--target' of 'es2015' or higher.

@thomasnordquist
thomasnordquist marked this pull request as ready for review December 20, 2025 02:06
@thomasnordquist
thomasnordquist merged commit 5a54ba4 into master Dec 20, 2025
0 of 5 checks passed
@thomasnordquist
thomasnordquist deleted the copilot/update-electron-versions branch December 20, 2025 02:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

MacOS Tahoe: Bump Electron to at least versions v38.2.0, v37.6.0 and v36.9.2

2 participants