Skip to content

Releases: 0xCUB3/wBlock

v2.0.0

15 Feb 22:20

Choose a tag to compare

What's Changed

Major Features & Improvements

  • Element Zapper (be500b0, 7c76c54, a9e7dd2, 8d6fcc1, 93c0bd5, 64d8959, e2b0b7a, #115, #214)
    Added a full element zapper UI with a blocked-request logger and per-site toggles. Users can now visually select and hide page elements directly in Safari. Manual per-site CSS selector rules can be entered in the in-page zapper for persistent blocking. Fixed CSP-blocked inline injection on macOS, improved iOS tap targets, and unified the popup UI across platforms.
  • iCloud Sync (fc56189, 0135a01, 2d454f6, a60dd80, 09ffa09, eefb77e, 58c781c, 519f05d, #159)
    Added optional iCloud sync for filter selections, custom lists, userscripts, and whitelist across all your devices. Includes a sync toggle during onboarding and in Settings, CloudKit container entitlements, and platform-safe sync logic. The apply-changes flow was refined to support non-blocking iCloud configuration adoption.
  • Inline User Lists — Paste and Import (f48b336, aa64ab0, 76956c9, 9e0bb58, 3ea970a, a0067f7, b33b3e6, 939d344, 7ab7076, aa0b6fd, f962c23, #90, #201)
    Added the ability to create custom filter lists by pasting rules directly or importing from a file, in addition to the existing URL method. The Add Filter List sheet now has URL, Paste, and File tabs with per-platform native UI. User lists support custom titles and descriptions, and deletion properly handles iCloud sync tombstones.
  • Content Blocker Slot Distribution (5de6f48, 3449a35, aeaf7ca, #200, #208, #209)
    Filters are now intelligently distributed across all 5 content blocker extension slots (wBlock 1–5), maximizing the total number of rules Safari can enforce. This replaces the old category-based allocation and allows significantly more rules to be active simultaneously.
  • Userscript Auto-Update (1029775, e0270d3)
    Enabled userscripts are now automatically checked for updates alongside filter lists during the apply-changes flow, with a dedicated progress step.
  • Custom Filter List Management (a59ba14, 1448666, 46128c8, 79d0bef, 0735ec0)
    Custom filter lists can now be named, renamed, and assigned to any category. The Add Filter List sheet was simplified and improved on both platforms.
  • Localization Support (7498e38, #218, #219)
    Added localization infrastructure and major language resources, making wBlock accessible to a much wider audience.
  • Unified Onboarding (1330235)
    Merged the separate onboarding and setup checklist flows into a single 5-step onboarding experience. Removed the duplicate inline progress view in favor of the standard apply-changes sheet. Eliminated ~190 lines of redundant code.
  • Toolbar Search (a7b7b26, 7abe8e5, c75e162, c071da4, e53288c)
    Added searchable filter and userscript lists with native system search UI. macOS uses an expandable toolbar search field, iOS uses the system searchable modifier with minimized behavior.
  • Homebrew Cask Distribution (ed2d417, 046a438, 0e41d5a, e8cfaa5, beb1bd1)
    Added a native Homebrew cask with a full release pipeline including CI signing and notarization for macOS DMG distribution.
  • iOS 26 / Liquid Glass Compatibility (bca15f1)
    Replaced iOS 26-only glass APIs with a material-based glass design system that works across all supported OS versions.

Performance & Reliability Upgrades

  • Streaming IO and Conversion Cache (6521488, 854d96f, 43872f9)
    Refactored the update pipeline for dramatically lower IO. Streaming IO replaces full-file reads, and per-target conversion results are cached and reused when inputs haven't changed.
  • Protobuf Userscript Migration (6c3bb62)
    Userscripts now store only metadata in protobuf, with content files managed separately. Safe migration ensures no data loss during the transition.
  • Auto-Update Reliability (f8664aa, 8b9e9a6, bc053f6, 7f2189e, e3c4c2e, 1a927d3, e64b5f6, e8aa18a)
    Comprehensive hardening of the auto-update system: reliable scheduling, RunningBoard crash mitigation, iOS background fetch fallback, hardened task lifecycle and timeout cleanup, deduplicated entry points, and centralized interval normalization.
  • Auto-Update Telemetry (eb0620c, 6107922, 4e42ad7, c39ac48, 32e12dd)
    Added structured telemetry and skip-reason tracking for auto-updates. Unified manual and auto-update response classification, reduced false-positive update detections, and added mock HTTP integration tests for edge cases.
  • XPC Continuation Race Fix (6e2b0ab)
    Fixed a race condition in the XPC continuation handling that could cause crashes during filter updates.
  • Code Cleanup (b859751, 1acaadd, 431dd98, 89b036d, 26b9989, 6742794)
    Removed unused userscript and UI dead code, deduplicated filename helpers, removed redundant wrappers and legacy state fields. Apply and auto-update logs are now concise with timing summaries.

Bug Fixes

  • Dynamic Ad/Script Coverage Gap (4de4fd1, #205, #217)
    Fixed a gap in core conversion that could allow dynamic ads and ad scripts to slip through content blocking.
  • Userscript Injection Race (9fe79bb, #153)
    Fixed a race condition in userscript injection on Safari that could cause scripts to not activate.
  • Userscript Injection for ComicRead (682dc6d)
    Fixed userscript injection for sites like ComicRead that use specific content security policies.
  • CRLF Rule Splitting (a16bc13)
    Fixed filter rule parsing to correctly handle Windows-style CRLF line endings during conversion.
  • Bypass Paywalls Clean Enable Flow (5f45b9a, 2b00fd9, #215)
    Fixed the remote userscript enable flow for Bypass Paywalls Clean, and improved userscript matching and batch-enable error reporting.
  • Userscript Defaults Behavior (11cc455, #202)
    Fixed an issue where deleted default userscripts would reappear unexpectedly.
  • Custom Filter Persistence (d574687)
    Fixed migrated custom filter lists losing their custom status after migration.
  • Site Disable in Scripts Extension (69f26f4)
    Fixed per-site disable not working correctly in the Scripts extension.
  • User List Deletion (a0067f7)
    Fixed user list deletion and ensured iCloud sync tombstones are properly created.
  • Privacy Target Wiring (c487934)
    Fixed Privacy target wiring and extension plist memberships.
  • Filter Row Text Clipping (aacd36d)
    Fixed filter row long-press text clipping and corrected stat display order.
  • Filter Refresh Validators (3fd1410)
    Fixed filter refresh to use persisted validators instead of stale in-memory state.
  • Production Crash Safety (dad8fc8)
    Replaced a fatalError in the ZIP archive builder with graceful error handling, and removed unguarded print() statements from production code.
  • Locale-Aware Userscript Metadata (dad8fc8)
    The userscript metadata parser now respects locale-specific @description:en and @name:en fields, fixing non-English descriptions showing for scripts like AdGuard Extra.

UI/UX Improvements

  • Apply Changes Progress View (519f05d, 8dd2630, 72aa5f8, d0bb5c5, 0597de0)
    Completely redesigned the apply-changes progress sheet with phase-based progress rows, sub-progress bars, stat cards, and a detailed summary view. Shows the last completed extension name and clarifies reload progress labeling.
  • Add Filter List Sheet Polish (79d0bef, 0735ec0, aa64ab0, b33b3e6, 939d344, f962c23, ad49cb1)
    Simplified and polished the Add Filter List sheet across both platforms with native iOS controls, refined layout, macOS TabView integration, and native sheet presentation controls.
  • Add Userscript Sheet Polish (bcc40a6, 9326a3b, 8198548)
    Polished the Add Userscript sheet layout, controls, and helper text copy. Fixed local import labeling.
  • Remove Redundant Cancel Buttons (26e7c00)
    Removed redundant Cancel buttons from sheet presentations across the app.
  • Open Collective Link (20da7c3)
    Added an Open Collective funding link in Settings for community support.

Notes

I could not be more grateful for all of your feedback. The community is what keeps this project alive. If you encounter issues or have suggestions, please open an issue on GitHub.
Thank you for supporting wBlock and helping make Safari the best browsing experience possible!

Download

Download from the App Store: https://apps.apple.com/app/wblock/id6746388723

Note: the app is currently in review. It might not be available in your region for up to 72 hours.

Join the Discord: https://discord.gg/Y3yTFPpbXr

v1.2.1

07 Jan 15:40

Choose a tag to compare

Bug Fixes

Filter Updates

  • Fixed filter validation incorrectly rejecting valid filters - Filters like AdGuard Base Filter, Fanboy's Annoyances, and AdGuard Cookie Notices were failing to update with "Downloaded content does not appear to be a valid filter list" error. The DDoS protection detection was too aggressive and matched legitimate filter rules containing keywords like "ddos-guard".

Onboarding

  • Fixed "Restart Onboarding" not working - The restart onboarding button in Settings was resetting the data but not showing the onboarding sheet again.
  • Fixed UI freeze during onboarding - Removed redundant synchronous file I/O that was blocking the main thread when the onboarding view appeared.
  • Fixed UI freeze on userscripts page - Moved userscript file reading off the main thread to prevent freezing when navigating to the userscripts step.

macOS

  • Adjusted default window size - Window is now taller (720px, was 650px) and slightly narrower (540px, was 600px) for better content display.

Technical Details

  • Filter validation now checks for HTML structure (<!doctype html, <html>) rather than searching content for DDoS-related keywords
  • Userscript sync operations now run file I/O in a detached task using a nonisolated helper function
  • Fixed SwiftUI state management for onboarding sheet presentation

v1.2.0

05 Jan 23:18

Choose a tag to compare

What's Changed

Major Features & Improvements

  • Content Blocker Reorganization (548e86c, 4b83773, cdab183, f4a4469)
    Renamed and streamlined content blocker extensions for clarity: "wBlock Filters" → "wBlock Ads", "wBlock Annoyances" → "wBlock Privacy", "wBlock Security & Multipurpose" → "wBlock Security", and "wBlock Foreign & Experimental" → "wBlock Foreign". The multipurpose category has been eliminated, with its filters migrated to annoyances. Automatic data migration ensures existing users don't lose their filter configurations. NOTE: You will need to re-enable some extensions in Safari's settings. I apologize for the inconvenience, but this was unfortunately the only way.

  • Userscript File Import (7be7706, e7c49d4, 180fa51, 6d81306, 9c4cce9, ea2362c, bd36a3e, 562ad19, b58ce5b, 5f7184f, 84b01ab, cb84b6b)
    Added local file import for userscripts with full metadata validation, duplicate handling, and resource processing. The add-userscript sheet now includes a file picker with guidance, and macOS supports drag-and-drop. Proper UTType handling ensures compatibility with .user.js and .js files.

  • New AdGuard Split Annoyance Filters (ccfe022, f3d5d9b)
    Updated to support the new AdGuard split annoyance filter structure, replacing the old combined filter. Users can now selectively enable Cookie Notices, Popups, Mobile App Banners, Widgets, and Other Annoyances filters for finer control over blocking behavior.

  • @inject-into Userscript Support (a728cf3)
    Userscripts can now use the @inject-into directive to specify content script context, fixing compatibility with sites like Twitter that have CSP configured to block scripts appended to head.

  • DDoS-Guard Bypass for Userscripts and Filters (69d878b)
    Fixed an issue where userscripts and filters hosted on gitflic.ru (like Bypass Paywalls Clean) would download a Cloudflare-like DDoS prevention intermediate page instead of the actual content.

  • About Menu and Restart Confirmation (41ccf1c)
    Added a proper About menu item showing software version and credits. The "Restart onboarding" option now requires confirmation before resetting app data.

  • Fanboy's Anti-AI Suggestions Filter (ec93061)
    Added a new filter list to block AI-generated content suggestions across websites.


Performance & Reliability Upgrades

  • Fixed Filters Tab Freeze (e30af46)
    Resolved an important issue where scrolling would cause the app to lock up and become unresponsive, requiring a force quit.

  • Auto-Update Scheduling Fixes (dd877b8)
    Fixed bugs in the auto-update scheduling system to ensure filters update reliably at the configured intervals.

  • SafariConverterLib Update (e717386, 17ab7c6)
    Bumped SafariConverterLib to version 4.1.0.

  • Whitelist Synchronization and Background Scheduler (a2953df)
    Fixed whitelist synchronization issues and resolved a crash in the background scheduler that could cause unexpected app termination.

  • FilterUpdateService XPC Crash Fix (996315c)
    Fixed a crash caused by XPC framework loading issues in the FilterUpdateService.

  • Legacy Filter URL Migration (71845a0, 98db32a)
    Filter URLs are now automatically migrated on load to use updated endpoints. List-KR now uses AdGuard's official optimized Safari endpoint.

  • Badge Count Toggle Fix (dfee11a, e1acc0b)
    Fixed an issue where the blocked item count badge would still appear in the toolbar even when the "Show blocked item count in toolbar" setting was disabled. It's still not perfect but much improved.


Bug Fixes

  • Filter Count Calculation and Display (f452466)
    Fixed bugs in how filter rule counts were calculated and displayed to users.

  • Cross-Origin Hostname Injection Vulnerability (b097786)
    Fixed a security vulnerability in the element zapper that could allow cross-origin hostname injection.

  • Duplicate AdGuard Mobile Filters (23e0b96, 461be2a)
    Fixed duplicate AdGuard Mobile App Banners filter appearing on iOS and corrected the AdGuard Mobile Filter category on iPadOS.

  • Userscript Persistence and Concurrency (a3eb21e, 9ee9da6)
    Refactored userscript persistence and update logic. Data observation now tracks only userscript changes, preventing manually added scripts from unexpectedly disappearing.

  • Onboarding Sheet Bugs (be7d37a, d58e643, 9cdd0fc)
    Fixed issues where the onboarding sheet would repeatedly present or restart every 3 seconds after a data reset. New filter lists now display without requiring an onboarding restart.


UI/UX Improvements

  • Streamlined Auto-Update Settings (56cc74c)
    Simplified the Filter Auto-Update settings UI for fewer pop-ups.

  • Add Filter List Modal Text Update (eae12b8, e37be7b)
    Updated helper text in the Add Filter List modal to follow Apple Style Guide wording conventions.

  • "Waiting for activity" Label (4aa1a5a)
    Replaced the alarming "Overdue" label with the friendlier "Waiting for activity" for filter update status.


Notes

I could not be more grateful for all of your feedback. The community is what keeps this project alive. If you encounter issues or have suggestions, please open an issue on GitHub.

Thank you for supporting wBlock and helping make Safari the best browsing experience possible!

Download

Download from the App Store: https://apps.apple.com/app/wblock/id6746388723

Note: the app is currently in review. It might not be available in your region for up to 72 hours.

Join the Discord: https://discord.gg/Y3yTFPpbXr

v1.1.0

11 Nov 13:23

Choose a tag to compare

What's Changed

Major Features & Improvements

  • Critical Auto-Update Infrastructure Fixes (72477e4, 17850c0, 80f5d8d, 711b64b, 8cc8313)
    Fixed race conditions in auto-update concurrency that caused updates to get stuck in a running state. The system now properly clears stale running flags on app launch and uses a 5-second cache to reduce excessive reads. Background filter updates now work reliably on both iOS and macOS with proper BGTaskScheduler integration to prevent battery drain.

  • Complete Protocol Buffers Migration (4f3378d, 87456a8, c0544c4)
    All remaining UserDefaults and @AppStorage properties have been migrated to Protocol Buffers, including auto-update settings, tab tracking, and badge counter state. The migration provides 100% centralized data storage with atomic saves, automatic backups, type-safe APIs, and proper default values for new users. This eliminates race conditions from distributed UserDefaults access across extensions and provides a single source of truth for all app state.

  • Enhanced Userscript Compatibility (34a60f5, 6e90ba6, 353a0e1, 778cb1d, 3b1efe9, c3bdb3d)
    Major improvements to userscript support including GM_addStyle API for CSS injection, @noframes directive support, @resource loading with GM_getResourceText, GM_addElement for CSP-safe element injection, and GM.addValueChangeListener/removeValueChangeListener. The @require directive now downloads and prepends external script dependencies automatically. Proper unsafeWindow implementation now provides access to page context instead of isolated extension context, fixing compatibility with scripts like AdGuard Extra and Twitch ad blocking.

  • Userscript Injection and State Management (4aef242, 88f3b62, 8f431dd, 80dbfa0, 243e656)
    Fixed critical userscript injection scope issues where logging helper functions weren't accessible in dynamically injected script tags. Fixed action name mismatch (requestUserScriptsgetUserScripts) that prevented scripts from loading on iOS. Added persistence for userscript UI state including "Show Enabled Only" toggle and excluded default userscript URLs. Debug logging is now conditional based on build configuration.

  • Auto-Disabled Filter Management (e382948)
    wBlock now intelligently tracks and displays filters that were automatically disabled because their category exceeds Safari's 150,000 rule limit. This logic should be improved and more reliable than before.

  • Enhanced Custom Filter Validation (af7bd45)
    Custom filter lists now support both HTTP and HTTPS URLs without file extension restrictions. Downloaded filters are validated for content to ensure they are valid filter lists, with clearer user feedback on success or failure when adding a filter.

  • Critical Setup Checklist (7549dd9)
    Added a post-onboarding setup checklist to ensure users enable all required extensions. The app now tracks content blocker and platform extension setup state and displays critical setup requirements for features like YouTube ad blocking.

  • Foreign Filters Section Collapsibility (e41ae02)
    The foreign filters section (54 filters) is now collapsible to reduce clutter on the filter page.


Performance & Reliability Upgrades

  • Refined Filter Parsing and Metadata Management (eac074f, 80dbfa0)
    Filter parsing now correctly treats only lines starting with "!" as comments, preserving CSS selectors that begin with "#". Metadata version values now sanitize placeholder values like %timestamp% and %date% to prevent spurious update checks. Filter URLs have been updated for reliability, including AdGuard Annoyances switching to refs/heads/master.

  • Memory-Efficient Processing Improvements (5445ad6, a0bbaf1, 50d995c, 18e7b39)
    Fixed async/await usage in filter conversion for proper memory management. Network requests now use custom URLSession configurations with proper timeouts and resource management instead of shared sessions.

  • Duplicate Userscript Management (6a12557, 2fa6936, 4a770de)
    Enhanced detection and removal of duplicate userscripts with case-insensitive name matching. The system now tracks deleted default scripts to prevent re-adding them and prompts users to confirm removal of older duplicate versions.

  • Improved Data Handling (6e3b841, 28bebde, 7fe9f64)
    Fixed handling of empty data and proper accounting for last lines without newlines in filter processing. Improved error handling throughout the data pipeline for better reliability.


Notes

Your feedback is invaluable. If you encounter issues or have suggestions, please open an issue on GitHub.

Thank you for supporting wBlock and helping make Safari the best browsing experience possible!

Download

Download from the App Store: https://apps.apple.com/app/wblock/id6746388723

Join the Discord: https://discord.gg/Y3yTFPpbXr

v1.0.1

22 Oct 10:29

Choose a tag to compare

What's Changed

Major Features & Improvements

  • Automatic Filter Updates with Smart Scheduling (e0b48ea, c2bddfc, 72e2d89, 953df60, 49e9a6a)
    wBlock now performs serverless background filter updates to keep your blocking rules current automatically. You can configure update intervals from 1 hour to 7 days, or disable auto-updates entirely in Settings. The system uses HTTP ETag and Last-Modified headers for efficient update checks, downloading only when filters have actually changed. (dcd4209, 6f94954).

  • Enhanced Userscript System with Greasemonkey API Support (778cb1d, 3b1efe9, 353a0e1, 88f3b62)
    The userscript engine now implements the full Greasemonkey API, including getValue, setValue, deleteValue, listValues, getResourceURL, openInTab, notification, and proper unsafeWindow support for accessing page context. The @require directive now works correctly, automatically downloading and prepending external script dependencies (c3bdb3d). iOS userscript injection has been fixed by correcting the action name mismatch, and duplicate detection now prevents conflicts when multiple scripts share the same name (6a12557, 2fa6936, 4a770de).

  • Streamlined Update and Apply Flow (e02ea84)
    The filter application process now automatically checks for and downloads updates before applying changes, which eliminates the need for a separate manual update step. The progress UI displays phases (updating, processing, applying) with clearer visual feedback throughout the entire operation.

  • iOS Rule Capacity Increased to 150,000 Rules Per Extension (f1e24f2)
    Following AdGuard's v4.5.1 update, I realized that iOS content blocker extensions now support 150,000 rules each, up from the previous 50,000 limit. Combined with wBlock's five-extension architecture, this brings the total iOS capacity to 750,000 rules, a 50% increase from the previous 500,000 limit, with half the number of extensions.

  • All-New Liquid Glass UI Design (cfc4354, a16ff29, 26b2de5, 8d8af50)
    The app has been completely redesigned with a modern liquid glass aesthetic featuring translucent backgrounds, elegant blur effects, tabviews, and refined visual polish. All popovers and sheets now use a unified design system for consistency across the entire interface.

  • iOS Filter Category Unification (b1c7c7d)
    iOS content blocker targets have been restructured into five categories: Ads & Privacy, Security & Multipurpose, Annoyances, Foreign & Experimental, and Custom. This change simplifies filter management and ensures consistent naming and structure across both iOS and macOS platforms.

  • Smart Filter Category Reset with User Notification (#92, 4bd16ed)
    When applying filters exceeds Safari's rule limits, wBlock now intelligently resets affected categories to their defaults and displays notifications showing exactly which categories were reset. This prevents silent failures and helps you understand why certain filters weren't applied.


Performance & Reliability Upgrades

  • Migration to Protocol Buffers for Data Storage (3131975, 57d76e7, 2aadd77, 7761e6a, b2c5f49, f40523f, dcc3cc9, 8b664a6)
    wBlock has completely migrated from UserDefaults and SwiftData to Protocol Buffers for all app data storage. Data serialization now happens off the main thread, writes are debounced and atomic to prevent excessive I/O, unchanged data is skipped entirely, and LZ4 compression reduces disk usage. The migration provides massive performance improvements, better type safety, and more maintainable code across the entire codebase.

  • Memory-Efficient Filter Processing (a0bbaf1, 50d995c, 18e7b39, 5445ad6)
    The filter conversion process has been refactored for memory efficiency using grouped processing with streaming I/O instead of loading entire filter lists into memory at once. Network requests now use custom URLSession configurations with proper timeouts and resource management rather than shared sessions. All potential memory leaks have been eliminated, allowing wBlock to handle enormous filter lists without consuming excessive memory.

  • Throttled Progress Updates to Eliminate Freezing (7347c25, bb14de7, 65587f2)
    Progress updates during filter application are now throttled and consolidated through a dedicated ViewModel rather than updating on every single operation. This prevents excessive SwiftUI re-renders that previously caused UI freezing, ensuring smooth animations and responsive controls even during intensive operations.

  • Enhanced Apply Changes Progress Tracking (e02ea84, bb14de7, a21c805)
    The apply changes UI now provides detailed phase tracking for each stage (updating, processing, applying) with better visual feedback and refined statistics presentation. Graphics strain has been reduced during filter application by adding a UI delay before heavy work begins, ensuring the progress sheet renders fully before processing starts.


Visual & Usability Upgrades

  • New Settings Screen with Customization Options (5df855c, dcd4209, a1a0579)
    A Settings screen has been added with controls for badge counters, auto-update intervals, notification preferences, and more. The interface features clean organization with platform-specific controls and provides immediate feedback when values change.

  • Enhanced Onboarding Experience (6f94954, d55bfc3, 61ec10f)
    The onboarding flow now includes regional filter selection, notification preference setup on iOS, and improved filter list recommendations based on your language and region. Onboarding now waits for data loading to complete before displaying, preventing UI glitches. Userscript setup has been optimized to use batch operations for better performance (6592841).

  • Revamped Add Filter and Add Userscript Views (8e74702)
    The interfaces for adding custom filter lists and userscripts have been redesigned with a sheet-based UI, improved input validation, contextual requirements and feedback, and enhanced clipboard support for pasting URLs or code directly.

  • Improved Whitelist and Userscript Manager Views (0f88990, a1a0579, 3f867e4)
    The whitelist and userscript managers now feature redesigned layouts with better error handling and more intuitive controls. The userscript manager includes right-justified toggles and enhanced visual hierarchy for easier navigation.

  • Comprehensive Logging System (625b1ca, 6a07292)
    The logging system has been completely restructured for better diagnostics and troubleshooting. The logs view now combines emoji indicators with text labels for easy scanning, with log levels clearly displayed for each entry.

  • UI Polish and Refinements (01210e6, 034c27c, 4ee3cb8, ff81bab, 7450f5e, 5a3e371, 554b9c8, fe97187)
    Numerous small improvements have been made across the app: fixed white bars appearing in settings on iOS, resolved text disappearance on long press, right-justified all toggle switches for consistency, improved padding and spacing on iOS, and refined context menu styling.


Filter List Management

  • Updated Default and Recommended Filter Lists (2d35fa0, 61070dd, d62ccff, 2c759bd, 762347a, 169d532, 46dae5b)
    The default filter list selection has been refined for better out-of-the-box blocking performance. Notable additions include the AdGuard URL Tracking Filter for enhanced privacy protection, AdGuard Mobile App Banners for iOS users, EasyPrivacy and AdGuard Mobile Ads as essential filters on iOS, and a plethora of foreign filter lists.

  • "Last Updated" Timestamps (892dcc9)
    Filter lists now display "Last Updated" timestamps, allowing you to track when your blocking rules were last refreshed and identify outdated lists.


Compatibility, Dependencies & Maintenance

  • Updated Dependencies (61702eb, 5cbc47f, e1eb764, 20732fb)
    Core libraries have been updated to their latest versions: SafariConverterLib v4.0.4 (from v4.0.0), AdGuard Scriptlets v2.2.9, and SwiftProtobuf v1.3.0. These updates bring bug fixes, performance improvements, and new features from upstream projects.

  • iOS Platform Refinements (b1c7c7d, 787a3fd, c7815ae, 57b3824)
    Multiple iOS-specific improvements include unified content blocker targets, persistence specifiers added to manifest.json for proper extension persistence, updated Info.plist values, and background processing configuration for auto-updates (e30143b).

  • Element Zapper Fixes (b15b9bf, 0659c5a, c9c41cf)
    Several bug fixes ensure the Element Zapper tool works reliably across all platforms. Redundant code has been removed for cleaner maintenance and reduced code complexity.

  • Icon and Asset Updates (eeea9b6, 643d654, 034c27c, 3286cbc, 77fc7e2)
    Icons have been adapted using Icon Composer for better platform consistency. Design credits have been added to the README, wBlock Scripts assets have been updated, images have been optimized with ImgBot (36.46% size reduction), and toolbar item labels have been updated for clarity.

  • Build and Project Configuration (6b4219f, e5f18f0, 3219df1, 2ba4c65, 47ac7ae)
    The marketing version has been bumped to 1.0.1 across all targets. A TestFlight beta release scheme has been added for easier testing distribution, unnecessary entitlements have been removed, and project scheme organization has been improved.

  • Documentation and Community (3add4f2, a30892a, 643d654, 4b57057, 637977c, multiple README updates)
    A Privacy Policy has been added to comply with App Store requirements. The donation link and icon design credits have been updated i...

Read more

v0.3.0 Beta

23 Jul 14:17
60c2249

Choose a tag to compare

What's Changed

Major Features & Improvements

  • 🎉 iOS SUPPORT!!!!! 🎉
    You cannot imagine how much work it took to get full functionality on all platforms. I hope you enjoy the best ad blocking experience ever on your mobile devices.

  • Increased Blocking Capacity with Multiple Extensions (2b41970, ecfc1dd, b7d1f71)
    wBlock's architecture is now completely new, utilizing multiple content blocker extensions in the background. This architectural change dramatically increases the number of filters you can use, raising the maximum rule limit from 50,000 to a massive 500,000 on iOS and from 150,000 to 750,000 on macOS.

  • Element Zapper: Lets You Visually Remove Content (#74, 564c91a, 8987543, 9bb9f0e)
    For the first time, you can now visually select and permanently remove unwanted elements from any webpage. The new Element Zapper includes a one-click removal tool, a popover UI for managing your custom rules, and smart functionality for suggesting the best CSS selectors to use, giving you a powerful new tool to customize your Browse experience.

  • Userscript Support (#63, eb60462, 897cf77, 3936769)
    Userscript support is now a core feature. This release adds a new userscript injector, full support for userscripts on iOS for the first time, and a dedicated UI for managing your scripts. The interface has been upgraded for better responsiveness and includes new quality-of-life fixes.

  • Fast Per-Site Disabling for Total Control (6d5d3e4)
    A new toggle has been added that allows you to instantly disable wBlock on a specific website. This "ignore-previous-rules" function gives you granular control without having to manage complicated whitelists for a single session.

  • All-New Whitelisted Domain Management (fc34cf5)
    You now have a dedicated user interface to easily add, view, and remove domains from your whitelist. A corollary to the previous feature.

  • New Onboarding and Bypass Paywalls Integration (#63, 5c41d1b, 6240c50)
    To welcome new users, there is now a completely new onboarding UI that guides you through the initial setup. This process now includes built-in support for integrating the popular "Bypass Paywalls" userscript, making it easier than ever to get started with advanced blocking from the moment you launch the app.


Visual & Usability Upgrades

  • Massive Responsiveness Boost with Modern Concurrency (2285ae1, 53f0700)
    The entire application is now significantly more responsive. All heavy operations like filter processing have been moved to a modern concurrency system using async/await, preventing the user interface from freezing in most cases.

  • Enhanced Filter Management and Reliability (30a8ce5, 13c28e1, 3b9bfb9)
    The filter management system is now more robust. Rule counts for your lists are saved and loaded correctly, the app includes new retry logic for content blocker reloads, and you will now receive notifications when changes are not applied.

  • New App Icons and Visual Polish (2dad067, 9d0f85b)
    The app now features brand new icons for a more modern look and feel. Other small visual details, like the toolbar item icon, have also been updated to improve visual consistency.

  • Redesigned Popover and UI Enhancements (a696ddd, c4f4e12, 0033c04)
    The app's extension has been updated to a popover style for better integration with Safari (a696ddd). The popover view has also been updated with a new disclaimer about recent Safari changes, and an "x" button has been added for easier dismissal.


Compatibility, Maintenance & Small Fixes

  • Removed visionOS and XROS Support (ee633d1, f5e37d4, d410d7c)
    To focus development efforts and streamline the codebase, all support for visionOS (vision pro) and XROS has been removed from the project.

  • Refined Default Filter Lists (8563a07)
    The set of default, recommended filter lists has been changed to provide better out-of-the-box blocking performance for new installations.

  • Bug Fix for Appending Advanced Rules (336d654)
    Corrected a critical bug where adding new advanced rules would overwrite existing ones instead of appending them, ensuring user-defined rules are preserved correctly.

  • Codebase and Project Cleanup (#65, 2627ead, 3e0712f, b8d44d4)
    Deprecated user script testing files have been removed, the GitHub issue templates have been updated to improve bug reports, and project settings and build numbers have been updated. Debug logging was also added for the zapper rules (5d29410).


As wBlock is still in beta, I'm still a bit nervous about the bugs and issues that might pop up. If you encounter any problems, please open an issue and help me make it better! Any and all feedback is much appreciated, and I hope to have a long and healthy future for this app.

Thank you for giving wBlock a try. I hope it can make your Safari browsing experience the best it has ever been.

Download using TestFlight: https://testflight.apple.com/join/nCjEmXVQ

Note: If you already have v0.2 installed in TestFlight, you need to uninstall the app and use the link above to re-enroll. Apologies for the inconvenience this may cause.

  • Note 2: you will need to use the TestFlight version from now on due to Apple's permission issues related to Safari content blockers that aren't signed with App Store Connect.

Join the new Discord: https://discord.gg/Y3yTFPpbXr

v0.2.0 Beta

24 Apr 20:42

Choose a tag to compare

What's Changed

Major Features & Improvements

  • Added Keyboard Shortcuts Throughout the App (#52, 7abf476, dd56b32)
    Added a range of keyboard shortcuts (e.g., Command + R for refresh) for quicker access to functionality. A built-in cheat sheet was included (“?” icon) so users can see all available shortcuts.

  • Custom List Management Overhaul (#10, #48, #29, #30, d3ab093, 12c3c65)
    You can now add, edit, and remove your own custom adblock filter lists directly in the app. Duplicate custom filters are prevented; custom filter states display correctly everywhere; unnecessary manual entry for custom list details has been removed.

  • Massive Responsiveness, Speed, and Usability Improvements (#45, #2, #32, 925b15f, 742cc16, c96116f)
    All I/O and heavy computations are now moved off the main thread, making the UI significantly more responsive. Added a concurrent log manager to further reduce UI lag. JavaScript ad-blockers now inject as soon as DOM is ready, blocking ads sooner.


Blocking & Filter Improvements

  • Fixed Persistent Permission Prompts (#51, #33, #27, #39, #8, 925b15f, 7a3f0c8, d683256)
    Changed how permissions are requested and how the extension background handler runs to prevent repeated popups when opening Safari or wBlock.

  • Restored YouTube Ad Blocking (#43, #40, #38, #31, #19, d9188ed, c96116f)
    Updated ad-block scripts and filter timing: injection is now performed when the HTML document is ready, resulting in much better blocking on YouTube (including homepage and in-video ads). Also improved the set of default recommended filters for better YouTube blocking.

  • AdGuard Spanish/Portuguese List Now Functional (#49, #24, #6, aa58a5d, a6b1030)
    Fixed pathing and download URLs for AdGuard language lists. “No such file” errors are now handled, and Spanish/Portuguese/Chinese filters are verified to activate and update properly.
    (Chinese and other popular language lists are also now supported.)

  • Filter Rule Counts are Accurate (Custom and Built-in) (#44, 3489402, 8fc0cd1)
    Fixed discrepancy where filter lists (especially for custom lists) would show an incorrect number of active rules. Each list now shows the true rule count, always refreshed.

  • Clickable Filter List Sources/Homepages (#34, 24275eb)
    Each filter list in the UI includes a link to its source page for easy reference.

  • Added Filter Download Progress Bar (#37, 2bcf0f8)
    While downloading/updating filter lists, you now see a progress bar, so you always know how long updates will take.

  • Button to Filter by “Enabled Only” (#37, fcdd89b)
    The new button/panel option allows you to show only the filters that are turned on, for easier management.


Visual & Usability Upgrades

  • Sidebar Removed for Simpler UI (#46, ba74a4d)
    The sidebar has been replaced by a cleaner UI for managing your filters and settings.

  • Filter List Group “Refresh All” Improvements (#15)
    You can update all filters in one click, rather than having to select each individually.

  • Improved Popups and “Cheat Sheet” ([#4af3814](https://github.com/0xCUB3/wBlock/commit/4af3814), dd56b32)
    Changed popup layouts and adjusted styles for more consistent popups.

  • Popups and Log Viewer Can Now Be Closed (#12, #14, #5, 742cc16)
    Added close buttons and/or “Esc” handling to all popup/log windows, so you never have to force-quit the app again.


Compatibility, Maintenance & Small Fixes

  • Switched to GPLv3 License (#28)
    Switched entire codebase to a GPLv3 license as required by AdGuard components.

  • Improved Handling of “Sign-in Prompt” (#20)
    Added extra filter coverage for Facebook, LinkedIn, and similar sign-in wall dialogs.

  • Log Manager Now Concurrent (742cc16)
    Logging is now performed in the background, preventing UI stalls.

  • Clarified and Cleaned Up Various User Communications
    Permission prompts, labels, and information popups were rewritten or clarified for better user understanding (#39).

  • Numerous Tiny Visual and Text Tweaks
    Polish for small details across all screens (#35, #36, #18, #3)

  • Removed or Updated Deprecated Features
    The deprecated app updater was removed; entitlements modernized; scriptlets updated.
    (Commits: 58e8884, a73b0dd, fd19980, a6b1030)


As wBlock is still in beta, I'm still nervous about the bugs and issues that might pop up. If you encounter any problems, please open an issue and help me make it better! Any and all feedback is much appreciated, and I hope to have a long and healthy future for this app.

Thank you for giving wBlock a try. I hope it can reach and surpass your expectations.

Download using TestFlight: https://testflight.apple.com/join/DFGenhRn

  • Note: you will need to use the TestFlight version from now on due to Apple's permission issues related to Safari content blockers that aren't signed with App Store Connect.

v0.1.0 Beta - First Release! 🎉

10 Oct 16:26

Choose a tag to compare

I'm thrilled to finally share wBlock with you, a project that's been a labor of love for me. I want to thank the anonymous person who helped me get notarized.

As my first release, I'm a bit nervous about the bugs and issues that might pop up. If you encounter any problems, please open an issue and help me make it better! Any and all feedback is much appreciated, and I hope to have a long and healthy future for this app.

Thank you for giving wBlock a try. It means a lot to me.