A browser extension
Change how a site works for you. Smaller than you'd think.
Build time ~4 hrs
An extension is HTML, CSS and JavaScript plus a manifest file. If you can build a web page you can build one, and it lets you fix the site that annoys you every day.
1. Know the pieces
Manifest — the config file declaring what your extension is and what it may do.
Content script — runs inside the page, can read and change the DOM. This is where most of the work happens.
Background / service worker — runs separately, handles events, holds state, makes network requests. Can't touch the page.
Popup — the panel when someone clicks your icon. A tiny web page.
They're isolated from each other and talk by message passing. Understanding that separation is most of the learning curve.
Build a Manifest V3 browser extension that <does what> on <which sites>. - Manifest with the minimum permissions needed. Justify each one. - Host permissions scoped to specific sites, never <all_urls>. - Content script that <the change>, and that copes with the page changing after load — most sites render content dynamically, so use a MutationObserver rather than running once. - Settings stored in extension storage, with a small options page. Tell me how to load it unpacked for testing, and what differs when publishing to the store.
2. Handle dynamic pages
The most common bug: your script runs at load, the site renders its content a second later, and your changes affect nothing. Watch for changes rather than assuming the page is finished, and make your modification safe to run repeatedly.
3. Ask for as little as possible
Permissions are shown to users at install and reviewed by stores. <all_urls> reads every page they visit, which is both a hard sell and a genuine responsibility. Scope to the sites you actually need.
4. Expect the site to change
You're depending on someone else's markup, which they will change without warning. Select on stable attributes, fail quietly when your selector finds nothing, and don't break the page when your extension can't do its job.
Build it for yourself first and use it for a fortnight. Publishing means review times, privacy policies and support requests — worth it only once you know the thing is good.