This document describes the process for releasing a new version of Electron.
1-6-x, depending on which version you are releasing for.
npm run prepare-release -- --notesOnly to view auto generated release
notes. The notes generated should help you determine if this is a major, minor,
patch, or beta version change. Read the
Version Change Rules for more information.
The prepare release script will do the following: 1. Check if a release is already in process and if so it will halt. 2. Create a release branch. 3. Bump the version number in several files. See [this bump commit] for an example. 4. Create a draft release on GitHub with auto-generated release notes. 5. Push the release branch. 6. Call the APIs to run the release builds.
Once you have determined which type of version change is needed, run the
prepare-release script with arguments according to your need:
[major|minor|patch|beta]to increment one of the version numbers, or
--stableto indicate this is a stable version
npm run prepare-release -- major
npm run prepare-release -- minor
npm run prepare-release -- patch
npm run prepare-release -- beta
npm run prepare-release -- --stable
prepare-release script will trigger the builds via API calls.
To monitor the build progress, see the following pages:
Writing release notes is a good way to keep yourself busy while the builds are running. For prior art, see existing releases on [the releases page].
#123will automatically be converted to links on github.com.
patch release, use the following format:
## Bug Fixes * Fixed a cross-platform thing. #123 ### Linux * Fixed a Linux thing. #123 ### macOS * Fixed a macOS thing. #123 ### Windows * Fixed a Windows thing. #1234
minor release, e.g.
1.8.0, use this format:
## Upgrades - Upgraded from Node `oldVersion` to `newVersion`. #123 ## API Changes * Changed a thing. #123 ### Linux * Changed a Linux thing. #123 ### macOS * Changed a macOS thing. #123 ### Windows * Changed a Windows thing. #123
## Upgrades - Upgraded from Chromium `oldVersion` to `newVersion`. #123 - Upgraded from Node `oldVersion` to `newVersion`. #123 ## Breaking API changes * Changed a thing. #123 ### Linux * Changed a Linux thing. #123 ### macOS * Changed a macOS thing. #123 ### Windows * Changed a Windows thing. #123 ## Other Changes - Some other change. #123
Use the same formats as the ones suggested above, but add the following note at the beginning of the changelog:
**Note:** This is a beta release and most likely will have have some instability and/or regressions. Please file new issues for any bugs you find in it. This release is published to [npm](https://www.npmjs.com/package/electron) under the `beta` tag and can be installed via `npm install electron@beta`.
prereleasecheckbox if you're publishing a stable release; leave it checked for beta releases.
npm run release -- --validateReleaseto verify that all of the required files have been created for the release.
Once the release builds have finished, run the
npm run release to finish the release process. This script will do the
1. Build the project to validate that the correct version number is being released.
2. Download the binaries and generate the node headers and the .lib linker used
on Windows by node-gyp to build native modules.
3. Create and upload the SHASUMS files stored on S3 for the node files.
4. Create and upload the SHASUMS256.txt file stored on the GitHub release.
5. Validate that all of the required files are present on GitHub and S3 and have
the correct checksums as specified in the SHASUMS files.
6. Publish the release on GitHub
7. Delete the
Once the publish is successful, run
npm run publish-to-npm to publish to
release to npm.
In the case of a corrupted release with broken CI machines, we might have to re-upload the binaries for an already published release.
The first step is to go to the
Releases page and delete the
corrupted binaries with the
SHASUMS256.txt checksum file.
Then manually create distributions for each platform and upload them:
# Checkout the version to re-upload. git checkout vTHE.RELEASE.VERSION # Do release build, specifying one target architecture. ./script/bootstrap.py --target_arch [arm|x64|ia32] ./script/build.py -c R ./script/create-dist.py # Explicitly allow overwritting a published release. ./script/upload.py --overwrite
After re-uploading all distributions, publish again to upload the checksum file:
npm run release