forge icon indicating copy to clipboard operation
forge copied to clipboard

Forge 8

Open erickzhao opened this issue 3 weeks ago • 2 comments

This issue outlines the work for the next major version of Electron 8.

Goals

  • Bump our engines requirement 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.

  • [x] Set up npm trusted publisher: https://github.com/electron/forge/pull/4070
  • [ ] Migrate to Node.js 22 and ESM
  • [x] Remove Electron Forge 5 import code: https://github.com/electron/forge/pull/4083
  • [x] Remove rechoir and interpret config loading: https://github.com/electron/forge/pull/4066
  • [x] Remove global templates: https://github.com/electron/forge/pull/4065
  • [x] Refactor E2E API tests to pull from local modules
  • [ ] Refactor initLink to work better with Yarn 4
  • [ ] Improve native module support with Vite and Webpack
  • [ ] Minimize other dependencies
  • [ ] Move bootstrap commands to create-electron-app
  • [ ] Define a stable third-party extension API
  • [ ] Add GitHub Actions templates
  • [ ] Update template linting
  • [ ] Improve CI publishing story
  • [ ] Document @electron-forge/tracer usage and best practices
  • [ ] Move Forge documentation into /docs folder
  • [ ] Move TypeDoc to packages.electronjs.org
  • [ ] Rename publish command to release to avoid conflicts with npm publish
  • [ ] Move away from file:// protocol in templates

erickzhao avatar Dec 04 '25 22:12 erickzhao

@erickzhao Does this task imply transition from the "module": "commonjs" and "moduleResolution": "node" in tsconfig.json of the setup templates to the "module": "nodenext" and "moduleResolution": "bundler"?

RareScrap avatar Dec 16 '25 05:12 RareScrap

@RareScrap nodenext is a moving target so I'd prefer to avoid it but yeah definitely moving away from the current tsconfig settings.

erickzhao avatar Dec 16 '25 18:12 erickzhao