I built Weather & Clock Dashboard after being frustrated with Firefox new tab options — either cluttered with news I didn't want or blank and useless. I wanted something actually useful on every new tab.
What it does
Live weather: Current conditions + 3-day forecast using your geolocation. Temperature in °C/°F, weather icons, humidity, wind speed. Powered by Open-Meteo API — free, no API key, no data sold.
World clocks: Pin up to 6 city clocks. See what time it is in Berlin, Tokyo, or New York without opening a separate app. Useful for remote teams spread across time zones.
Search bar: Clean search box defaulting to your preferred engine (Google, DuckDuckGo, Bing, or custom URL).
Dark/light mode: Follows system preference or manual toggle.
Why I built it for Firefox
Firefox is my daily driver. I built this as a Firefox WebExtension (also called Firefox Add-On) for a few reasons:
- Mozilla's review process is stricter — AMO requires unobfuscated source code and actual human review. This matters for privacy-conscious users.
- Firefox keeps MV2 extensions alive. Chrome is forcing MV3 which removes key capabilities; Firefox keeps both.
- The WebExtensions API is genuinely cross-browser, but Firefox's implementation is more complete.
Privacy
This was non-negotiable:
- Geolocation used only to fetch weather
- Weather requests go directly to Open-Meteo (not through any intermediary)
- Clock cities stored in browser local storage only
- No analytics, no tracking, no third-party scripts
Full permissions list on AMO: just geolocation and storage.
Technical stack
Pure HTML/CSS/JS — no framework, no build system, no bundler. I wanted the extension to be:
- Easy to audit (the code you see is the code that runs)
- Fast to load (no React hydration, no webpack chunking)
- Easy to maintain (no dependency rot)
The weather API is Open-Meteo: open-source, free, GDPR-compliant, based in Europe. No API key required.
What I learned
Service worker limitations in MV3: The transition from persistent background pages (MV2) to service workers (MV3) means you can't store state in memory across browser restarts. I store everything in browser.storage.local now.
Geolocation in new tab pages: New tab pages in Firefox are treated as privileged pages — they have access to navigator.geolocation directly without needing an explicit permission prompt in the extension manifest (beyond the geolocation permission declaration). This is different from content scripts.
Open-Meteo's forecast API: The free tier includes hourly forecasts and a daily forecast with min/max temperature, precipitation probability, and weather codes. The weather codes map to WMO standard codes, which have a well-defined icon mapping.
Install and source
- Firefox AMO: https://addons.mozilla.org/en-US/firefox/addon/weather-clock-dashboard/
- GitHub: https://github.com/oren-sys/weather-clock-dashboard (MIT license)
If you try it, feedback is welcome — especially for features that would be useful without adding clutter.
Top comments (0)