The Brave 1.0 browser for desktop operating systems is coming later this year and it will include several significant improvements that we’d like to share now. Over the past few months, we’ve been developing a new Brave browser that is based on Chromium (as is the current available version), but which also uses Chromium’s native user interface instead of our current HTML and JavaScript UI. Today we are making this rewrite available for developers as open source. Unlike the current version of Brave, this new browser will have support for nearly all Chrome features and extension APIs, but of course without including any code that phones home to Google, or to the Chrome Web Store.

Brave browser: the user’s trusted agent

At Brave, our goal is to be your trusted agent that operates always in your interests. First and by default, we block ads, tracking, fingerprinting, crypto-mining scripts, auto-play videos, and other abusive threats that are all too common on the Web today, while providing optional controls for unblocking. Second, via Brave Payments and the Basic Attention Token (BAT), we enable you to contribute seamlessly to your favorite sites and creators. And soon, by giving you the ability to see opt-in, private BAT ads and receive a 70% revenue share to fill your wallet, if you choose.

Our focus is on adding value above today’s major browsers that have been captured in whole or in part by advertising interests, and we continually seek better browser architectures built around the best-of-breed or OS-required rendering engines. For example, with Brave for iOS, we started with UIWebView for its powerful blocking API (NSURLProtocol), but we’re now in the midst of moving to WKWebView, to benefit from Apple’s newer engine and preferred embedding solution. Brave for Android already uses Chromium fully, of course without the code for Google accounts, sync, or other Google-specific surveillance risks.

We have been experimenting with replacing our desktop Muon runtime, which we forked from Electron in order to make critical security improvements, with a more comprehensive Chromium stack for the desktop browser (more technical details below). We’ve reached the point where we think that this trial is a success, and it represents the future of Brave on desktop. Switching to the Chromium user interface gives us much more support for Chrome’s features and APIs, as well as Chromium’s stability and its well-supported interface with the core browser engine. Once we switch over, this will free up our development effort to focus fully on Brave-specific features — the things like Brave Shields and BAT, which set us aside from the other browsers.

Development timeline for new Chromium builds

What we are publishing today is not yet ready to be released as an upgrade to the Muon-based Brave browser. Critical features such as Brave Payments, Tor private tabs, and sync still need to be added based on the Muon implementations. We’re committed to getting to feature parity with the shipping Brave version over the next several months, and there will be a seamless update process, just as we have provided across past major releases.

We’re still several months away from cutting over, and we’re not offering builds just yet, but we are extremely excited by this project, which we believe will allow us to focus more fully on Brave features and less on Chromium upgrades and basic browser work. We’ll provide more updates as development progresses.

The next major milestone for this new browser is to get to updatable builds so that all of our open-source contributors can test it and provide feedback. At that point, we will still not be ready to transition, so we’ll recommend that most users stay on the Brave stable release channel until we verge on 1.0. Interested users and of course developers who want to help test will be able to install both versions side by side.

The benefits of moving from Muon to Chromium

Brave for Windows, macOS, and Linux currently use the Chromium rendering engine, but (unlike Brave for Android) it uses a custom HTML and JavaScript user interface. Technical readers will know that we call the runtime for this user interface Muon, which is a more secure fork of Electron, and which therefore combines Chromium and Node.js to enable applications built using JavaScript and HTML user interfaces and Node modules for the application logic.

The new Chromium version has several benefits:

We’ll be able to close a number of bugs and issues that have been opened on the Muon front and back end code, in one shot. We will benefit from the stability and maturity of the Chromium front end and its well-supported interface to the Chromium engine.

Today with Muon, and tomorrow with Chromium, we always work hard to keep up with the stable release of the Chromium engine, in order to track ongoing fixes to critical bugs including security-sensitive ones. However, with the new approach, without Muon and the internal API compatibility-matching constraints that it brings, Chromium upgrade times should take less than a day instead of as long as the six week effort that we’ve faced in the past (this effort has required us to work ahead of the stable release on the Chromium beta channel).

We’ll have full extension API support. Over time, we will extend the extension API for Brave to express things such as specific shield settings. More on our extension plans in a future blog post, but for now, the good news is that Brave will be able to support many extensions that our users tell us they need in order to switch.

The Brave shields filtering code runs on the network I/O thread in the browser-kernel process, which gives greater concurrency and responsiveness than in the Muon browser process, and which means our ad and tracker blocking is even faster than equivalent blocking done from JavaScript by Chrome extensions.

As we won’t be re-implementing and re-optimizing basic browser features such as tabs, once we release the new version, we will be able to focus more completely on our Brave and BAT feature sets and the added value they bring to users above basic browsing.

Themes, including the much-requested dark theme!

Elimination of technical debt and risk, for example: V8 JavaScript engine incompatibility between Node.js and Chromium; reliance on (sometimes abruptly) Chrome-deprecated internal APIs and features over time; and legacy Electron architecture problems.

How developers can follow and contribute

The repositories for the work in progress source code are here:

https://github.com/brave/brave-browser : The bootstrap repository which provides build tools, and downloads other repositories that are needed to create a build, including Chromium and Brave specific sub-repositories.

https://github.com/brave/brave-core : The heart of the Brave browser, everything that is differentiated from Chromium such as shields, payments, Tor private tabs, and sync.

For users of the current Brave browser, rest assured that we’re continuing to innovate and add features to each release as we work toward the point where we switch over from Muon to pure Chromium. After the transition, we will retire the Muon version.