uBlock/platform/mv3
Raymond Hill 0aa0d81caf
[mv3] Re-work specific cosmetic filtering-related content scripts
To minimize delay to First Contentful Paint. The idea is to avoid
complex data structures such as Map in order to speed up first content
script execution. Use stringified arrays where practical and
instanciate those arrays from their stringified representation only
when there are actual cosmetic filters to apply.

Related commit:
https://github.com/gorhill/uBlock/commit/6039ef2b6d
2025-12-05 08:54:34 -05:00
..
chromium [mv3] Use "split" mode for "incognito" manifest key 2025-10-05 10:29:58 -04:00
description Import translation work from https://crowdin.com/project/ublock 2025-08-30 09:15:19 -04:00
edge [mv3][edge] Reject responseheaders rules only for non-regex rules 2025-11-23 11:16:16 -05:00
extension [mv3] Re-work specific cosmetic filtering-related content scripts 2025-12-05 08:54:34 -05:00
firefox [firefox] Signal that no data collection is required 2025-11-17 12:40:04 -05:00
safari [mv3][safari] Rwrite certain main_frame + regexFilter rules 2025-11-06 12:23:36 -05:00
scriptlets [mv3] Re-work specific cosmetic filtering-related content scripts 2025-12-05 08:54:34 -05:00
make-rulesets.js [mv3] Re-work specific cosmetic filtering-related content scripts 2025-12-05 08:54:34 -05:00
make-scriptlets.js [mv3] Re-work specific cosmetic filtering-related content scripts 2025-12-05 08:54:34 -05:00
package.json Add experimental mv3 version 2022-09-06 13:47:52 -04:00
README.md Update README.md 2025-08-18 09:40:32 -04:00
rulesets.json [mv3] Update EST list URLs 2025-10-23 08:50:50 -04:00
safe-replace.js Better integrate latest eslint version 2025-01-10 10:25:15 -05:00
salvage-ruleids.mjs [mv3] Fix safari build script 2025-04-19 14:39:00 -04:00

How to build MV3 uBO Lite

Instructions for reviewers.

The following assumes a linux environment.

  1. Open Bash console
  2. git clone https://github.com/gorhill/uBlock.git
  3. cd uBlock
  4. git submodule init
  5. git submodule update
  6. make mv3-[platform], where [platform] is either chromium, edge, firefox, or safari
  7. This will fully build uBO Lite, and during the process filter lists will be downloaded from their respective remote servers

Upon completion of the script, the resulting extension package will become present in:

  • Chromium: dist/build/uBOLite.chromium
  • Edge: dist/build/uBOLite.edge
  • Firefox: dist/build/uBOLite.firefox
  • Safari: dist/build/uBOLite.safari

The folder dist/build/mv3-data will cache data fetched from remote servers, so as to avoid fetching repeatedly from remote servers with repeated build commands. Use make cleanassets to remove all locally cached filter lists if you want to build with latest versions of filter lists.

The file dist/build/uBOLite.[platform]/log.txt will contain information about what happened during the build process.

The entry in the Makefile which implement the build process is tools/make-mv3.sh [platform].[1] This Bash script copy various files from uBlock Origin branch and MV3-specific branch into a single folder which will be the final extension package.

Notably, tools/make-mv3.sh [platform] calls a Nodejs script which purpose is to convert the filter lists into various rulesets to be used in a declarative way. The Nodejs version required is 17.5.0 or above.

All the final rulesets are present in the dist/build/uBOLite.[platform]/rulesets in the final extension package.


[1] c4d324362f/tools/make-mv3.sh