Repository navigation
Open
Milestone
Description
This issue outlines the work for the next major version of Electron 8.
Goals
- Bump our
enginesrequirement to Node.js 22 and update dependencies accordingly. - Publish all
@electron-forge/modules as ESM-only. - Ensure both ESM and CJS configs are loaded properly, and that both ESM and CJS Electron apps run properly.
- Improve native Node.js add-on support.
- Improve documentation for public consumption.
- Graduate all extensions to stable.
- Deprecate/remove unused features.
Release process
The next branch is tracking work for the next major version.
Electron Forge now uses npm trusted publishing for an easier and more secure release process.
Until this issue is closed for the Electron Forge 8.0.0 release, we will be proceeding with three distinct pre-release stages, which will have their corresponding distribution tags on npm:
alpha: Forge 8 is not ready for general consumption, and is actively being tweaked. At this point, maintainers will be dogfooding Forge 8 in their own apps to test it out. Use at your own risk!beta: Forge 8 should be stable enough for early adopters, but some breaking changes should be expected between versions.rc: In preparation for an 8.0.0 release, the Release Candidate stage is considered potentially stable unless bugs occur. Maintainers will decide on when Forge is ready for a stable release.
TODO
I've created an 8.0.0 milestone of bugs and feature requests to address before the product is ready for stable.
- Set up npm trusted publisher: ci: set up npm trusted publishing #4070
- Migrate to Node.js 22 and ESM feat!: Node 22 + ESM #4059
- Remove Electron Forge 5 import code: feat(import)!: remove Forge 5 import code #4083
- Remove
rechoirandinterpretconfig loading: feat(core)!: remove rechoir + lodash templates from config loader #4066 - Remove global templates: feat(core)!: remove global module templates #4065
- Refactor E2E API tests to pull from local modules test: use verdaccio for e2e init testing #4100
- Move package manager selection away from
NODE_INSTALLERand intoinitAPI via corepack feat(init)!: add--package-managerflag #4107 - Update template linting to oxc.rs libraries: feat(template): replace eslint/prettier with oxc.rs stack #4186
- Move
initandimportcommands away fromcoreintocreate-electron-appfeat(create-electron-app)!: moveinitandimportout of core #4148 - Rename
publishcommand toreleaseto avoid conflicts withnpm publishfeat: renamepublishcommand torelease#4305 - Move away from
file://protocol in templates feat(bundlers): opt-inapp://protocol for serving packaged renderers #4352 - Move Forge documentation into
/docsfolder docs: import documentation from electron-forge-docs #4345 - Unify JS/TS templates and bump
enginesto Node.js 22.13 feat(template): unify JS/TS templates #4229 - Write maker output to per-maker
<maker>/<arch>directories feat(maker-dmg)!: write DMGs to platform/arch subdirectories #4275 feat(maker-pkg)!: write PKGs to arch subdirectories #4383 - Graduate the Vite plugin from experimental feat(plugin-vite): graduate from experimental #4382
- Bump
@electron/*andelectron-installer-*dependencies to their latest majors build(deps): bump @electron/* and electron-installer-* packages #4379 - Default win32 maker should be MSIX
- Refactor
initLinkto work better with Yarn 4 - Improve native module support with Vite and Webpack
- Minimize other dependencies
- Define a stable third-party extension API
- Add GitHub Actions templates
- Document
@electron-forge/tracerusage and best practices - Move TypeDoc to
packages.electronjs.org
Reacted by MarkusPersad, Akshay Raj Gollahalli, Keeley Hammond, Median, Johnny IV Young Ospino, Jems, Khalil, Simon Schneegans, S V, Shyam Guthikonda and 2 more
Reacted by rtritto, Keeley Hammond, Median, Jems, Khalil, Simon Schneegans, S V and Jonathan Lindroth
Reacted by Aning
Metadata
Metadata
Assignees
Labels
No labels
Activity
[-]zzz[/-][+]Placeholder, please ignore for now[/+][-]Placeholder, please ignore for now[/-][+]Forge 8[/+]RareScrap commentedon Dec 16, 2025
@erickzhao Does this task imply transition from the
"module": "commonjs"and"moduleResolution": "node"intsconfig.jsonof the setup templates to the"module": "nodenext"and"moduleResolution": "bundler"?erickzhao commentedon Dec 16, 2025
@RareScrap
nodenextis a moving target so I'd prefer to avoid it but yeah definitely moving away from the current tsconfig settings.long76 commentedon Apr 28, 2026