When I started building a new tab extension for Firefox, I made a deliberate choice: no npm, no webpack, no build pipeline. Just HTML, CSS, and vanilla JavaScript. Here's what I learned. The motivation I wanted a new tab page that shows live weather, world clocks, and a search bar. Simple. But most extensions I found were either bloated with React+Redux or required API key signups. I decided to build one myself. Clean, fast, zero tracking. The architecture The extension is a single newtab.html file with inline CSS and JS. No external dependencies. The whole thing loads in under 100ms. Weather data : I use wttr.in , a free weather service that returns JSON without requiring an API key. Just fetch https://wttr.in/{city}?format=j1 and you get current conditions + 3-day forecast. async function fetchWeather ( city ) { const resp = await fetch ( `https://wttr.in/ ${ encodeURIComponent ( city )} ?format=j1` ); const data = await resp . json (); return { temp : data . current_condition [ 0 ]. temp_C , desc : data .…