Skip to content
Nafiz Iqbal
Projects

Browser extension that puts you in charge of your feed

FeedKit

The algorithm decides what Facebook shows you. FeedKit hands that decision back: hide Reels, Stories, Sponsored and Suggested posts, filter by keyword, build your own rules, and cap your daily time, all inside your browser.

Ownership
Personal work
Organisation
Personal product
My role
Sole engineer and designer
Status
Live on the Chrome Web Store
FeedKit popup with feed cleaner toggles, reading mode selected, and today's usage stats

Overview

FeedKit is a Chrome extension for people who still need Facebook for groups, events, and friends, but are tired of the feed deciding how they spend their evening.

One small popup switches off the parts of the feed that exist to keep you scrolling. A full options page adds keyword and page filters, a rule engine, video controls, and limits on how far and how long you scroll.

Role and ownership

What I personally did

  • Product definition, store listing, and privacy policy.
  • Manifest V3 extension: content script, background worker, popup, and options page.
  • Post detection that survives Facebook's generated class names, plus the keyword, page, and rule engine.
  • Video controls, reading and zen modes, scroll and daily time limits, and on-device usage stats.

Constraints

  • Facebook's markup uses generated class names that change between deploys, so nothing can be selected the obvious way.
  • The feed is infinite and rendered on the fly, so filtering has to keep up with posts as they appear without making scrolling stutter.
  • Privacy was a product requirement: no server, no account, and nothing about the user's feed may leave the browser.
  • Manifest V3 rules: no remote code and a background worker that can be shut down at any time.

Solution

Fixed surfaces like Reels, Stories, and sidebars are hidden with structural CSS the moment the page loads, so they never flash on screen. Posts are handled by a MutationObserver that scans each new post as it arrives and applies a verdict: hide, blur, collapse, highlight, or leave alone.

Detection keys off ARIA labels, role attributes, data-pagelet markers, URL patterns, and visible text rather than class names. When Facebook ships a new build, those signals usually survive.

Settings live in browser sync storage and are re-applied live when they change. Usage stats stay in local storage on the device, and a background worker enforces the daily limit using heartbeats from open tabs.

Clean up a feed

FeedKit

Live demo

Feed cleaner

Keyword filter

Mode

4 of 8 posts hidden by FeedKit

  • Maya Rahman

    Finally finished the Sajek trail. Worth every single step.

    Like · Comment · Share · 24 comments

  • Celebrity Buzz Daily

    Suggested for you

    You will not guess who was spotted at the airport.

    Like · Comment · Share · 24 comments

  • People You May Know

    People You May Know

    Rafi, Nadia, Sumon and 12 others

    Like · Comment · Share · 24 comments

  • Dhaka Tech Meetup

    Next session: building browser extensions with React and Manifest V3.

    Like · Comment · Share · 24 comments

The popup's controls working on an invented feed. Try the keyword actions and the zen mode.

  1. Controls

    • Popup

      Quick toggles, mode, today's stats

    • Options page

      Filters, rules, video, appearance

  2. Storage

    • Sync storage

      Settings, across your own browsers

    • Local storage

      Usage stats, device only

  3. On the page

    • Structural CSS

      Reels, Stories, sidebars

    • Post scanner

      MutationObserver + rule engine

  4. Background

    • Service worker

      Daily limit, hidden-post counts

Where each part of the extension runs. Nothing leaves the browser.
FeedKit options page with feed cleaner toggles and surfaces to hide
FeedKit productivity settings: reading mode, zen feed, scroll control, and daily time limit

Key decisions

  1. Detect by meaning, not by class name

    Facebook's class names are generated and change without notice, which breaks most feed-cleaning extensions within weeks.

    Considered
    Target the current class names and patch them whenever they change.
    Chose
    Identify posts and surfaces from ARIA labels, roles, data-pagelet markers, URL patterns, and visible text, the signals the page needs for accessibility and routing.
    Trade-off
    More heuristics to write and test than one selector, but a Facebook deploy rarely breaks the extension.
  2. Two mechanisms: CSS for surfaces, a scanner for posts

    Some things never change position (the Reels tray, sidebars); posts stream in endlessly.

    Considered
    Run every rule through one JavaScript scanner.
    Chose
    Static surfaces are hidden with injected CSS before first paint. Only posts go through the MutationObserver and the rule engine.
    Trade-off
    Two code paths to maintain, but nothing flickers on load and the scanner only does work that needs judgement.
  3. No server at all

    An extension that reads your feed is exactly the kind of thing people should be suspicious of.

    Considered
    A small backend for accounts, stats, and remote rule updates.
    Chose
    Everything runs locally. Settings sync through the browser's own storage, stats never leave the device, and the optional AI features call the user's chosen provider directly with their own key.
    Trade-off
    No usage analytics to learn from, so feedback comes from store reviews. In return, the privacy policy is short and easy to verify.

Outcome

  • 92

    Users on the Chrome Web Store

    From the store listing on 19 Oct 2026.

  • 4.3

    Average rating out of 5

    Six ratings on the Chrome Web Store, 19 Oct 2026.

  • The whole extension ships in 108 KiB with no remote code, as Manifest V3 requires.

Reflection

The hard part of a feed cleaner is not hiding things, it's finding them. Designing detection around accessibility signals turned a maintenance treadmill into an occasional fix.

Facebook is the first platform. The detection and rule engine are written so Instagram, LinkedIn, Reddit, X, and YouTube can follow.