Overview
Two primary build variants exist:- Store builds - Include a blocklist for official distribution platforms
- Experimental builds - No blocklist restrictions for personal use
Store builds
Official releases distributed through Firefox Add-ons and Edge Add-ons include a blocklist that respects copyright holder opt-out requests.Blocklist behavior
The extension checks visited domains against a maintained blocklist and disables stream detection on matching sites. Current blocklist contents:blocklist.json
Why blocklists exist
Store builds comply with distribution platform policies and honor opt-out requests from content owners who do not want the extension to operate on their websites.
- Creating an opt-out request issue
- Using the title format:
[Opt-Out Request] YourDomain.com - Providing verification information (domain and contact email)
Distribution channels
Store builds are available through:Experimental builds
Alternative builds for advanced users who prefer complete local control. These variants:- Contain no blocklist
- Allow unrestricted operation on all websites
- Are named differently to distinguish from store versions
- Are intended for personal use only
Naming convention
Experimental builds use a distinctive name:- Clearly identifies non-store variants
- Prevents confusion with official releases
- Signals the experimental nature of the build
Build process
The name change happens during asset copying:scripts/copy-assets.mjs
Building variants
The package.json scripts provide convenient commands for each variant:Store builds (with blocklist)
- MV2 store
- MV3 store
dist/mv2/- Build artifactsextension-mv2-chrome.zip- Chromium packageextension-mv2-firefox.xpi- Firefox package
- Firefox Add-ons submission
- Edge Add-ons submission (legacy)
Experimental builds (no blocklist)
- MV2 experimental
- MV3 experimental
dist/mv2-no-blocklist/- Build artifactsextension-mv2-no-blocklist-chrome.zipextension-mv2-no-blocklist-firefox.xpi
- Firefox manual installation
- Personal testing and development
Build all variants
Generate every combination at once:- All four variants (MV2/MV3 × store/experimental)
- Eight total files (4 dist directories + 4 archives)
Build variant script implementation
Build variant script implementation
The build-variant.mjs script orchestrates variant builds:See scripts/build-variant.mjs:16-37 for the complete logic.
scripts/build-variant.mjs
Environment variables
Key build environment variables:| Variable | Values | Effect |
|---|---|---|
MV_TARGET | mv2, mv3 | Selects manifest version |
NO_BLOCKLIST | true, unset | Removes blocklist checking |
VITE_NO_BLOCKLIST | true, unset | Passes no-blocklist flag to Vite |
DIST_DIR | path | Customizes output directory |
ZIP_BASENAME | string | Customizes archive filename |
MAKE_FIREFOX | true, false | Controls .xpi generation |
Choosing the right variant
Use store builds if:
- You want automatic updates from official stores
- You prefer vetted, reviewed extensions
- You’re okay with blocklist restrictions
- You’re not technical and want simple installation
Use experimental builds if:
- You need unrestricted operation
- You’re comfortable with manual installation
- You want to customize or modify the extension
- You understand the legal implications
Distribution guidelines
Experimental builds are for personal use only. Do not:
- Submit them to official extension stores
- Redistribute them publicly
- Use them to circumvent copyright protections
- ✅ Honor legitimate opt-out requests
- ✅ Update the blocklist in store builds
- ✅ Provide source code for transparency
- ❌ Do not endorse piracy or copyright violation
Related resources
- Manifest versions - Learn about MV2 vs MV3
- Privacy policy - Understand data handling
- Opt-out request template
- Full disclaimer