All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- New
modeparameter to alljson-pruneandtrusted-json-setrelated scriptlets, which allows to specify the way of pruning JSON objects #522. - Line-delimited JSON processing in
trusted-json-setrelated scriptlets #522. $remove$value to alltrusted-json-setrelated scriptlets, which allows removing specific properties #522.- Support for
JSONPathinjson-prune,json-prune-fetch-response,json-prune-xhr-response,trusted-json-set,trusted-json-set-fetch-responseandtrusted-json-set-xhr-responsescriptlets #522.
trusted-json-setnow supports method-only logging, filtered log-only output, JSONPath-based log-only filters, and verbose logs only when a write actually happens #308.log-addEventListenerscriptlet: added new optionalnoProtectparameter, improving compatibility with other scriptlets that need to overrideaddEventListener#551.- Updated @adguard/agtree to
4.1.0-beta.
- Logging original object in
trusted-json-setscriptlet, previously original and modified object were pointing to the same reference, so the same content was logged, now deep copy is created for original object #308. trusted-click-elementno longer throws when event handlers setcancelBubbleon spoofed events #555.
v2.3.1 - 2026-03-24
- Updated @adguard/agtree to
4.0.3.
disable-newtab-linksnot preventing clicks when the element has its ownclickhandler added viaaddEventListener#483.
v2.3.0 - 2026-03-18
- New value to
set-cookieandset-cookie-reloadscriptlets:all#501. - New value to
set-cookieandset-cookie-reloadscriptlets:mandatory#518. - New value to
set-cookieandset-cookie-reloadscriptlets:declined#552. trusted-json-set,trusted-json-set-fetch-responseandtrusted-json-set-xhr-responsescriptlets #308.freewheel-admanagerredirect resource and scriptlet #401.getCreativeIdmethod toAdclass ingoogle-ima3redirect #515.
trusted-click-elementnow passes synthetic-like event objects to React handlers and supportsclickType:nativeinextraMatchto force native click #554.- Added
interceptChainProphelper to share intermediate chain property access logic acrossabort-on-property-read,abort-on-property-write,abort-on-stack-trace,abort-current-inline-script,debug-on-property-write,debug-on-property-read,debug-current-inline-scriptandlog-on-stack-tracescriptlets #513. prevent-window-opennow checks all parameters #549.- Updated @adguard/agtree to
4.0.2.
prevent-fetch— do not usemodifyResponseon redirected requests #545.- issue with assigning
windowto property which was not set inabort-on-property-read,abort-on-property-write,abort-on-stack-trace,abort-current-inline-script,debug-on-property-write,debug-on-property-read,debug-current-inline-scriptandlog-on-stack-tracescriptlets #513.
v2.2.16 - 2026-02-19
prevent-navigationscriptlet to prevent navigation to another URL, or reload website #532.prevent-constructorscriptlet to prevent constructor calls likenew Promise()ornew MutationObserver()#461.remove-request-query-parameterscriptlet to remove query parameters fromfetchandXMLHttpRequestrequests #329.- Trusted Types API support in
trusted-create-elementscriptlet #507. - Trusted Types API support in Firefox #528.
prevent-addEventListenerscriptlet: added new optionalnoProtectparameter, improving compatibility with other scriptlets that need to overrideaddEventListener#550.- Updated @adguard/agtree to
4.0.1.
prevent-xhrscriptlet,responseURLis now set atreadyState2, and the first state is skipped whenonreadystatechangeis assigned afterxhr.open()#485.- Anti-adblock detection in
spoof-cssscriptlet by using cloaked bound functions instead of Proxies #422. - Response corruption in
trusted-replace-fetch-responseandtrusted-replace-xhr-responsescriptlets when URL pattern matches but content pattern does not #486. - XHR handling in
trusted-replace-xhr-responseandxml-prunescriptlets:- added
withCredentialsto forged requests, - fixed duplicate headers when multiple scriptlets are used,
- used
ProgressEventforloadandloadendevents #486.
- added
- XHR scriptlet bypass vulnerability in
trusted-replace-xhr-response,prevent-xhr, andxml-prunescriptlets where settingxhr.shouldBePrevented = falsecould disable the scriptlet #386. - Parsing of regexp patterns containing pipe
|character insignatureStrarg oftrusted-suppress-native-methodscriptlet #473. - Stack matching in
set-constantandtrusted-set-constantscriptlets — now checked at property access time instead of scriptlet initialization #500. - Cloudflare captcha broken when
>>>combinator is used intrusted-click-elementscriptlet #491.
v2.2.15 - 2026-01-22
- Support for React elements that don't respond to native clicks
in
trusted-click-elementscriptlet #542.
- Updated @adguard/agtree to
4.0.0.
- Do not throw error on
nullevent type inprevent-addEventListenerscriptlet #539.
v2.2.14 - 2025-12-16
prevent-innerHTMLscriptlet #488.- Ability to configure observer timeout for
trusted-click-elementscriptlet with a newobserverTimeoutparameter #400. - Support for
window.Fingerprintvariable infingerprintjs2redirect (and scriptlet as well since it is an alias for redirect) #541.
- Updated @adguard/agtree to
3.4.3.
v2.2.13 - 2025-11-25
- New value to
set-cookieandset-cookie-reloadscriptlets:denied#512.
- Updated @adguard/agtree to
3.3.1.
- Determination of string values more precisely
for
trusted-set-constantscriptlet #499. - Support for negative priority suffix in UBO redirects rules.
v2.2.12 - 2025-11-12
- Updated @adguard/agtree to
3.2.5.
v2.2.11 - 2025-10-17
- Updated @adguard/agtree to
3.2.4.
v2.2.10 - 2025-09-11
-base64as an alias ofbase64decodeinhref-sanitizerscriptlet #493.
- Updated @adguard/agtree to
3.2.3.
v2.2.9 - 2025-08-14
trusted-replace-argumentscriptlet #405.
- Incorrectly escaped quotes in
trusted-replace-node-textscriptlet #517. TrustedScriptURLinprevent-element-src-loadingscriptlet #514.- Fix scriptlets compilation error in Safari 15 due to unsupported regex lookbehind #519.
v2.2.8 - 2025-07-08
- UBO aliases
ubo-nobab,nobab, andbab-defuserforprevent-babAdGuard scriptlet.
- Updated @adguard/agtree to
3.2.2.
trusted-set-cookie-reloadscriptlet infinite page reloading when cookie with time keyword is used #489.
v2.2.7 - 2025-06-04
- Updated @adguard/agtree to
3.2.1.
json-prunescriptlet to properly handlenullvalues while checking specified key in object #504.
v2.2.4 - 2025-05-23
- Updated @adguard/agtree to
3.2.0.
spoof-cssscriptlet — incorrectDOMRectsetting #498.
v2.2.1 - 2025-05-21
- Trusted types bundle.
v2.2.0 - 2025-05-21
- New values to
set-cookieandset-cookie-reloadscriptlets:emptyArr,emptyObj#497. - Ability to set random response content in
prevent-fetchscriptlet #416. - Ability to choose CSS injection method in
inject-css-in-shadow-domscriptlet #477. - TypeScript types for CoreLibs provided
ContentScriptApi. - Trusted Types API utility —
PolicyApi.
- Improved docs for
json-prune,xml-pruneandtrusted-prune-inbound-objectscriptlets #392. - Updated @adguard/agtree to
3.1.5.
- Escaping quotes in
trusted-replace-node-textscriptlet #440. trusted-suppress-native-methodscriptlet,isMatchingSuspendedwas not reset when the stack does not match, so in some cases given method was not prevented #496.
v2.1.7 - 2025-04-03
- Updated @adguard/agtree to
3.1.0.
- Ability in
prevent-addEventListenerscriptlet to match specific element and updatedlog-addEventListenerscriptlet to log target element #480.
v2.1.6 - 2025-03-06
- Incorrectly removing content from parsed array when using the
json-prunescriptlet #482.
v2.1.5 - 2025-02-28
- Updated @adguard/agtree to
3.0.1.
- Ability in
json-prunescriptlet to matchkeywith specificvalueand removearray/objectif it contains specificitem#183.
prevent-eval-ifandprevent-babscriptlets, noweval.toString()call returns original value #481.
v2.1.4 - 2025-01-20
- ESM-only bundle.
trusted-click-elementscriptlet, now whencontainsTextis used then it will search for all given selectors and click on the first element with matched text #468.
- Issue with
metrika-yandex-tagredirect when it's used as a scriptlet #472. - Issue with
trusted-click-elementscriptlet whendelaywas used and the element was removed and added again before it was clicked #391.
v2.0.1 - 2024-11-13
prevent-canvasscriptlet #451.- Trusted Types API support in
trusted-replace-node-textscriptlet #457. parentSelectoroption to search for nodes forremove-node-textscriptlet #397.transformoption withbase64decodevalue forhref-sanitizerscriptlet #455.removeParamandremoveHashvalues intransformoption forhref-sanitizerscriptlet #460.- New values to
set-cookieandset-local-storage-itemscriptlets:forbidden,forever#458.
- Set response
oktofalsebyprevent-fetchif response type isopaque#441. - Improve
prevent-xhr— modify response #415. - Improve
prevent-xhr— add missed events #414. Sourcetype instead ofIConfiguration.- API structure. Validators, Converters, Scriptlets and redirects are now separate modules.
- The minimum supported Safari version is now 13.
- Updated @adguard/agtree to
3.0.0-alpha.1.
- IIFE bundle.
- UMD bundle.
- Various conversion and validation functions including
isAdgRedirectRule,isAdgRedirectCompatibleWithUbo,isUboRedirectCompatibleWithAdg,isAbpRedirectCompatibleWithAdg,convertUboRedirectToAdg,convertAbpRedirectToAdg,convertRedirectToAdg, andconvertRedirectNameToAdgfunctions.
v1.12.1 - 2024-09-20
- Integrated @adguard/agtree library for working with rules, compatibility tables, validator and converter.
- Re-adding element on every DOM change in
trusted-create-elementscriptlet #450. - Setting cookie which name has special prefix
__Host-or__Secure-bytrusted-set-cookieandtrusted-set-cookie-reloadscriptlets #448.
v1.11.27 - 2024-08-29
reloadoption fortrusted-click-elementscriptlet #301.- Support for matching line number in
abort-on-stack-tracescriptlet wheninlineScriptorinjectedScriptoption is used #439. - New values to
set-cookieandset-cookie-reloadscriptlets:checked,unchecked#444. - New values to
set-local-storage-itemandset-session-storage-itemscriptlets:allowed,denied#445. - UBO aliases
noop-vast2.xml,noop-vast3.xml, andnoop-vast4.xmlfor correspondent AdGuard redirects. - New field
uniqueIdto scriptlet configuration, allowing scriptlets to be executed only once per context.
- UBO alias
noop-vmap1.0.xmlfornoopvmap-1.0redirect is replaced bynoop-vmap1.xml.
- Modifying
RegExp.$1, …, RegExp.$9values inlog-on-stack-traceandabort-on-stack-tracescriptlets #384.
v1.11.16 - 2024-08-01
trusted-set-session-storage-itemscriptlet #426.- New values to
set-cookieandset-cookie-reloadscriptlets:essential,nonessential#436. $currentISODate$as a new possible value toset-cookie,set-cookie-reload,set-local-storage-itemandset-session-storage-itemscriptlets #435.
- Re-adding element after removing it in
trusted-create-elementscriptlet #434. trusted-click-elementscriptlet does not click on an element that is already in the DOM #437.
v1.11.6 - 2024-07-08
- New values to
set-cookieandset-cookie-reloadscriptlets:hide,hidden#433. - New values to
set-local-storage-itemandset-session-storage-itemscriptlets:accept,accepted,reject,rejected#429. - Ability to log original and modified content in
trusted-replace-node-text,xml-prune,m3u-prune,trusted-replace-fetch-responseandtrusted-replace-xhr-responsescriptlets #411.
- Log message format CoreLibs#180.
v1.11.1 - 2024-06-13
trusted-dispatch-eventscriptlet #382.trusted-replace-outbound-textscriptlet #410.- Ability to click on the element with specified text in
trusted-click-elementscriptlet #409. - Ability to click element in closed shadow root in
trusted-click-elementscriptlet #423. isRedirectResourceCompatibleWithAdg()method to check compatibility of redirect resources with AdGuard without needing the full rule text #420.
ruleTextoption in theIConfiguration.
set-attrvalue cannot be set to minimum0and maximum32767possible value #425.
v1.10.25 - 2024-03-28
trusted-suppress-native-methodscriptlet #383.json-prune-fetch-responsescriptlet #361.json-prune-xhr-responsescriptlet #360.href-sanitizerscriptlet #327.no-protected-audiencescriptlet #395.- The ability for
prevent-fetchscriptlet to setcorsas a response type #394. - The ability for
trusted-click-elementscriptlet to click inside open shadow doms #323. - Domain value for setting cookie scriptlets #389.
- Multiple redirects can now be used as scriptlets #300:
amazon-apstag;didomi-loader;fingerprintjs2;fingerprintjs3;gemius;google-analytics;google-analytics-ga;google-ima3;googlesyndication-adsbygoogle;googletagservices-gpt;matomo;metrika-yandex-tag;metrika-yandex-watch;naver-wcslog;pardot-1.0;prebid;scorecardresearch-beacon.
- Validation of scriptlet rules with no name and args for multiple scriptlet exception rules #377.
- Cookie name is not encoded by cookie setting scriptlets #408.
- Increased the possible numeric value up to
32767forset-cookieandset-cookie-reloadscriptlets #388.
- UBO→ADG conversion of
$remove$scriptlet param #404. set-constantscriptlet not setting a constant over falsy values #403.
v1.10.1 - 2024-02-12
call-nothrowscriptlet #333.spoof-cssscriptlet #317.trusted-create-elementscriptlet #278.trusted-set-attrscriptlet #281.- Ability of
set-attrto set an attribute value as a copy of another attribute value of the same element. - UBO alias for
set-cookie-reloadscriptlet #332. - New values
t,f,necessary,requiredforset-cookieandset-cookie-reload#379.
v1.9.105 - 2023-12-25
OmidVerificationVendorobject togoogle-ima3redirect #353.ga.q(queued commands) togoogle-analyticsredirect #355.
addEventListenerinEventHandleringoogle-ima3redirect, now it binds context to callback #353.AdDisplayContainerconstructor ingoogle-ima3redirect, now it adds div element to container #353.getInnerErrormethod ingoogle-ima3redirect, now it returnsnull#353.
v1.9.101 - 2023-11-30
emptyStrvalue forresponseBodyinprevent-fetchscriptlet #364.setPrivacySettings()method togoogletagservices-gptredirect #344.- UBO alias
noop.jsonfornoopjsonredirect. - Library version number to the exports AdguardBrowserExtension#2237.
prevent-fetchscriptlet, ifresponseTypeis set toopaquethen now responsebodyis set tonull,statusis set to0andstatusTextis set to''#364.
v1.9.96 - 2023-11-15
- Regular expression support for removing items in
set-local-storage-itemandset-session-storage-itemscriptlets #256. - Ability to set proxy trap in
set-constantscriptlet #330.
v1.9.91 - 2023-11-13
trusted-prune-inbound-objectscriptlet #372.- New values to
set-cookiescriptlet:on,off,accepted,notaccepted,rejected,allowed,disallow,enable,enabled,disable,disabled#375. - New values to
set-local-storage-itemandset-session-storage-itemscriptlets:on,off#366.
- Setting proxy trap every time when property is accessed in
set-constantscriptlet #380. - Issue with
stackinevaldata-prunescriptlet #378. - Setting values to wrong properties in
set-constantscriptlet #373.
v1.9.83 - 2023-10-13
- ABP alias for the
logscriptlet.
- Issue with
trusted-replace-fetch-responsescriptlet in case if data URL was used and properties was set byObject.definePropertyto deceive scriptlet #367. - Adding the same header value in
trusted-replace-xhr-responsescriptlet when it is used multiple times for the same request #359. - Not pruning in
m3u-prunescriptlet if file contains carriage return #354. - Not overriding value in
set-constant(only partially, for cases where single scriptlet is used) #330.
v1.9.72 - 2023-08-25
- Conversion for scriptlets:
set-attr;set-cookie;set-local-storage-item;set-session-storage-item.
v1.9.70 - 2023-08-21
- Support for
XPathinxml-prunescriptlet #325. - Conversion of UBO's $redirect priority to the converter tsurlfilter#59.
- Issue with
stackinjson-prunescriptlet #348. - Issue with
obligatoryPropsinjson-prunescriptlet #345.
v1.9.62 - 2023-08-04
prevent-xhrclosure bug on multiple requests #347.
v1.9.61 - 2023-08-01
convertRedirectNameToAdg()method to convert redirect names to ADG #346.
v1.9.58 - 2023-07-27
- Escape commas in the params during conversion to ubo rules #343.
v1.9.57 - 2023-07-21
- Ability to remove an item from storage in
set-local-storage-itemandset-session-storage-itemscriptlets #338. - New values to
set-cookieandset-cookie-reloadscriptlets:Accept,Reject,y,n,N,No,allow,deny#336. - Ability to use flags in regular expression scriptlet parameters #303.
- Predefined values of
set-cookieandset-cookie-reloadare now case-insensitive #342.
- Overwriting
google.imavalue if it was already set #331. - Printing unnecessary logs to the console in
log-addEventListenerscriptlet #335. - Error throwing in
prevent-fetchandprevent-xhrscriptlets when a request is blocked #334.
v1.9.37 - 2023-06-06
evaldata-prunescriptlet #322.trusted-replace-node-textscriptlet #319.remove-node-textscriptlet #318.- Ability for
prevent-element-src-loadingscriptlet to prevent inlineonerrorand matchlinktag #276. - New special value modifiers for
set-constant#316.
trusted-set-cookieandtrusted-set-cookie-reloadscriptlets to not encode cookie name and value #311.- Improved
prevent-fetch: ifresponseTypeis not specified, original response type is returned instead ofdefault#297.
- Pruning when
addEventListenerwas used before callingsend()method inm3u-pruneandxml-prunescriptlets #315. - Issue with
updateTargetingFromMap()method ingoogletagservices-gptredirect #293. - Website reloading if
$now$/$currentDate$value is used intrusted-set-cookie-reloadscriptlet #291. getResponseHeader()andgetAllResponseHeaders()methods mock inprevent-xhrscriptlet #295.
v1.9.7 - 2023-03-14
- Ability for
trusted-click-elementscriptlet to click element ifcookie/localStorageitem doesn't exist #298. - Static delay between multiple clicks in
trusted-click-element#284.
- Improved the
convertScriptletToAdg()method — now it validates the input rule syntax if it is an ADG rule.
- Issue with
MutationObserver.disconnect()intrusted-click-element#284.
v1.9.1 - 2023-03-07
m3u-prunescriptlet #277.trueandfalsevalues forset-attrscriptlet #283.- UBO alias
noop.cssfornoopcssredirect.
- Decreased the minimal value for the
boostparameter to0.001foradjust-setTimeoutandadjust-setInterval#262.
prevent-element-src-loadingthrowing error ifthisArgisundefined#270.- Logging
nullinjson-prune#282. xml-prune: no pruning a request ifnew Request()is used, throwing an error while logging some requests #289.- Improve performance of the
isValidScriptletName()method.
v1.8.2 - 2023-01-19
trusted-set-constantscriptlet #137.inject-css-in-shadow-domscriptlet #267.throwFuncandnoopCallbackFuncprop values forset-constantscriptlet.recreateIframeForSlotmethod mock togoogletagservices-gptredirect #259.
- Added decimal delay matching for
prevent-setIntervalandprevent-setTimeout#247. - Debug logging to include rule text when available.
getScriptletFunctioncalls to throw error on unknown scriptlet names.
prevent-xhrandtrusted-replace-xhr-responseclosure bug on multiple requests #261.- Missing
googletagmanager-gtmin compatibility table.
v1.7.20 - 2022-12-26
isBlocking()method for Redirects class.filefield for redirect type.
- Redirects types.
v1.7.19 - 2022-12-22
prevent-addEventListenerandlog-addEventListenerloosing context. when encountering already bound.addEventListener.google-ima3conversion.
v1.7.14 - 2022-12-16
set-constantADG→UBO conversion foremptyArrandemptyObjuBlock-issues#2411.
v1.7.13 - 2022-12-13
isEmptyObjecthelper not countingprototypeas an object property.
v1.7.10 - 2022-12-07
trusted-set-cookie-reloadscriptlet.
set-cookie-reloadinfinite page reloading #265.- Breakage of
prevent-element-src-loadingdue towindowgetting intoapplywrapper #264. - Spread of args bug at
getXhrDatacall fortrusted-replace-xhr-response. - Request properties array not being served to
getRequestDataandparseMatchPropshelpers.
v1.7.3 - 2022-11-21
-
Trusted scriptlets with extended capabilities:
-
Scriptlets:
xml-prune#249.