Electron Documentation1.7.9

Electron 1.7.9 / Docs / Development / Upgrading Chromium

Upgrading Chromium

This is an overview of the steps needed to upgrade Chromium in Electron.

Upgrade libcc to a new Chromium version

  1. Get the code and initialize the project:
  1. Update the Chromium snapshot
  1. Fix *.patch files in the patches/ and patches-mas/ folders.
  2. (Optional) script/update applies patches, but if multiple tries are needed you can manually run the same script that update calls: $ ./script/apply-patches
  1. Run the build when all patches can be applied without errors
  1. When the build succeeds, create a dist for Electron
  1. (Optional) Update script contents if there are errors resulting from files that were removed or renamed. (--no_zip prevents script from create dist archives. You don't need them.)

Update Electron's code

  1. Get the code:
  1. If you have libcc built on your machine in its own repo, tell Electron to use it:
  1. If you haven't yet built libcc but it's already supposed to be upgraded to a new Chromium, bootstrap Electron as usual $ ./script/bootstrap.py -v
  1. Set CLANG_REVISION in script/update-clang.sh to match the version Chromium is using.
  1. Checkout Chromium if you haven't already:
  1. Build Electron.
  1. Fix compilation and linking errors
  2. Ensure that Release build can be built too
  1. Update ./script/create-dist in the libcc repo, recreate a dist, and run Electron bootstrap script once again.

Tips for fixing compilation errors

When a Debug build of Electron succeeds, run the tests: $ ./script/test.py Fix the failing tests.

Follow all the steps above to fix Electron code on all supported platforms.

Updating Crashpad

If there are any compilation errors related to the Crashpad, it probably means you need to update the fork to a newer revision. See Upgrading Crashpad for instructions on how to do that.

Updating NodeJS

Upgrade vendor/node to the Node release that corresponds to the v8 version used in the new Chromium release. See the v8 versions in Node on

See Upgrading Node for instructions on this.

Verify ffmpeg support

Electron ships with a version of ffmpeg that includes proprietary codecs by default. A version without these codecs is built and distributed with each release as well. Each Chrome upgrade should verify that switching this version is still supported.

You can verify Electron's support for multiple ffmpeg builds by loading the following page. It should work with the default ffmpeg library distributed with Electron and not work with the ffmpeg library built without proprietary codecs.

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Proprietary Codec Check</title>
  </head>
  <body>
    <p>Checking if Electron is using proprietary codecs by loading video from http://www.quirksmode.org/html5/videos/big_buck_bunny.mp4</p>
    <p id="outcome"></p>
    <video style="display:none" src="http://www.quirksmode.org/html5/videos/big_buck_bunny.mp4" autoplay></video>
    <script>
      const video = document.querySelector('video')
      video.addEventListener('error', ({target}) => {
        if (target.error.code === target.error.MEDIA_ERR_SRC_NOT_SUPPORTED) {
          document.querySelector('#outcome').textContent = 'Not using proprietary codecs, video emitted source not supported error event.'
        } else {
          document.querySelector('#outcome').textContent = `Unexpected error: ${target.error.code}`
        }
      })
      video.addEventListener('playing', () => {
        document.querySelector('#outcome').textContent = 'Using proprietary codecs, video started playing.'
      })
    </script>
  </body>
</html>

See something that needs fixing? Propose a change to the source file.
Need a different version of the docs? See available versions.
Want something searchable? View all docs on one page