Releases: electron/forge
v8.0.0-alpha.6
The ESM Release
This release marks the culmination of our journey to bump all of our first-party Electron packages to Node 22 LTS + ESM.
Electron Forge is now a set of ESM packages and requires at least Node.js 22.12.0 (the first version to support require(esm) in CommonJS).
All dependent @electron/ npm packages have been bumped to their latest major version.
@electron/asar- Removed all default exports.
@electron/fuses- No additional breaking changes beyond Node.js and ESM requirements.
@electron/get- Removed deprecated
nightly_mirroroption. UsenightlyMirrorinstead. - Removed deprecated
forceoption. UsecacheMode: ElectronDownloadCacheMode.WriteOnlyinstead.
- Removed deprecated
@electron/notarize- Removed deprecated
altoolnotarization strategy. Thetoolparameter is no longer used.
- Removed deprecated
@electron/osx-sign- Removed deprecated
signAsync,walkAsync, andflatAsyncfunctions. The basesign,walk, andflatfunctions are now Promise-based exclusively.
- Removed deprecated
@electron/packager- ASAR is now enabled by default with
unpack: '**/{.**,**/}/**/*.node'(you likely can removed theauto-unpack-nativesForge plugin). derefSymlinksnow defaults totrue.- Hook arguments are now consolidated into a single object parameter and hooks are promisified.
- ASAR is now enabled by default with
@electron/rebuild- Removed default export.
- Removed unused
nodeGypPathfield from theRebuilderobject.
@electron/universal- No additional breaking changes beyond Node.js and ESM requirements.
@electron/windows-sign- No additional breaking changes beyond Node.js and ESM requirements.
Additionally, many other dependencies are bumped to their latest major version! Most notably, @electron-forge/plugin-vite now uses Vite 7.
Moving init and import out of @electron-forge/core
The init and import ("bootstrap") commands aren't useful once you have a Forge app working. Fundamentally, it doesn't make sense for them to exist within @electron-forge/core, especially since it also meant that all Forge apps ended up bundling webpack and vite in their node_modules (inherited from init depending on @electron-forge/template-*).
This release moves the core of the init and import logic into the create-electron-app package. 👍
What's next?
This is subject to change, but the next release will probably ship with:
- Vite 8
- Modern linting for templates
- Modern compiler options for TypeScript templates
- ESM bundling support for the Vite plugin
A full roadmap is available in #4082. (If you have any feedback or comments, feel free to leave them in the issue!)
Yours truly,
@erickzhao
Changelog
- fix(template): modernize eslint deps by @erickzhao in #4132
- feat!: Node 22 + ESM by @erickzhao in #4059
- chore: add local claude code settings to
.gitignoreby @erickzhao in #4158 - build: isolate yarn cache when running verdaccio by @erickzhao in #4161
- feat(create-electron-app)!: move
initandimportout of core by @erickzhao in #4148 - perf(plugin-vite): run production builds in isolated subprocesses by @MarshallOfSound in #4163
- fix(plugin-vite): improve child logging by @erickzhao in #4165
- build: replace eslint with oxlint by @erickzhao in #4169
- chore: bump version to 8.0.0-alpha.5 by @erickzhao in #4173
- fix: prune final
requirecalls by @erickzhao in #4176 - chore: bump version to 8.0.0-alpha.6 by @erickzhao in #4177
Full Changelog: v8.0.0-alpha.4...v8.0.0-alpha.6
v8.0.0-alpha.5
v8.0.0-alpha.4
What's Changed
- test: fix slow tests on
nextbranch by @erickzhao in #4076 - build: improve version + publish flow by @erickzhao in #4078
- ci: use
.nvmrcfile for CI by @erickzhao in #4081 - test: move AssetRelocatorPatch tests to slow tests by @erickzhao in #4080
- feat(import)!: remove Forge 5 import code by @erickzhao in #4083
- feat(core)!: remove rechoir + lodash templates from config loader by @erickzhao in #4066
- ci: optimize Windows builds with faster D:\ drive by @MarshallOfSound in #4038
- test: upgrade to Vitest 4 by @erickzhao in #4079
- build(deps): replace
ts-nodewithtsxby @erickzhao in #4085 - build(deps): update lint-roller to latest major version by @erickzhao in #4086
- fix(maker-wix): set default arch by @ShGKme in #3859
- fix(core): prevent duplicate app restarts when typing 'rs' multiple times by @MarshallOfSound in #4089
- ci: run post-merge on
nextbranch by @erickzhao in #4090 - test(slow): test api against
file:protocol fixtures by @erickzhao in #4087 - chore: fix formatting by @erickzhao in #4091
- test(slow): simplify bootstrapping tests by @erickzhao in #4096
- fix(template): add
private: trueby @erickzhao in #4103 - test: use verdaccio for e2e init testing by @erickzhao in #4100
- fix: interactive mode should proxy signals by @MarshallOfSound in #4102
- chore: remove
pre-pushhook by @erickzhao in #4117 - test: use verdaccio in more
initcases by @erickzhao in #4119 - feat(init)!: add
--package-managerflag by @erickzhao in #4107 - fix: apply correct version bump commit title by @erickzhao in #4122
- chore: bump version to 8.0.0-alpha.4 by @erickzhao in #4131
Full Changelog: v8.0.0-alpha.3...v8.0.0-alpha.4
v7.11.1
What's Changed
Forge v7.11 is the first version to be released using npm trusted publishing. A lot of internal build and test refactoring went into this release to make publishing seamless for releasers.
Full Changelog
- build: Yarn 4 CI hardening by @erickzhao in #4028
- feat(init): add
--electron-versionflag by @erickzhao in #4037 - build(deps): bump vite from 5.4.20 to 5.4.21 by @dependabot[bot] in #4036
- chore: update
node-abito latest by @erickzhao in #4046 - build(deps): bump brace-expansion from 1.1.11 to 1.1.12 by @dependabot[bot] in #4047
- build(deps): bump vite from 5.4.20 to 5.4.21 by @dependabot[bot] in #4049
- build: remove electronegativity plugin by @erickzhao in #4053
- build(deps): bump actions/download-artifact from 5.0.0 to 6.0.0 by @dependabot[bot] in #4041
- build(deps): bump actions/upload-artifact from 4.6.2 to 5.0.0 by @dependabot[bot] in #4042
- build(deps): bump actions/stale from 10.0.0 to 10.1.0 by @dependabot[bot] in #4044
- build(deps): bump actions/setup-python from 5.6.0 to 6.0.0 by @dependabot[bot] in #4040
- build(deps): bump actions/setup-node from 4.4.0 to 6.0.0 by @dependabot[bot] in #4043
- build(deps): bump actions/checkout from 5.0.0 to 6.0.0 by @dependabot[bot] in #4064
- build(deps): bump actions/setup-python from 6.0.0 to 6.1.0 by @dependabot[bot] in #4063
- fix(cli): mark vite plugin as experimental by @erickzhao in #4068
- ci: backport trusted publisher changes by @erickzhao in #4071
- chore: Revert "ci: backport trusted publisher changes (#4071)" by @erickzhao in #4077
- build(deps): bump node-forge from 1.3.1 to 1.3.2 by @dependabot[bot] in #4069
- ci: add trusted publishing to Forge 7 by @erickzhao in #4088
- docs: add
nextREADME notice by @erickzhao in #4093 - fix(template): add
private: trueby @erickzhao in #4101 - build(deps): bump jws from 4.0.0 to 4.0.1 by @dependabot[bot] in #4105
- test: backport test improvements from
nextby @erickzhao in #4106 - build(deps): bump actions/download-artifact from 6.0.0 to 7.0.0 by @dependabot[bot] in #4110
- build(deps): bump actions/upload-artifact from 5.0.0 to 6.0.0 by @dependabot[bot] in #4111
- build(deps): bump actions/setup-node from 6.0.0 to 6.1.0 by @dependabot[bot] in #4112
- build(deps): bump actions/checkout from 6.0.0 to 6.0.1 by @dependabot[bot] in #4113
- build(deps): bump actions/cache from 4.3.0 to 5.0.1 by @dependabot[bot] in #4114
- test: use verdaccio in more
initcases by @erickzhao in #4116 - chore: version bump by @erickzhao in #4120
- fix: apply correct version bump commit title by @erickzhao in #4121
- chore: bump version to 7.11.0 by @erickzhao in #4123
- chore: use yarn
workspace:*cross-references by @erickzhao in #4126 - chore: bump version to 7.11.0 by @erickzhao in #4127
- fix(create-electron-app): add missing
repositoryfield by @erickzhao in #4128 - chore: bump version to 7.11.1 by @erickzhao in #4129
Full Changelog: v7.10.2...v7.11.1
v8.0.0-alpha.3
Electron Forge 8
This is the first published release of the next branch, which contains code for future releases of Electron Forge 8. For now, the alpha stage indicates that the toolchain is still in active development and to use it at your own risk.
Eventually, a future beta stage will indicate that the toolchain ready for early adopters. For now, each Alpha release will note whenever breaking changes are released.
Breaking Changes
- feat(core)!: remove global module templates by @erickzhao in #4065
- fix(publisher-gcs)!: do not gzip artifacts by @MarshallOfSound in #4034
- feat!: expose artifact version to static publishers by @MarshallOfSound in #4033
- build: remove electronegativity plugin by @erickzhao in #4053
Other Changes
- feat(init): add
--electron-versionflag by @erickzhao in #4037
Internal
- build: Yarn 4 CI hardening by @erickzhao in #4028
- build(deps): bump vite from 5.4.20 to 5.4.21 by @dependabot[bot] in #4036
- chore: update
node-abito latest by @erickzhao in #4046 - build(deps): bump brace-expansion from 1.1.11 to 1.1.12 by @dependabot[bot] in #4047
- build(deps): bump vite from 5.4.20 to 5.4.21 by @dependabot[bot] in #4049
- test(fuses): use local modules instead of
initLinkby @erickzhao in #4057 - chore: use yarn
workspace:*cross-references by @erickzhao in #4056 - chore: add eslint config change to
.git-blame-ignore-revsby @erickzhao in #4062 - ci: set up npm trusted publishing by @erickzhao in #4070
- chore: bump version to 8.0.0-alpha.1 by @erickzhao in #4072
- build: target "next" branch in gh release create by @VerteDinde in #4074
- chore: bump version to 8.0.0-alpha.3 by @VerteDinde in #4075
Full Changelog: v7.10.2...v8.0.0-alpha.3
v7.10.2
What's Changed
Highlights
- fix(maker-msix): rename and add named exports by @erickzhao in #4020
- fix(msix): use temp staging folder and fix types by @MarshallOfSound in #4021
- build: upgrade to Lerna 9 and Yarn 4 by @georgexu99 in #4009
- fix(maker-squirrel): make app in tmpdir by @MarshallOfSound in #4022
Other Changes
- build: update yarn version by @georgexu99 in #4023
- build: correct lerna-publish version by @VerteDinde in #4024
- build: move husky to postinstall by @VerteDinde in #4025
- docs: update CONTRIBUTING to include build by @VerteDinde in #4027
Full Changelog: v7.10.0...v7.10.2
v7.10.1
v7.10.0
The MSIX Release
Forge v7.10.0 adds experimental support for the MSIX packaging format on Windows. The new @electron-forge/maker-msix package adapts the standalone electron-windows-msix installer utility to work alongside the rest of the Electron Forge build and release pipeline.
npm install --save-dev @electron-forge/maker-msix
What's Changed
- fix(init): unbreak interactive force check by @erickzhao in #4007
- feat(msix): add maker-msix by @bitdisaster in #3978
New Contributors
- @bitdisaster made their first contribution in #3978
Full Changelog: v7.9.0...v7.10.0
v7.9.0
What's Changed
Vite Plugin Changes
In this release, a few improvements to the Vite plugin are important to note:
- We've had Out of Memory issues reported in the past for Vite builds with many renderer targets (ref #3965). Forge 7.9 adds the ability to limit the number of concurrent builds with the
concurrentconfiguration flag. Note that another workaround to memory issues is to increase V8's max memory size using the--max_old_space_sizeCLI flag in Node. - Forge 7.9 changes the default behaviour of Vite's static asset handling. Previously, the
publicDirwould copy to all build targets, where apps would typically only want to have the dir available for the web/renderer target. If you need to change this behaviour back, enable thebuild.copyPublicDiroption in the relevant Vite configurations.
Features:
- feat: updated publisher-s3 to support cache max-age for release files by @discorev in #3968
- feat: added inquirer as an alternative to --template cli by @sethcg in #3933
- feat(plugin-vite): add
concurrentoption by @erickzhao in #3990 - feat: improve Yarn Berry support by @erickzhao in #3997
Bug Fixes and Improvements
- build(deps): bump vite from 5.4.19 to 5.4.20 by @dependabot[bot] in #4001
- build(deps): use
@vscode/sudo-promptfork by @erickzhao in #3983 - build(deps): update
form-databy @erickzhao in #3991 - fix: wait for previous app to exit before restarting by @MarshallOfSound in #3973
- fix(plugin-vite): only copy
/publicin the renderer by @erickzhao in #3971 - fix(core-utils): startLogic was called in incorrect context by @Hill-98 in #3809
- fix(plugin-vite): handle object-like inputs from rollup options in CLI output by @erickzhao in #3982
- fix(plugin-vite): support
electron/*subpath imports by @erickzhao in #3988 - fix(plugin-vite): clearer bundle error state by @erickzhao in #3987
New Contributors
- @Hill-98 made their first contribution in #3809
- @sethcg made their first contribution in #3933
- @discorev made their first contribution in #3968
Full Changelog: v7.8.3...v7.9.0
v7.8.3
What's Changed
Bug Fixes & Improvements
- fix(plugin-fuses): only use fuses v1 by @erickzhao in #3972
Full Changelog: v7.8.2...v7.8.3

