Releases: 0xCUB3/wBlock
v1.1.0
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@requiredirective now downloads and prepends external script dependencies automatically. ProperunsafeWindowimplementation 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 (requestUserScripts→getUserScripts) 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
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, includinggetValue,setValue,deleteValue,listValues,getResourceURL,openInTab,notification, and properunsafeWindowsupport for accessing page context. The@requiredirective 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...
v0.3.0 Beta
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 usingasync/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
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! 🎉
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.