Developing Electron

    Getting Started

    In order to contribute to Electron, the first thing you’ll want to do is get the code.

    Electron’s automate much of the setup for compiling Electron from source with different configurations and build targets.

    If you would prefer to build Electron manually, see the .

    Once you’ve checked out and built the code, you may want to take a look around the source tree to get a better idea of what each directory is responsible for. The source code directory structure gives a good overview of the purpose of each directory.

    1. By opening the issue for discussion
      • If you believe that you have found a new bug in Electron, you should report it by creating a new issue in the .
    2. By helping to triage the issue
      • You can do this either by providing assistive details (a reproducible test case that demonstrates a bug) or by providing suggestions to address the issue.

    See issues for more information.

    Making a Pull Request to Electron

    Most pull requests opened against the repository include changes to either the C/C++ code in the shell/ folder, the TypeScript code in the lib/ folder, the documentation in , or tests in the spec/ and spec-main/ folders.

    See pull requests for more information.

    If you want to add a new API module to Electron, you’ll want to look in .

    Details about each group and their reponsibilities can be found in the governance repo.

    Patches in Electron

    Electron is built on two major upstream projects: Chromium and Node.js. Each of these projects has several of their own dependencies, too. We try our best to use these dependencies exactly as they are but sometimes we can’t achieve our goals without patching those upstream dependencies to fit our use cases.

    As such, we maintain a collection of patches as part of our source tree. The process for adding or altering one of these patches to Electron’s source tree via a pull request can be found in patches.

    There are many different approaches to debugging issues and bugs in Electron, many of which are platform specific.