Back to Portfolio
02 / Chrome extension
Tunewise
A Chrome extension that hides the distracting parts of YouTube page by page: Shorts, recommendations, comments, sponsored items and more. Changes apply live without a reload, and no data is collected. Published in the Chrome Web Store.
Manifest V3WXTPreactTypeScriptTailwind CSS v4Playwright
Visit Website


Overview
Tunewise makes YouTube calmer: the user picks which distracting parts of each page disappear, and everything else stays as it is. Built from an empty repository to a published Chrome Web Store extension, with a spec-driven workflow, a strict privacy stance and an automated test suite that runs against YouTube page fixtures.
Goals
- 01Hide distractions page by page — Home, Video, Search, Subscriptions, Channel, the left sidebar and pop-ups — with every option off by default
- 02Apply changes live on open tabs, without a reload, and survive YouTube's single-page navigation
- 03Collect no data: no network requests, no analytics, no remote code; settings sync through Chrome only
- 04Keep YouTube working when its markup changes: an affected option simply stops, nothing else breaks
Tech Stack
- //Manifest V3 extension built with WXT; popup and import page in Preact with Tailwind CSS v4
- //One stylesheet for all hide options, switched by classes on the page root; MutationObserver-based marking for watched videos, batched per animation frame
- //Typed, versioned settings with valibot schemas and migrations, stored in chrome.storage.sync with export and import
- //TypeScript strict mode; Vitest unit tests and Playwright end-to-end tests that load the built extension against recorded YouTube markup
Results & Outcome
- //1.0.0 published in the Chrome Web Store, approved on the day it was submitted
- //Options for Home, Video, Search, Subscriptions and Channel pages, the left sidebar and pop-ups, including dimming or hiding already watched videos
- //A lightweight package with only two permissions, storage and activeTab, running on youtube.com only
- //Unit and end-to-end test suites run on every change