Discover Feed Filter

An Xposed module that removes ads, sponsored cards and clickbait from the Google Discover feed, in the Pixel Launcher -1 screen and inside the Google app itself. Hide stories by headline or source with your own filters, and share articles with their real link instead of Google's redirect.

Android 11+ libxposed API 101+

Requirements

  • Android 11+
  • An Xposed manager with libxposed API 101 support, such as LSPosed or Vector

Installation

  1. Grab the APK:

    GitHub Releases Get it on F-Droid

  2. Enable the module in LSPosed and scope it to com.google.android.googlequicksearchbox.

  3. Open the Discover Feed Filter app and tap Scan to resolve hook targets.

  4. Force-stop Google App and relaunch.

Filter packs

Starter filters you can import from News filters, menu, Import:

Clickbait looks different in every language. If yours is missing, open a PR with a pack and I'll include it.

How It Works

The app scans the installed Google App with DexKit, resolving hook targets via protobuf extension field numbers and type signatures, and stores the result in a versioned cache. The hooked process uses the cached targets to filter ad items from the Discover feed.

Related

Also dislike ads in the Google Play Store? Try playstore-adblock, a sister module.

License

GPLv3

This project is licensed under the GNU General Public License v3.0.

Releases

8/28/2026, 6:18:00 PM

What's Changed

Features

Bug Fixes

Performance Improvements

  • c5a9b49 (hook) Keep the feed store database open between reads by @hxreborn

  • 3e6149c (ui) Recompute the detail title style only when it crosses the threshold by @hxreborn

Refactor

Dependencies

Assets

1

6/8/2026, 7:18:02 AM

What's Changed

Performance Improvements

Refactor

Build

Assets

1

v1.1.1

Stable

5/19/2026, 3:49:18 PM

What's Changed

Bug Fixes

Refactor

Documentation

Build

Miscellaneous

Assets

1

7/13/2026, 9:55:58 AM

What's Changed

Bug Fixes

Dependencies

Assets

1

5/30/2026, 12:40:59 PM

What's Changed

Bug Fixes

Refactor

Assets

1

v1.0.4

Stable

4/28/2026, 6:50:50 AM

What's Changed

Documentation

CI

Miscellaneous

Assets

1

v1.0.3

Stable

4/27/2026, 7:07:37 PM

What's Changed

Bug Fixes

  • 632ce34 (proguard) Adapt java_init.list so R8-renamed entry class loads by @hxreborn

Refactor

Documentation

Build

Miscellaneous

Assets

1

v1.0.1

Stable

4/27/2026, 9:31:31 AM

What's Changed

Added

  • (diag) Show fingerprint schema version in Scanned-against card - dfaa18a

Fixed

  • (ui) Pad LazyColumn with innerPadding to fix unresponsive taps - a905667

  • (ui) Swap Diagnostics nav icon to Map - 3fda6fb

  • (ui) Drop scrollbar nestedScroll to free click events - ea3254c

Changed

  • (hook/stream) Inline content-id field walker; isNullOrBlank - 10e9511

  • (licenses) Drop kotlinx.immutable for aboutlibraries 14 - 0896300

  • (prefs) Drop unused context property; suppress AGSA cache path lint - 498789d

  • (ui) Remove dead branches flagged by KotlinConstantConditions - d0055e1

  • (ui) Dashboard cleanup; drop unused AgsaIcon - 0dac68b

  • (ui/scan-progress) Move modifier to first optional param - 1fb8218

  • (ui/scrollbar) Drop redundant map { Unit } - c85cab0

  • Drop unused preview fixtures, target counters, IconSize.md - 345b79f

Dependencies

  • (deps) Bump aboutlibraries from 13.2.1 to 14.0.1 - e802692

  • (deps) Bump com.android.application from 9.1.1 to 9.2.0 - eb28cc7

  • (deps) Bump compose-bom and material3 (alpha18) - b0984fc

  • (deps) Bump navigation3 from 1.1.0 to 1.1.1 - 745424d

  • (deps) Bump kotlin from 2.3.20 to 2.3.21 - 374a73b

Other

  • (res) Merge mipmap-anydpi-v26 into mipmap-anydpi; move ic_about_discover to drawable-nodpi - 511e32e

  • (res) Drop unused strings, colors, drawables - 2556357

Assets

1

v1.0.0

Stable

4/25/2026, 10:41:56 AM

What's Changed

Added

  • (ui) Add licenses screen with aboutlibraries - 9123393

Fixed

  • (ui) Move nestedScroll from Scaffold to LazyColumn - d5e29af

  • (ui) Remove StatusCard color animation to prevent muddy blending - dc630e8

  • (ui) Replace blocking splash with inline StatusCard loading - ddea311

  • Suppress false positive UseKtx lint in HookMetrics - b9670ea

Changed

  • (nav) Rewrite AppNavHost with declarative NavDisplay API - 164c748

  • (ui) Inline AboutScreen icon overloads - c67327e

  • (ui) Clean up ResolvedSymbolRow and ScanProgressCard - 5a767fc

  • (ui) Filter licenses to direct deps, add scrollbar - 8142b88

  • (ui) Move previews inline and fix dashboard spacing - 445a8ad

  • (ui) Add Search icon to FAB and inline previews - bae74f5

  • (ui) Clean up about screen header and add inline preview - 5d4fd65

  • (ui) Redesign StatusCard with split states and visual hierarchy - 51e7dbb

  • (ui) Rename Hook Targets to Symbol Map - a04101b

  • (ui) Redesign about screen with GitHub icon and licenses nav - 880a75b

  • (ui) Add licenses strings, rename libraries section - 6f20068

  • (ui) Remove scan summary row from diagnostics - 7f6fd46

  • (ui) Use AccountTree icon for hook targets - 56f995d

  • (ui) Simplify preference summaries - 3fc3d6f

  • (ui) Polish about screen header layout - b97dcee

  • Simplify HookMetrics mutable state and file handling - e832bca

  • Simplify HomeViewModel - ad3ad19

  • Clean up DexKit cache and resolver - 71fed77

Other

  • Hide owner attribution in changelog commits - 9efe216

  • Update launcher icon assets - 0f0a762

Assets

1