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