HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
brave
brave-core
C++2018–2026
brave / brave-core

brave-core

Core engine for the Brave browser for mobile and desktop. For issues https://github.com/brave/brave-browser/issues

38Distinct people
45Mentions
0Explicit recommenders
3.8KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Core engine for the Brave browser for mobile and desktop. For issues https://github.com/brave/brave-browser/issues

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 8–Nov 15 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/15/2026, 4:00:59 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year45 dated mentions

Observed mentions: 2018-09-13 00:00:52 UTC to 2026-10-12 03:28:21 UTC.

0369122018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments20182019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 5 mentions; 0 submissions, 5 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 8 mentions; 1 submissions, 7 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 6 mentions; 1 submissions, 5 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 5 mentions; 2 submissions, 3 comments20222023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 11 mentions; 1 submissions, 10 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 4 mentions; 1 submissions, 3 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments2026-01-01 00:00:00 UTC to 2027-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments. Incomplete calendar period.2026*

* An incomplete calendar period is marked with an outlined bar. Its count is not directly comparable with a full period.

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC101
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC505
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC817
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC615
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC523
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC11110
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC413
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC303
2026 (partial)2026-01-01 00:00:00 UTC2027-01-01 00:00:00 UTC202

From the project README

An excerpt from the repository, fetched Nov 13, 2026.

Read the project’s introduction
Brave Core Brave Core is a set of changes, APIs, and scripts used for customizing Chromium to make the Brave browser. Please also check https://github.com/brave/brave-browser which only holds the issues, releases and the wiki. Overview This repository holds the build tools needed to build the Brave desktop browser for all platforms. In particular, it fetches and syncs code from the projects defined in package.json and src/brave/DEPS: Chromium Fetches code via depot_tools. Sets the branch for Chromium (ex: 65.0.3325.181). brave-core Mounted at src/brave. Maintains patches for 3rd party Chromium code. adblock-rust Implements Brave's adblock engine. Linked through brave/adblock-rust-ffi. Resources Documentation and guides Issues Releases Wiki Downloads You can visit our website to get the latest stable release. Contributing Please see the contributing guidelines. Our Wiki also has some useful technical information, especially about setting the development environment. Security Policy Please see the security policy. Community 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. You can also ask questions and interact in the community-guest channel on Brave Software's Slack. Help us translate Brave to your language by submitting translations at https://explore.transifex.com/brave/brave_en/. Follow @brave on X for important news and announcements. Install prerequisites Follow the instructions for your platform: Android Linux iOS macOS Windows Clone and initialize Once you have the prerequisites installed, you can get the code and initialize the build environment. Clone the repo. brave-core must be checked out into ./src/brave within a pre-existing project folder: git clone git@github.com:brave/brave-core.git path-to-your-project-folder/src/brave cd path-to-your-project-folder/src/brave Initialize the build environment. This step will download the Chromium source, which has a large history (10's of gigabytes of data). This might take a really long time to finish depending on internet speed. # Most builds: pnpm run init # Android builds (replace `arm` with whichever CPU type you want to build for): pnpm run init --target_os=android --target_arch=arm # iOS builds: pnpm run init --target_os=ios Additional config needed to build are documented at https://github.com/brave/brave-browser/wiki/Build-configuration Internal developers can find more information at https://github.com/brave/internal/wiki/Build-configuration Build Brave The default build type is component. # start the component build compile pnpm run build To do a release build: # start the release compile pnpm run build Release brave-core based android builds should use pnpm run build --target_os=android --target_arch=arm brave-core based iOS builds should use the Xcode project found in ios/brave-ios/App. You can open this project directly or run pnpm run ios_bootstrap --open_xcodeproj to have it opened in Xcode. See the iOS Developer Environment for more information on iOS builds. Build Configurations Running a release build with pnpm run build Release can 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): pnpm run build Static To run a debug build (Component build with is_debug=true): pnpm run build Debug NOTE: the build will take a while to complete. Depending on your processor and memory, it could potentially take a few hours. Run Brave To start the build: pnpm start [Release|Component|Static|Debug] Update Brave pnpm 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 pnpm run sync will (depending on the below flags): 📥 Update sub-projects (chromium, brave-core) to latest commit of a git ref (e.g. tag or branch) 🤕 Apply patches 🔄 Update gclient DEPS dependencies ⏩ Run hooks 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. **Use this if you want the script to manage keeping you up to date instead of pulling or switching branches manually. ** --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-core/package.json (e.g. master or 74.0.0.103). Will re-apply all patches. Will force update all child dependencies. **Use this if you're having trouble and want to force the branches back to a known state. ** --init force update both Chromium and brave-core to the versions specified in brave-core/package.json and force updates all dependent repos - same as pnpm run init --sync_chromium (true/false) Will force or skip the chromium version update when applicable. Useful if you want to avoid a minor update when not ready for the larger build time a chromium update may result in. A warning will be output about the current code state expecting a different chromium version. Your build may fail as a result. -D, --delete_unused_deps Will delete from the working copy any dependencies that have been removed since the last sync. Mimics gclient sync -D. Run pnpm run sync brave_core_ref to checkout the specified brave-core ref and update all dependent repos including chromium if needed. Scenarios Create a new branch: > cd src/brave src/brave> git checkout -b branch_name Checkout an existing branch or tag: src/brave> git fetch origin src/brave> git checkout [-b] branch_name src/brave> pnpm run sync ...Updating 2 patches... ...Updating child dependencies... ...Running hooks... Update the current branch to the latest remote: src/brave> git
Read the full README on GitHub

