Skip to content

build(deps): bump @electron/* and electron-installer-* packages - #4379

Merged
erickzhao merged 2 commits into
nextfrom
deps/electron-installer-v4
Sep 11, 2026
Merged

build(deps): bump @electron/* and electron-installer-* packages#4379
erickzhao merged 2 commits into
nextfrom
deps/electron-installer-v4

Conversation

@erickzhao

Copy link
Copy Markdown
Member
  • I have read the contribution documentation for this project.
  • I agree to follow the code of conduct that this project follows, as appropriate.
  • The changes are appropriately documented (if applicable).
  • The changes have sufficient test coverage (if applicable).
  • The testsuite passes successfully on my local machine (if applicable).

Summarize your changes:

Upgrades every @electron/* and electron-installer-* dependency to its latest release.

New majors

  • electron-installer-debian ^3.2.0^4.0.0
  • electron-installer-redhat ^3.2.0^4.0.0

Both are now ESM-only and require Node >= 22.12, which matches Forge's own engines. Their programmatic API (default-exported async function returning { packagePaths }) is unchanged, and MakerDeb/MakerRpm already load them via dynamic import(), so no maker code changes were required for the upgrade itself.

Latest release within the current major

  • @electron/packager ^20.3.0
  • @electron/rebuild ^4.2.0
  • @electron/get ^5.1.0
  • @electron/fuses ^2.1.3
  • @electron/osx-sign ^2.7.0
  • @electron/notarize ^3.1.1
  • @electron/lint-roller ^3.3.0
  • electron-installer-common ^0.10.4

electron-installer-snap, electron-installer-dmg, and @malept/electron-installer-flatpak were already on their latest release.

Build fix: declare types: ["node"]

Bumping @electron/osx-sign exposed a latent problem. The TypeScript build only ever received @types/node through a /// <reference types="node" /> inside a transitively nested @electron/osx-sign@2.3.0 declaration file. Once that copy was deduped away, every package failed with Cannot find name 'process', because the generated tsconfigs never declared types: ["node"] and the native TypeScript 7 compiler does not auto-include @types/*. tsconfig.base.json now declares it explicitly, and tools/gen-tsconfigs.ts propagates it to every package.

maker-deb: drop fakeroot from required binaries

electron-installer-debian 4.x invokes dpkg-deb directly and no longer wraps the build in fakeroot, so the maker no longer refuses to run on machines that only have dpkg. The maker README and docs/config/makers/deb.md are updated to match.

User-facing behavior changes from the installer majors

None of these require Forge config changes, but generated Linux packages will differ:

  • deb: .desktop entries gain Terminal=false and StartupWMClass. Default Depends now include libsecret-1-0 (used by Electron's safeStorage), prefer libasound2t64 | libasound2 | pulseaudio, and use gvfs / gnome-keyring instead of the removed gvfs-bin / libgnome-keyring0 package names.
  • rpm: .desktop entries gain Terminal=false and StartupWMClass. Default Requires now include libsecret and (libdrm or libdrm2). Stripping is skipped when cross-building for a different architecture, and rpmbuild --target now receives <arch>-none-<platform>.

Verification

yarn install --immutable, yarn build, yarn constraints, yarn knip, yarn lint:js, and the fast vitest project (522 tests) all pass locally. Both v4 installers were smoke-tested to import correctly through the built makers.

🤖 Generated with Claude Code

https://claude.ai/code/session_01KUdgwBibLdmA2Q58WB3KDg


Generated by Claude Code

Upgrades electron-installer-debian and electron-installer-redhat to
their new 4.x majors (ESM-only, Node >= 22.12, matching Forge's own
engines). Also bumps the remaining @electron/* and electron-installer-*
dependencies to their latest releases within their current major:

- @electron/packager ^20.3.0
- @electron/rebuild ^4.2.0
- @electron/get ^5.1.0
- @electron/fuses ^2.1.3
- @electron/osx-sign ^2.7.0
- @electron/notarize ^3.1.1
- @electron/lint-roller ^3.3.0
- electron-installer-common ^0.10.4

Declare `types: ["node"]` in tsconfig.base.json. The build previously
only picked up @types/node through a `/// <reference types="node" />`
in a transitively nested @electron/osx-sign@2.3.0 declaration file;
once that copy is deduped away the build lost Node's globals entirely.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KUdgwBibLdmA2Q58WB3KDg
electron-installer-debian 4.x invokes `dpkg-deb` directly and no longer
wraps the build in `fakeroot`, so the maker should not refuse to run on
machines that only have dpkg installed. Update the docs to match.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KUdgwBibLdmA2Q58WB3KDg
@erickzhao
erickzhao requested a review from a team as a code owner September 11, 2026 21:36
@github-actions github-actions Bot added the next label Sep 11, 2026
@erickzhao
erickzhao enabled auto-merge (squash) September 11, 2026 21:42

@claude claude Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code review found no issues

No high-confidence issues detected in this change.

@erickzhao
erickzhao merged commit 99ef7be into next Sep 11, 2026
15 checks passed
@erickzhao
erickzhao deleted the deps/electron-installer-v4 branch September 11, 2026 21:56
erickzhao added a commit that referenced this pull request Sep 11, 2026
…4384)

@electron/packager 20.3.0 (#4379) already omits win32/ia32 and
linux/armv7l from allOfficialArchsForPlatformAndVersion() for Electron
>= 44.0.0-alpha.4, so the guard added in #4377 never sees those arches
on an --arch=all expansion and never warns, which failed the "should
warn when filtering a dropped arch out of all" test on every platform.

Stub the packager arch list in that test so it exercises Forge's own
filter regardless of what the installed packager reports, and update
the stale comments that still described packager 18.x behaviour.


Claude-Session: https://claude.ai/code/session_01Uj4Vx4Acv7PY1MmGq2kf3e

Co-authored-by: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants