Next generation Brave browser for macOS, Windows, Linux, Android.
This repository holds the build tools needed to build the Brave desktop browser for macOS, Windows, and Linux. In particular, it fetches and syncs code from the projects we define in
You can visit our website to get the latest stable release.
For other versions of our browser, please see:
Please see the contributing guidelines
Join the Q&A community if you'd like to get more involved with Brave. You can ask for help, discuss features you'd like to see, and a lot more. We'd love to have your help so that we can continue improving Brave.
Help us translate Brave to your language by submitting translations at https://www.transifex.com/brave/brave/
Follow @brave on Twitter for important news and announcements.
Follow the instructions for your platform:
Once you have the prerequisites installed, you can get the code and initialize the build environment.
git clone [email protected]:brave/brave-browser.git cd brave-browser npm install
this takes 30-45 minutes to run
the Chromium source is downloaded which has a large history
npm run init
brave-core based android builds should use
npm run init -- --target_os=android --target_arch=arm(or whatever cpu type you want to build for)
You can also set the targetos and targetarch for init and build using
npm config set target_os android npm config set target_arch arm
The default build type is component.
# start the component build compile npm run build
To do a release build:
# start the release compile npm run build Release
brave-core based android builds should use
npm run build -- --target_os=android --target_arch=armor set the npm config variables as specified above for
Running a release build with
npm run build Releasecan be very slow and use a lot of RAM especially on Linux with the Gold LLVM plugin.
To run a statically linked build (takes longer to build, but starts faster)
npm run build -- Static
To run a debug build (Component build with is_debug=true)
npm run build -- Debug
You may also want to try [[using sccache|sccache-for-faster-builds]].
To start the build:
npm start [Release|Component|Static|Debug]
npm run sync -- [--force] [--init] [--create] [brave_core_ref]
This will attempt to stash your local changes in brave-core, but it's safer to commit local changes before running this
npm run syncwill (depending on the below flags):
npm installon child projects)
| flag | Description | |---|---| |
[no flags]|updates chromium if needed and re-applies patches. If the chromium version did not change it will only re-apply patches that have changed. Will update child dependencies only if any project needed updating during this script run
--create|when used with
brave_core_refit will create a branch if one does not already exist| |
--force|updates both Chromium and brave-core to the latest remote commit for the current brave-core branch and the Chromium ref specified in brave-browser/package.json (e.g.
18.104.22.168). Will re-apply all patches. Will force update all child dependencies
--init|force update both Chromium and brave-core to the versions specified in brave-browser/package.json and force updates all dependent repos - same as
npm run init|
npm run sync brave_core_refto checkout the specified brave-core ref and update all dependent repos including chromium if needed
brave-core> git checkout -b branch_name
brave-browser> npm run sync -- --create branch_name
brave-core> git fetch origin brave-core> git checkout [-b] branch_name brave-core> npm run sync ...Updating 2 patches... ...Updating child dependencies... ...Running hooks...
brave-browser> npm run sync --create branch_name ...Updating 2 patches... ...Updating child dependencies... ...Running hooks...
brave-core> git pull brave-core> npm run sync ...Updating 2 patches... ...Updating child dependencies... ...Running hooks...
brave-browser> git checkout master brave-browser> git pull brave-browser> npm run sync -- --init
brave-core> git checkout featureB brave-core> git pull brave-browser> npm run apply_patches ...Applying 2 patches...
GOOGLE_API_KEYenvironment variable with your key as per https://www.chromium.org/developers/how-tos/api-keys to enable Google SafeBrowsing.
See Troubleshooting for solutions to common problems.