DEV Community

Cover image for Fluent Reader: open-source RSS reader built with Electron & React
Haoyuan Liu
Haoyuan Liu

Posted on

Fluent Reader: open-source RSS reader built with Electron & React

Fluent Reader is a local desktop RSS reader that I have been working on for the past month. It started as a toy project for me to try React after using Vue for years, but has since turned into something quite usable.

Website: https://hyliu.me/fluent-reader/
GitHub: https://github.com/yang991178/fluent-reader
Microsoft Store: https://www.microsoft.com/store/apps/9P71FC94LRH8
Mac App Store: https://apps.apple.com/app/id1520907427

Features

  • A modern UI inspired by Fluent Design System with full dark mode support.
  • Importing from or exporting to OPML files
  • Full application data backup & restoration.
  • Read the full content with the built-in article view or load webpages by default.
  • Search for articles with regular expressions or filter by read status.
  • Hide, mark as read, or star articles automatically as they arrive with regular expression rules.
  • Organize your subscriptions with folder-like groupings.
  • Single-key keyboard shortcuts.

Development pitfalls

Electron security

It may be tempting to start developing with nodeIntegration enabled in the renderer process or access functions in the main process with the remote module. This is the first major pitfall I ran into knowing basically nothing about Electron a month ago. Overall, this creates a security blackhole for an app that fetches content from all over the web. In the end I had to rewrote most of those logic using IPC modules and context bridges. This article from the Slack engineering blog serves as a good introduction to the issue.

Publishing to the stores

Packaging the app into appx bundles and uploading to Microsoft Store all went smoothly with Electron Builder. (For a side note, Microsoft Store even supports smart update by extracting the ~2MB of compressed JS files out of a ~70MB appx package.) The real hassles came from correctly signing the app for the Mac App Store. Following this article should do the trick, although the latest Electron version (v9.0.5) also works.

What's next?

Top comments (0)