Skip to content

leemark/simplereader

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SimpleReader — Local RSS Reader

Privacy-focused, local-first RSS reader. No account required.

GitHub Pages Chrome Web Store


Features

  • Reads RSS 2.0, Atom, and RSS 1.0 (RDF) feeds
  • All data stored locally in Chrome — nothing leaves your browser
  • Cross-device sync via Chrome's built-in Sync (no account needed beyond your Google account)
  • OPML import and export — bring your existing subscriptions
  • Dark mode and font-size settings
  • Full-text search across all loaded articles
  • Keyboard navigation (j/k or arrow keys, Enter to expand)
  • Starred/pinned feeds float to the top of the sidebar
  • Efficient conditional HTTP fetching (ETag / Last-Modified)

Installation

Chrome Web Store

Install directly from the Chrome Web Store.

Load from source

  1. Clone this repo and install dependencies:
    cd extension
    npm install
    npm run build
  2. Open chrome://extensions in Chrome and enable Developer Mode
  3. Click "Load unpacked" and select the extension/dist/ folder

Starter Feeds

Not sure what to subscribe to? HN Popular Blogs 2025 is a curated OPML of 95 tech blogs that appeared most on Hacker News. Download the raw OPML and import it via Settings → Import OPML.


Privacy

SimpleReader does not collect, transmit, or sell any personal data. All articles and subscriptions live in your browser's local storage. See the full Privacy Policy.


Permissions

Permission Reason
storage + unlimitedStorage Store subscriptions, articles, and settings locally
alarms Periodic background feed refresh (every 30 minutes by default)
host_permissions: *://*/* Fetch RSS feeds from any domain the user subscribes to

Development

All commands run from the extension/ directory:

npm run dev      # Vite dev server — hot reload for popup/dashboard UI
npm run build    # Production build to extension/dist/
npm run lint     # ESLint

Note: The background service worker does not hot-reload. After changes to src/background/, run npm run build and reload the extension in Chrome.

Architecture overview

  • Popup (src/App.jsx) — single "Open Reader" button that opens the dashboard tab
  • Dashboard (src/dashboard/Dashboard.jsx) — sidebar feed list, article list, settings modal
  • Background worker (src/background/index.js) — all feed fetching and storage writes; updates the badge with the unread count
  • Storagechrome.storage.sync for settings/subscriptions, chrome.storage.local for articles
  • Feed parsingfast-xml-parser handles RSS 2.0, Atom, RSS 1.0 (RDF)
  • Content safety — HTML from feeds sanitized with DOMPurify before rendering

License

MIT — see LICENSE

About

A privacy-focused, local-first RSS reader that runs completely in your browser. No account required.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors