April 2026 Update: Migrated from CRXJS and improved with a cleaner architecture and modern UI stack.
A Chrome extension that blocks distracting websites using MV3 Declarative Net Request rules, with per-domain path exceptions and a polished popup/options/blocked-page experience.
- Fast MV3 blocking: Uses Chrome Declarative Net Request dynamic rules for reliable domain-level blocking.
- Per-site exceptions: Allow specific paths (for example docs pages) while keeping the main domain blocked.
- Live settings sync: Rule and toggle changes are persisted in Chrome storage and reflected immediately.
- SPA fallback protection: Handles history-state navigation in single-page apps so blocked pages still redirect.
- Three dedicated surfaces: Popup for quick control, Options for full management, and a custom Blocked page.
- Modern UI stack: React 19 + Tailwind v4 + shadcn/ui primitives.
# Install dependencies
bun install
# Start extension dev mode
bun run devThen load the extension from .output/chrome-mv3 in chrome://extensions (Developer Mode -> Load unpacked).
| Command | Description |
|---|---|
bun run dev |
Run extension in dev mode |
bun run dev:firefox |
Run dev mode for Firefox |
bun run build |
Build production bundle |
bun run build:firefox |
Build production bundle (Firefox) |
bun run zip |
Create production zip |
bun run zip:firefox |
Create production zip (Firefox) |
bun run typecheck |
Run TypeScript checks |
bun run format |
Format code with Prettier |
src/
ββ entrypoints/ # background + popup/options/blocked entry files
ββ features/ # screen-level React features
ββ components/ # reusable forms, lists, and UI wrappers
ββ components/ui/ # shadcn-style UI primitives
ββ lib/ # storage, types, URL normalization/validation
ββ assets/ # global Tailwind stylesheet- Rules are stored in
chrome.storage.local. - Settings are stored in
chrome.storage.sync. - Background worker maps saved rules to DNR dynamic allow/redirect rules.
- Navigation to blocked URLs is redirected to the bundled blocked page.
- SPA history updates are checked as a fallback to keep blocking consistent.
- Run
bun run build. - Open
chrome://extensions. - Enable Developer Mode.
- Click Load unpacked.
- Select
.output/chrome-mv3.
- WXT for MV3 extension build tooling
- React 19 + TypeScript
- Tailwind CSS v4 + shadcn/ui
- Bun for package management and scripts
MIT License. See LICENSE for details.
