Hot Take uBlock Stripped - Dynamic Filtering is available on the webstore

In Mv3 the webrequest still exists but is heavily limited, so yes, functions removed from the new webrequest functionality (or not made available in the Declarative netRequest API) are not processed by AdGuard, hence also not by uBlock Stripped. Now going into details there is another difference between AdGuard Mv3 and uBlock Stripped is that uBlock Stripped rejects parameters (in scriptlets) which could also contain Javascript or are to long (usually a sign that it contains code), because uBlock Stripped also (like uBO-lite) adopted the using as less permissions as possible philiosophy (contrary to AdGuard Mv3, who wanted to make a Mv3 extension with 99,95% of the functionality of a Mv2 extension, which really is a major feat done by the Adguard team IMO).

I think most readers grasped my earlier post without needing to go into details, but for transparency I added them in this post. I really want to point out the ground breaking work of the AdGuard team which realized a full functional AdBlocker with the Mv3 restrictions. In the end Mv2 extensions will disappear.
 
Last edited:
Pushed version 9.05 to webstore

Changes (from 8.6.6)
- anti-tracking now consists of Disconnect, Ghoster and Kees1958 most used ad & tracking networks
- using AdGuard optimized Base plus Easylist (
- optimized filter organization for deployment
- reduced choices in Filter (block) list to use them more efficient after performance test
- moved Manage custom filters to quick access
- context menu now contains: Cosmetic element pickter, Cookie consent clicker, Dynamic DNR filtering and Privacy inspector

1788021750763.png
 
Last edited:
Version 9.05 is available in the Chrome Web Store

Pushed version 9.1 to the CWS, changelog

1. Fallback to AdGuard Base only, because optimized has lower update frequency (and I optimize it myself anyway)
2. Added (optional, disabled by default) the two most abused fingerprint protections of privacy Inspector (time-zone and battery-staus)
3. Updated programming principles to V5
4. Updated filterlists


Picture of updated Filter (block) list panel
1788079169601.png


What's new in the programming principles V5
Like 3P-Matrix-lite and Download Sentinel have matured and have not gotten updates for some time, uBlock Stripped also matured with V 9.1 (no more features planned).
Becaue it is raining in NL, I finally found the time to setup a framework of verification and validation tools. These tools reduce the regression test efforts for (maintenance) updates.

Again I want to thank @Jan Willy for his all his test work, improvement suggestions and additional feature suggestions, also @Morro for the context menu suggestion (providing access to powertools in the context menu, allowed for a simpler user interface) and @oldschool for reminding me on the less is more principle from time to time.

The external tools and project's own verifications tests add up to a tech stack which matches professional development teams :cool:

Here is the list

External tools​

node --check — Purpose: validates JS syntax on every file. Benefit: catches a typo that would silently crash the extension at load time.

ESLint — Purpose: static code analysis (unused variables, coding-style rules). Benefit: catches real bugs and enforces conventions before they ship.

JSDOM — Purpose: loads real HTML into a simulated browser and actually runs the page's JS against it. Benefit: catches runtime failures (like a script referencing an element that doesn't exist) that pure syntax checking can't see.

Knip — Purpose: scans the whole codebase for files/exports nothing uses anymore. Benefit: keeps dead code from quietly piling up.

depcheck — Purpose: checks every dependency is actually used, and every import has a matching dependency declared. Benefit: no bloat, no surprise missing packages.

stylelint — Purpose: custom rules checking colors/opacity values against verified, computed contrast ratios. Benefit: catches unreadable text (bad contrast) automatically instead of relying on someone spotting it by eye.

madge — Purpose: detects circular dependencies in the code's import graph. Benefit: catches architecture violations that can cause subtle load-order bugs.

jscpd — Purpose: finds copy-pasted code blocks across the project. Benefit: two copies of the same logic tend to drift apart over time — it is used in this project to find violations of Google's nr 1 development rule: re-use what is already available (proven & pristine code)

c8 — Purpose: measures real code coverage of the test scripts. Benefit: shows what's actually being tested instead of guessing.

semgrep — Purpose: a second, independent way (structural/AST-based, not text-based) of verifying the same security-sensitive code paths as one of the custom checks below. Benefit: two different detection methods catch more than either alone.


Custom project-specific checks​


CSS/HTML structural validators — Purpose: confirm every CSS and HTML file is well-formed (including catching an unclosed comment that could silently swallow a whole rule). Benefit: prevents a broken stylesheet or markup file from shipping unnoticed.

Functional smoke test — Purpose: actually exercises core modules' real functions (not just checks they parse) against a simulated storage system. Benefit: proves the code behaves correctly across a real sequence of operations, not just that it loads.

Message-routing cross-reference — Purpose: verifies every internal message type has both a registered route and a working handler. Benefit: catches a message that would silently do nothing when sent — no error, just dead on arrival.

Manifest/file-reference cross-reference — Purpose: verifies every file referenced in the manifest and code actually exists on disk, and vice versa. Benefit: catches leftover dangling references or orphaned files from a rename/removal.

DNR rule-ID range collision check — Purpose: verifies no two features' rule ID ranges overlap. Benefit: prevents one feature's rules from silently overwriting another's.

CSS class cross-reference — Purpose: verifies every CSS class used in the code has a matching style rule, and every style rule is actually used. Benefit: catches dead styling and missing styling in one pass.

regexFilter constraint checker — Purpose: verifies every regex-based blocking rule is actually compatible with Chrome's rule engine (RE2 syntax, ASCII-only, under the 1000-rule cap). Benefit: catches a rule that would silently fail at runtime in Chrome, not just pass a generic syntax check.

