Frequently Asked Questions (FAQ)
Quick, honest answers to common questions about Nvirya AdGuard v11.7.0. For in-depth technical explanations, follow the links to the detailed guides.
1. Does Nvirya AdGuard block every advertisement?#
No. Nvirya AdGuard filters known third-party ad domains, common banner/modal patterns, and scoped sponsored slots on supported sites (including YouTube, Google Search, Bing Search, Reddit, X/Twitter, Quora, and Facebook mobile). However, websites constantly change their markup and domain names, and some first-party advertisements share the exact same HTML structure as normal page content. See Realistic Expectations vs. Non-Guarantees and Troubleshooting.
2. Why can some video advertisements still appear briefly?#
On platforms like YouTube, video ads are closely coupled with the primary media player. When an ad bypasses initial JSON metadata pruning and enters the <video> element, Nvirya AdGuard's Media Guard fallback (handleAdVideo) must wait for the player to signal an active ad state (.ad-showing or .ad-interrupting) and report a valid duration (> 0.5 s) before muting, accelerating playback to 16x, and seeking to the end (duration - 0.05 s). Abruptly blocking media stream URLs directly would cause playback errors or endless buffering. See YouTube Mobile Ad Delay for full details.
3. Is this a replacement for a browser extension?#
Not entirely. A privileged browser extension (such as uBlock Origin on desktop browsers or Firefox for Android) can use browser-level APIs (declarativeNetRequest or webRequest) to cancel network traffic before it reaches the page. Nvirya AdGuard is a userscript that runs inside the web page context; it is particularly useful on mobile browsers (such as iOS Safari with Stay or lightweight Android browsers) where full desktop extensions are unavailable, or as an interactive companion for hiding page elements and blocking pop-up/redirect traps. See How It Works.
4. Why does behavior differ between Android and iOS?#
iOS and iPadOS browsers use Apple's WebKit engine, which enforces stricter sandbox isolation between userscripts and the page's main JavaScript world. When WebKit prevents main-world script injection (window.__NVIRYA_MAIN_SHIELD__), Nvirya AdGuard marks Anti-Adblock Bypass as unsupported in About → System Capabilities and disables the toggle in Settings. On Android and desktop browsers where main-world injection succeeds, main-world network and global-property hooks operate normally. See iOS Safari and WebKit Restrictions.
5. Can it bypass every anti-adblock system?#
No. While Nvirya AdGuard spoofs common ad-script globals (googletag, adsbygoogle, OBR, Criteo, _taboola, apstag, COMSCORE, BlockAdBlock, FuckAdBlock), fakes bait element dimensions (250×300), and hides detected anti-adblock modals (AntiAdblockEngine), it cannot bypass server-side checks, strict Content Security Policy (CSP) restrictions, or iOS WebKit sandbox limits.
6. Why does a website break after an update?#
Both websites and filter rules change over time. A site may update its layout so that a legitimate container matches an ad heuristic, or a script update may tighten redirect or overlay detection. You can verify if a cosmetic rule is responsible by tapping Preview Original Page (3s), or immediately restore the site using Pause for This Session or Allow This Site in Overview → Quick Actions, and then report the broken layout. See Troubleshooting.
7. Does the script inspect every request or every DOM element?#
No. A userscript can only inspect requests made through JavaScript APIs it wraps (fetch, XMLHttpRequest, sendBeacon, and dynamic <script> / <img> src assignments)—not every network packet sent by the browser. Similarly, to protect CPU and battery life, the DOM observer batches mutations into bounded queues (MAX_QUEUE = 800), skips inline text elements (<p>, <span>, <h1>–<h6>, <li>, <td>, etc.) and article text containers during click-trap checks, and isolates YouTube logic solely to YouTube domains. See How It Works.
8. Why can a VPN or DNS filter change the result?#
VPN and DNS blockers (such as Shadowrocket, Surge, Loon, or AdGuard DNS) block requests at the network layer before they reach the browser's JavaScript engine. When a network filter blocks an ad script or image at the DNS level, the browser fires a native network error before Nvirya AdGuard's JavaScript hooks can return a synthetic 200 OK response or spoof an onload event, which can trigger certain anti-adblock detectors. See VPN, DNS Filters, Shadowrocket, Surge, and Loon.
9. How do I report an issue?#
Open the control panel (Alt+A), go to the About tab, scroll to Community & Support, and tap Feedback. Choose a category (Missed ad, Broken page layout, Video playback issue, Feature suggestion, or Other), add a short note describing what happened, and tap Submit. For two-way support, use the Telegram or Discord links in the same section. See Feedback and Issue Reporting.
10. How do I temporarily disable protection for one site?#
Open the control panel (Alt+A) and look under Overview → Quick Actions:
- Tap Pause for This Session to disable filtering on the current domain until you close the tab (or select
Turn off on this page (Temporarily)from your userscript manager menu). - Tap Allow This Site to add the current domain to your persistent allowlist (
nvirya_x_whitelist) across sessions.
See Site Allowlisting and Session Pause for details.
11. Does zero feedback mean the script is working correctly?#
No. A silent dashboard or zero user reports only means no reports were submitted—it does not prove that every advertisement was blocked or that no false positives occurred. Similarly, a 0 counter on Protection Summary on a clean website (such as Wikipedia or GitHub) simply means no matching ad elements or trackers were encountered on that page.