0xCUB3 / wBlock
The next-generation ad blocker for Safari.
AI Architecture Analysis
This repository is indexed by RepoMind. By analyzing 0xCUB3/wBlock in our AI interface, you can instantly generate complete architecture diagrams, visualize control flows, and perform automated security audits across the entire codebase.
Our Agentic Context Augmented Generation (Agentic CAG) engine loads full source files into context on-demand, avoiding the fragmentation of traditional RAG systems. Ask questions about the architecture, dependencies, or specific features to see it in action.
Repository Overview (README excerpt)
Crawler viewwBlock **The end of Safari ad-blocking B.S.** A Safari content blocker for macOS, iOS, and iPadOS. 750,000 rules across 5 extensions, Protocol Buffer storage, LZ4 compression, iCloud sync. > [!NOTE] > **Looking for a detailed comparison?** Check out my comparison guide to see how wBlock stacks up against other Safari content blockers. Features Performance • **750,000 rule capacity** across 5 Safari content blocking extensions per platform (150k each) • **~40 MB RAM** at idle — Safari's native content blocking API runs rules out-of-process • **Protocol Buffers + LZ4** for filter storage; streaming I/O keeps memory low during compilation • **HTTP conditional requests** (If-Modified-Since/ETag) so updates only download what changed • **iCloud sync** for filter selections, custom lists, userscripts, and whitelist across devices Content modification • **Element Zapper** (macOS, iOS, iPadOS, visionOS) — visually select and hide page elements in Safari • **Userscript engine** with Greasemonkey API (GM_getValue, GM_setValue, GM_xmlhttpRequest) • **Custom filter lists** via URL, paste, or file import — supports any AdGuard-syntax blocklist • **Toolbar search** for quickly finding filters and userscripts • **Automatic rule distribution** across all 5 content blocker slots for maximum coverage Blocking • **Network request blocking** — ads, trackers, cookie banners, annoyances • **CSS injection** for cosmetic filtering and element hiding • **Script blocking** for unwanted JavaScript • **Pop-up and redirect prevention** Configuration • **Auto-updates** from every hour to every 7 days, or manual — with background refresh on iOS • **Per-site controls** — disable blocking on specific sites from the Safari toolbar • **Blocked request logger** (macOS) — see what's being blocked on each page • **Whitelist** for trusted domains • **Regional filters** with auto-detection based on your locale • **Homebrew cask** for macOS: --- Screenshots Userscript Management Manage paywalls, YouTube Dislikes, and more Settings & Customization Configure auto-updates, notifications, and preferences iOS Interface Full-featured blocking on iPhone and iPad --- Technical Implementation **Core Architecture** • Protocol Buffers (libprotobuf) with LZ4 compression for filter serialization • Asynchronous I/O with Swift concurrency (async/await, Task, Actor isolation) • Streaming serialization to disk minimizes peak memory usage during compilation • 5 Safari content blocking extensions per platform (maximum Safari API capacity) • SafariServices framework integration for declarative content blocking **Dependencies & Standards** • SafariConverterLib v4.2.1 for AdGuard to Safari rule conversion • AdGuard Scriptlets v2.2.16 for advanced blocking techniques • Swift 5.9+ with strict concurrency checking enabled • WCAG 2.1 AA compliance with full VoiceOver and Dynamic Type support • SwiftProtobuf for cross-platform filter storage format --- Support Development wBlock is free and open source. If you want to support the project: --- FAQ How does wBlock compare to other ad blockers? Check out our comparison guide vs uBlock Origin Lite, AdGuard, and Wipr. Can I use my own filter lists? Yes. You can add any AdGuard-compatible filter list by URL, paste rules directly, or import from a file. Does wBlock slow down Safari? No. wBlock uses Safari's native declarative content blocking API, which processes rules in a separate process. Memory overhead is ~40 MB at idle with no measurable impact on page load times. Do userscripts work on iOS? Yes. The userscript engine implements the Greasemonkey API (GM_getValue, GM_setValue, GM_xmlhttpRequest, GM_addStyle) on both iOS and macOS via Safari Web Extensions. How often do filters update? Auto-update intervals are configurable from 1 hour to 7 days, or manually triggered. Updates use HTTP conditional requests (If-Modified-Since/ETag headers) to minimize bandwidth usage. Is the element zapper available on iOS? Yes. Open the wBlock extension popup in Safari and tap Activate Element Zapper . --- Credits **@arjpar** · **@ameshkov** · **@shindgewongxj** Star History Developed by 0xCUB3