Should You Target Electron 35 Now That It Is Out of Support? — when and how should I migrate?
Desktop app teams need to decide whether Electron 35 is still a sensible target, or whether they should skip it and avoid older unsupported lines given Electron 35's breaking changes and expired support window.
Blockers
- framework/electron-35 — EOL 2025-09-02
- framework/electron-34 — EOL 2025-06-24
- requires_version: framework/electron-35 → engine/chromium-134
- requires_version: framework/electron-35 → runtime/nodejs-22.14.0
- requires_version: framework/electron-34 → engine/chromium-132
- requires_version: framework/electron-34 → runtime/nodejs-20.18.1
- removed
- deprecated
- deprecated
- changed
- changed
- requires_version: capability/linux-dialog-defaultpath-portal → package/portal-backend-4
- Lock-in via runtime/nodejs-22.14.0
- Lock-in via engine/chromium-134
- Lock-in via runtime/nodejs-20.18.1
- Lock-in via engine/chromium-132
Who this is for
- enterprise
- compliance
- small-team
Candidates
Skip Electron 35 and move directly to a currently supported Electron major
As of 2026-03-26, Electron supports only the latest three stable major releases. Electron 35.0.0 shipped on 2025-03-04 with Chromium 134 and Node.js 22.14.0, then reached end of life on 2025-09-02. By 2026-03-26, the supported stable lines are 39.0.0, 40.0.0, and 41.0.0, so targeting 35 now means starting on an unsupported branch.
When to choose
Use this when you are planning a new upgrade path in late March 2026 or later, your compliance or security posture expects vendor-supported runtimes, and you do not have a narrow migration window that requires landing briefly on 35 first.
Tradeoffs
You avoid landing on an already-expired line, but you may need to absorb more upgrade work in one step and validate newer Chromium and Node.js changes at the same time.
Cautions
Do not treat Electron 35 as a safe intermediate landing zone for a product that still needs normal security maintenance. As of 2026-03-26, its support window is already closed.
Keep Electron 35 only on a frozen legacy branch
Electron 35.0.0 introduced concrete migration work: `PrinterInfo.isDefault` and `PrinterInfo.status` were removed, `session.serviceWorkers.fromVersionID(versionId)` was deprecated in favor of `getInfoFromVersionID(versionId)`, and `Session.setPreloads` and `Session.getPreloads` were deprecated in favor of the preload registration APIs. It also changed `WebRequestFilter.urls`, where an empty array no longer means all URLs and developers must use `"<all_urls>"` explicitly. On Linux, Dialog API `defaultPath` is not supported through portal file chooser dialogs unless the portal backend is version 4 or higher. As of 2026-03-26, this line has been end-of-life since 2025-09-02.
When to choose
Use this only for short-lived emergency maintenance on an already-shipping Electron 35 app where the alternative is a risky immediate major jump. The decisive factor is that you are accepting unsupported status deliberately to buy time for a bounded migration.
Tradeoffs
This minimizes near-term code churn if you are already on 35, but you stay outside the supported release set and keep carrying deprecated APIs and platform caveats.
Cautions
Replace deprecated preload and service-worker APIs immediately, and audit any code that relied on `urls: []` in `WebRequestFilter`. Linux file dialog behavior can regress if your environment does not provide portal backend version 4 or higher.
Pin to Electron 34 or older only if the app is effectively maintenance-only
Electron 34.0.0 was released on 2025-01-14 with Chromium 132 and Node.js 20.18.1, and reached end of life on 2025-06-24. Pinning below 35 therefore does not avoid unsupported status; it chooses an even older unsupported branch. Electron's breaking-changes documentation also shows nearby majors already removed older behaviors such as `File.path` in Electron 32 and deprecated `BrowserView` in Electron 30, so staying back does not avoid the medium-term migration backlog.
When to choose
Use this only for products that are near retirement, contract-bound, or otherwise frozen enough that unsupported runtime risk is accepted. The decisive factor is organizational willingness to stop chasing Electron support rather than any technical advantage in 34 itself.
Tradeoffs
This fits a retirement or sustain-only plan, but it hardens the app around an older unsupported stack, reduces incentive to pay down the eventual migration backlog, and can leave the final decommissioning period dependent on internal compensating controls rather than upstream fixes.
Cautions
Do not present this as a security-preserving choice. Electron 34's end of life passed on 2025-06-24, earlier than Electron 35.
Try with your AI agent
$ npm install -g pocketlantern $ pocketlantern init # Restart Claude Code, Cursor, or your MCP client, then ask: # "Should You Target Electron 35 Now That It Is Out of Support? — when and how should I migrate?"