GitHub - 0xCUB3/wBlock: The next-generation ad blocker for Safari.

2 min read Original article ↗

A Safari content blocker for macOS, iOS, and iPadOS utilizing declarative content blocking rules.
Supports 750,000 rules across 5 extensions with Protocol Buffer storage and LZ4 compression.

Performance Architecture

  • 750,000 rule capacity utilizing 5 Safari content blocking extensions per platform (150k rules each)
  • ~40 MB RAM footprint at idle via Safari's native content blocking API
  • Protocol Buffers serialization with LZ4 compression for filter storage
  • Off-thread I/O operations with streaming serialization to minimize main thread blocking
  • HTTP conditional requests (If-Modified-Since/ETag) for efficient filter update detection

Content Modification

  • Element Zapper (macOS only) generates persistent CSS selectors for manual element removal
  • Userscript engine implements Greasemonkey API (GM_getValue, GM_setValue, GM_xmlhttpRequest)
  • Custom filter list ingestion supports AdGuard-syntax blocklists via URL import
  • Category-based filter organization with per-list toggle and automatic rule distribution
  • Filter list validation with automatic disabling on Safari's 150k rule limit per extension

Blocking Capabilities

  • Network request blocking via declarative content blocking rules (advertisements, trackers)
  • Cookie and local storage filtering through Safari content blocker rule actions
  • CSS injection for cosmetic filtering and element hiding
  • Script blocking for unwanted software and JavaScript execution
  • Pop-up and redirect prevention using Safari content blocking patterns

Configuration & Management

  • Configurable auto-update intervals from 1 hour to 7 days with background refresh
  • Per-site blocking controls through Safari's content blocker enable/disable API
  • Whitelist management for trusted domains with Safari extension state persistence
  • Regional filter support with preset lists for language-specific content blocking
  • Filter compilation monitoring with real-time rule count and compilation status
  • Background update notifications (optional) for filter list refresh events