The new tab page is the most frequently opened URL in any browser. I open dozens of them a day.

Most default new tab pages are either blank or marketing pages. Browser extensions have tried to make this space useful.

I wanted: live news from RSS feeds I control, weather, bookmarks, and a clock — all in one place, all configurable, all running locally.

So I built News & Widget Dashboard for Firefox.

The widget system

The extension uses a widget grid: draggable, resizable cards that each render a specific type of content.

  • Clock — time and date, refreshes every second
  • Weather — current conditions from Open-Meteo API (no key needed)
  • News — RSS feed reader, supports multiple feeds, auto-refreshes
  • Bookmarks — quick-access bookmarks without leaving the new tab
  • Notes — lightweight scratchpad, stored locally

You can add, remove, and reorder widgets. If you do not want weather, remove it. If you want two news feeds side-by-side, add two news widgets with different sources.

RSS in 2026: still the best way to follow news without algorithms

RSS is unfashionable but it is exactly right for this use case. No algorithm decides what you see. No personalization. Just the articles from the sources you chose, in reverse chronological order.

The extension fetches RSS feeds directly in the browser. No proxy, no server-side parsing.

async function fetchFeed(url) { const response = await fetch(url); const text = await response.text(); const parser = new DOMParser(); const doc = parser.parseFromString(text, "text/xml"); return Array.from(doc.querySelectorAll("item")).map(item => ({ title: item.querySelector("title")?.textContent, link: item.querySelector("link")?.textContent, pubDate: item.querySelector("pubDate")?.textContent, })); } 

Browsers can parse XML natively. DOMParser has been there for years. No dependency needed.

Cross-origin fetch: the CORS problem with RSS

Most RSS feeds do not send CORS headers. fetch() from a web page will fail with a cross-origin error.

Extensions solve this cleanly. A Firefox extension with <all_urls> permission can fetch any URL from a background service worker without CORS restrictions. The content script renders the data; the background worker fetches it.

{ "permissions": ["storage"], "optional_permissions": ["<all_urls>"] } 

Requesting <all_urls> as optional means users grant it when they add a news feed, not at install time.

Dark mode and light mode

The extension ships with both themes. The toggle is a single attribute on <html>:

:root { --bg-base: #0f1117; --accent: #6366f1; } [data-theme="light"] { --bg-base: #f8fafc; --accent: #6366f1; } 

All component styles use CSS custom properties. Theme switch = one setAttribute call.

Install it

News & Widget Dashboard on Firefox Add-ons

Free, no account, runs entirely locally. Add your RSS feeds and they will be there every time you open a new tab.

RSS feed aggregation in the browser is an underexplored space. A browser-local reader with no sync backend is a different trade-off worth exploring.