Scriptlet & cosmetic exception-logic testers — Purpose: test the real "allow this one site to bypass a rule" override engine against every hostname combination it needs to handle correctly. Benefit: proves per-site exceptions actually work before shipping, not just in theory.

Cosmetic format-equivalence check — Purpose: compares the new, faster cosmetic-rule storage format against the old format across every real generated filter list. Benefit: proves the performance optimization didn't change actual blocking behavior.

Version-congruence check — Purpose: verifies the extension version, the tools version, the tracked release-state file, and the changelog all agree with each other. Benefit: prevents silent version-number drift (a real incident this project had before this check existed).

JSON syntax / CMP data consistency / popup reference checks — Purpose: three checks verifying config-file validity, cookie-consent-handling data consistency, and that the popup UI's element references are all valid. Benefit: catches specific classes of silent breakage in those particular areas.

Worry-free countdown & reopen tests — Purpose: simulate the Worry-free popup UI and verify the countdown timer displays and updates correctly. Benefit: proves the actual UI behaves correctly, not just that the underlying code exists.

____

During the refactoring of uBO-lite I only found 6 bugs. When you take in to regard the number of lines codes of uBO-lite, it shows how great a programmer Raymond Hill is. I did not report them back, because I was told to @#$%⁻myself when I suggested to stick to uBOL's principles (like Odschool reminded me (y)). They also told me to develop an extension myself and not bother them anymore (not by GorHill, but his clan of adept followers), which I did :-) . I also asked for a clarification which I never got (link), so not feeling any obligation to report it back (although 1 was a serious issue).
 
Last edited:
I just noticed that with the new version, Reddit gets all 'messed up', so to speak, when the new uBlock-stripped is active.

This is how Reddit looks with the new version active. (Well, it looks like that for me.)

2026-08-30 12.04.54 www.reddit.com c9b2071151be.jpg


And this is how it looks when I switched off uBlock-stripped.

2026-08-30 12.03.43 www.reddit.com f9aed205d50e.jpg


I tried deactivating things in uBlock-stripped one by one, I tried whitelisting Reddit to see if that worked... it did not.
 
Last edited:
I will investigate why white listing does not work. Thanks for reporting.

Pausing UBS temporarily is a workaround which seems to work.

I am out of usage credits in Claude and I need to add special debug version. I can repair it Tuesday evening. Sorry about that.

So I rolled back to 8.6.6 which now displays as 9.0.6, it will take a few minutes (when I understand explanation correctly) to process.
 
Last edited:
Today, I did the day shift and will be doing the evening shift as cook in a restaurant owned by a frend of mine who's cook tore something in his knee with football yesterday. Tomorow they are closed and her (the owner) other cook will be back from holiday.

Tomorrow classes start again and I have to prepare for the advanced e-commerce course. I have not worked in marketing and sales since I retired at 60 (7 years ago), so besided the fact that I ran out of tokens/credits implementing the test stack for version 9.1, I don't have the time to investigate the regression bug. Apoligize for that, but 9.0.6 (which is rolled back version 8.6.6) hopefully does not has the reddit bug.

I will first check wheter the newly added filters cause the bug or the optimizations implemented using the newly added verifications are the cull prit. Any way back to the kitchen again.
 
@Jan Wiily

This morining noticed that redditstatic.com is blocked, When I added an allow rule for it (@@redditstatic.com) in ABP-import it worked okay.

The allow list not working is an old bug, have to check how it came back. Also I have to backtrack which filter redditstatic blocks (probably the newly introduced Disconnect or Ghostery). Tuesday evening I will have a look at it.
 
  • Thanks
  • Like
Reactions: Morro and Jan Willy
@Morro apologize

My inexperience with Google Developer Portal, made that version 9.1 was published (I already had cancelled 9.1, so I did not enable other versions waiting for review).

I pushed 9.1.2 to the webstore which is version 8.6.2 which did not had the allow-list bug and also does not block redditstatic.com. Hopefully it is available soon.

The pause option does work in 9.1.1
 
Last edited:
  • Thanks
  • Like
Reactions: Morro and Jan Willy
This morining noticed that redditstatic.com is blocked,
It's not my intention to make the issue more complicated as it is, but if I understand well, redditstatic.com is a third party. In the Dynamic DNR filtering panel it shows up as 'Allowed' (the "Blocked' panel is empty). So no matching filter, security rule or override. To me it looks something cosmetic. I lack the knowledge to interprete all the F12 notifications, but I assume that they offer any clarity.
 
  • Hundred Points
Reactions: LinuxFan58
I noticed it was blocked using dev-tools of Chrome (right click inspect), so I assumed one of the filters blocked it, because adding @@redditstatic.com in ABP-import fixed it. Interesting twitch that Dnymaic DNR filtering showed it was allowed. I also disabled Security & Privacy, so it is also not using non-standard ports.
 
  • Like
Reactions: Jan Willy
Luckily version 9.1.2 (which is 8.6.2) is in CWS so old working version is restored again. Tuesday evening I will look into the mistereous redditstatic block and cosmetic mess up of reddit of the withdrawn update (current version processes it okay).
 
  • Hundred Points
  • Like
Reactions: Morro and Jan Willy
FYI, just a notice

When you have enabled the "Block suspicious 3P-links" protection in Security & Privacy and either a third-party link
a) the link itself contains puny-code (non latin or non greek characters)
a) pointing to an IP-address only
b) connecting to a non-standard port
c) connects to a Dynamic DNS or Free-hosting website often used for hosting

You get this, but because the counter of uBlock Stripped shows 1, you will know it was because of above reason.

1788240595581.png
 
  • Like
Reactions: Morro and Jan Willy