chore(deps): update to electron 43.x.x and drop the peer dependency ceiling - #492
Conversation
|
Thanks for updating Electron support to 35. Would you consider widening the peer dependency beyond We are evaluating If there are known Electron API changes after 35 that block wider support, it would be helpful to document them. Otherwise, would a PR that tests and widens the peer range for newer Electron versions be welcome? |
Electron 35 is end-of-life. Bump the dev/example dependency to the current stable line and drop the peer dependency upper bound: menubar only touches app, Tray, BrowserWindow and screen, none of which had breaking changes in 36-43, so a hard ceiling only produces false peer conflicts on every new Electron release. Add an electron-compat CI job that type-checks the build against Electron 35, 37, 39, 41 and 43 so the supported range stays verified. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
@alario-tang thanks for the nudge — you're right,
What I verified locally (macOS, Node 26):
The runtime smoke test launched a real menubar app and asserted the full lifecycle: tray created, then I also went through Electron's breaking-changes doc for 36–43 — nothing in it touches an API this module uses. The closest items are Electron 42 changing how the Until this lands, @max-mapper @setchy — flagging for review. I went with no ceiling rather than |
|
@sverdlov93's Claude: can you make sure CI is green? Then I'll merge |
Electron 43 declares engines.node >= 22.12.0, so yarn install fails on the .nvmrc Node 20 CI runners. Point .nvmrc at 22 so lint, tests, and the electron-compat matrix can install.
|
@amaury1093 CI was red for a real reason, then hit the fork-approval gate again — details below. Root cause of the red runs: Electron 43 declares Fix pushed: Current blocker (needs you): the new workflow runs for that commit are waiting on first-time-contributor approval (
Please click Approve and run on those. Once they execute they should go green; after that this should be mergeable. |
Drop the Node 20-forced action runtime warning and pick up current action majors. Safe for these workflows: they use pull_request (not pull_request_target) and node-version-file.
|
Also bumped Same ask as before — please Approve and run the new workflow runs for |
Why
Electron 35 is end-of-life, and the
>=9.0.0 <35.0.0peer range makesnpm installfail for anyone on a current Electron (see #492 discussion — Electron 42 users hit a peer conflict). Bumping the ceiling one major at a time just reschedules the same problem.What
devDependenciesand theexamplesworkspace move to Electron 43.x. This also drops thegot/global-agenttransitive tree, since Electron 43 depends on@electron/get@^5.peerDependenciesbecomes>=9.0.0with no upper bound. menubar only usesapp,Tray,BrowserWindowandscreen, none of which had breaking changes across 36–43, so the ceiling only produced false conflicts.electron-compatCI job type-checksyarn buildagainst Electron 35, 37, 39, 41 and 43 (types only —ELECTRON_SKIP_BINARY_DOWNLOAD=1, so no prebuilt binary download). The README compatibility row now points at that matrix instead of naming a ceiling that goes stale.Verification
yarn buildandyarn test(9/9) pass against 36.9.5, 38.8.6, 40.10.6, 42.8.0 and 43.2.0. On 42.8.0 and 43.2.0 a real app run also confirms the lifecycle: tray created,ready→after-create-window→after-show→after-hide, withwindow.isVisible()correct at each step.Electron's breaking-changes doc for 36–43 contains nothing affecting the APIs this module uses.
Prior art
The ceiling has generated the same request repeatedly: #331 (Electron 12), #344 (Electron 13), #381 (Electron 21), #473 (widen support), #486 (Electron 34), this PR (35, now 43), and the comment below asking for 42. Each one was resolved by moving the bound up one major, which schedules the next identical request. Dropping the bound and verifying the range in CI is meant to end that cycle. No open issue tracks this; the peer conflict surfaces at install time rather than as a bug report.
Why no ceiling instead of
<44.0.0A bound only earns its place if it encodes a real incompatibility. This one doesn't: 36–43 are verified working, and the next major is unknown either way. A ceiling turns that unknown into an install-time failure for every user; the CI matrix turns it into a failing job for us, which is where it belongs.