What Hacker News says

6 sources
Great question! Dates and times are one of the most loathed obstacles in writing software that needs to work a particular way across millions of devices situated all across the globe in different regions and time zones. In our case, we had a bit of code that aimed to measure the time until midnight/tomorrow. But when clocks change at midnight (jumping forward or backward), you can wind up with days that appear to be longer than 24 hours in length. And when a day is more than ~24hr in length, you wind up with unexpected answers to seemingly simple math equations. A bit of logic, responsible for setting up a timer, wound up scheduling numerous timers when our 'How long until tomorrow' code began returning negative numbers. That set of unintended timers locked-up the application itself. You can see our issue for the behavior here: https://gi
Read the rest
thub.com/brave/brave-core/pull/11030. For 10 minutes of anxiety, check out 'The Problem of Time & Timezones' from Tom Scott of Computerphile: https://youtu.be/-5wpm-gesOY. It's a fantastic summary of the issues programmers face when dealing with time :) Sampson (Brave Team)
In Goodbye Brave
Great write-up! I did want to share a brief response to the following, however: > The new implementations in Brave and Firefox follow the exact parsing logic I wrote for EdgeDeflector. It’s not the only way to parse them, it’s not the best way to parse them, but it’s the way every third-party implementation now parses them. Neither codebases attribute the code to EdgeDeflector, although both are clearly inspired by it. (Don’t get me wrong, I’m fine with this.) With all due respect to the author, I don't believe this is an accurate statement. While the problem being solved (parsing a microsoft-edge: protocol string) is quite simple, there are still noticeable differences in how EdgeDeflector, Brave, and Firefox have chosen to tackle this process. EdgeDeflector (https://github.com/da2x/EdgeDeflector/blob/469a0c8523c6bb7fb...) checks to see
Read the rest
not only that the string begins with "microsoft-edge:", but also that it does not contain any space character (" "). The latter check *is not* conducted by Brave (https://github.com/brave/brave-core/blob/8a93d29c45800719c9e...) or Firefox (https://phabricator.services.mozilla.com/differential/change...). EdgeDeflector performs an initial case-insensitive check for the protocol, while Brave and Firefox do not (both expect lower-case characters). There is a code path in EdgeDeflector where a case-sensitive check may also be conducted. EdgeDeflector and Brave both remove the "microsoft-edge:" prefix from the input, but Brave performs and additional check at this point. If the resulting string is empty, Brave stops attempting to extract a workable URL. EdgeDeflector performs no such empty-string test, instead proceeding to check whether the resulting string starts with "https://" or "http://" (a case-insensitive match). Firefox also proceeds to check whether the string starts with "https:" or "http:", but in a case-sensitive manner. Brave, on the other hand, proceeds to check whether the resulting string starts with a ? character. If the string doesn't start with a ? character, Brave attempts to parse the string as a URL and initiate navigation. If the string begins with a ? character, Brave removes that character and proceeds to split the string into chunks on occurrences of the & character. With the string split into chunks, Brave cycles over each piece looking for one that starts with "url=". If a match is found, Brave attempts to parse everything after the = character as a URL. If it succeeds, that URL is visited. Firefox and EdgeDeflector do take a similar approach in these later steps. While EdgeDeflector utilizes .NET's `HttpUtility.ParseQueryString` to parse and extract the URL value, Firefox passes the string to the URLSearchParams constructor, and retrieves the "url" parameter from the resulting object. Brave is the odd-man out on this step, opting instead to split the string, and cycle through to the nearest matching chunk. While there are similarities here and there (given the simplicity of the task itself), there are stark differences as well. One thing is certain, however, Brave and Firefox both explicitly refer to EdgeDeflector as leading this effort to restore liberty to users impacted by Microsoft's heavy-handed approach to shoehorning users back into Microsoft Edge.
In Brave and Firefox to intercept links that force-open in Microsoft Edge
While I do think this is a problem ... One should always remember this Brave Help Article https://support.brave.com/hc/en-us/articles/360018121491-Wha... In which they, themselves, say (and always have been saying): " If your personal safety depends on remaining anonymous, we highly recommend using Tor Browser instead of Brave Tor windows. " Also this is a known issue, see https://github.com/brave/brave-core/pull/7909
In Brave Browser leaks your Tor / Onion service requests through DNS

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.