Electron 42 went out of support when Electron 45 shipped on 2026-10-21 (Electron supports the latest three major versions). After this change the desktop app and Factory both run on a supported Electron version. The upgrade surfaced three Electron 45 behaviour changes, and each is fixed here.
What changed
apps/desktopandapps/factory:electron42.11.18 → 45.0.0. The lockfile only changes the Electron entries; 45.0.0 has the same dependencies as 42.- Browser screenshots to the clipboard (
browserHost.ts): Electron 44 removedclipboard.writeImage, so on 45 every browser-panel screenshot would throw. It now usesclipboard.write([new ClipboardItem({ "image/png": … })]). - Phone and tablet browser sizes (
browserHost.ts): on 45,enableDeviceEmulation({ screenPosition: "mobile" })ignores the page's viewport tag, so awidth=device-widthpage laid out 980px wide instead of 390px. The device size is now set with the DevTools protocol'sEmulation.setDeviceMetricsOverride, which gives the same result on 42 and 45.enableDeviceEmulationremains the fallback if the page's debugger is taken. The debugger now stays attached while a device size is set, including with the System colour scheme. - Smoke scripts: on 45,
executeJavaScriptrejects results it can't clone, such as React-managed elements ("An object could not be cloned"); 42 returned{}for them. Therunhelpers in the review-threads, chat-reference, prompt-commands, history and chat-shell smokes now map that rejection totrue. The chat-shell capture retry also acceptsUnknownVizError, 45's name for a surface that isn't ready yet. - Patch changeset for both apps.
Why 45.0.0
45.1.0 is two days old and blocked by minimumReleaseAge. No advisories affect 45.0.0.
Other breaking changes checked (43–45)
| Change | Effect on our apps |
|---|---|
Sandboxed preloads lose Buffer / setImmediate / Node shims | None: both preloads use only contextBridge and ipcRenderer |
Screen capture reported as display-capture | None: browser-panel pages were already denied screen capture, and the app window has no permission handler |
getUserMedia desktop source rejects WebContents ids | None: recording uses chromeMediaSource: "tab" |
Sync safeStorage deprecated (removed in 46) | Desktop already uses the async API. Factory still uses the sync calls, which still work on 45. Must move before Electron 46. |
| ia32 / armv7l builds removed | None: Forge targets the host architecture |
Verification
- Desktop and factory
typecheckandlintare clean against the Electron 45 types. Factory vitest: 124/124. - Clipboard: a real Electron 45 round trip (
capturePage→clipboard.write→clipboard.read()) returnsimage/pngwith a valid PNG signature. It also confirmedclipboard.writeImageisundefinedon 45. - Viewport: a minimal script reproduced 980×2121 on 45 and 390×844 on 42. With the change,
test:browser-viewportpasses all 96 cases on 45 (it was failing 48). - I ran every non-packaged step of the desktop Windows workflow locally on 45:
- Review threads, chat reference, prompt commands, history, chat shell and native browser, and native browser permissions all pass after the fixes.
- Harness update fails locally on main with Electron 42 as well, so it's a local environment issue.
smoke.mjsstops locally atdatabase is locked, also on main with 42. CI's Windows job passes it.
- Not run:
electron-forge make, which CI doesn't run either. The next desktop release build should be checked.
Proved with real Electron 45 runs of the clipboard and viewport changes, plus the desktop workflow's smoke steps.
Created with Claude Opus 5.5 in Claude Code.
🤖 Generated with Claude Code
Activity
15WARNING
Review limit reached
You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.
Next included review available in 7 minutes.
View limit details
Limit details: You’ve used the included review currently available.
Review configuration:
Run configuration
- Source mode: Auto
- Repository: Unavailable
- Branch: Unavailable
- File: No configuration file from this repository applied
- Commit: Unavailable
- Layers: defaults
- Review profile: CHILL
- Plan: Advanced
- Run ID:
ce94fa41-901d-4200-9e38-99e07d89476b
Commits
Reviewing files that changed from the base of the PR and between 4fdeee593807f612528a2d8981fe95ff12ae6cae and 5d25e7c868a6bdbcfb9032e4b10263a125331936.
Files ignored due to path filters: 1
pnpm-lock.yamlis excluded by!**/pnpm-lock.yaml
Files selected for processing: 9
.changeset/electron-45-upgrade.mdapps/desktop/package.jsonapps/desktop/scripts/chat-reference-smoke.mjsapps/desktop/scripts/chat-shell-smoke.mjsapps/desktop/scripts/history-smoke.mjsapps/desktop/scripts/prompt-commands-smoke.mjsapps/desktop/scripts/review-threads-smoke.mjsapps/desktop/src/main/browserHost.tsapps/factory/package.json
- Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.
❤️ Share
-
- (https://twitter.com/intent/tweet?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A&url=https%3A//coderabbit.ai)
- Mastodon
Comment @coderabbitai help to get the list of available commands.
Codex Review Summary
This comment shows the latest Codex review activity on this pull request.
| Review | Status | Commit | Review trigger |
|---|---|---|---|
| 📝 Code Review | ✅ Completed 2026-10-29T15:58:36.457240Z | ba748ea | PR opened |
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review" or "@codex security review".
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.
Dependency Review
✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.OpenSSF Scorecard
| Package | Version | Score | Details | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| npm/electron | 45.0.0 | :green_circle: 6.9 | Details
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| npm/electron | 45.0.0 | :green_circle: 6.9 | Details
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| npm/electron | 45.0.0 | :green_circle: 6.9 | Details
|
Scanned Files
- apps/desktop/package.json
- apps/factory/package.json
- pnpm-lock.yaml
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
| Diff | Package | Supply Chain Security | Vulnerability | Quality | Maintenance | License |
|---|---|---|---|---|---|---|
| npm/electron@42.11.18 ⏵ 45.0.0 | +1 |
The latest updates on your projects. Learn more about Vercel for GitHub.