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?
- I may work on integrating the app with RSS services like Feedly and Inoreader.
- You can help internationalize the app into additional languages.
- For my future projects, React Native Windows seems pretty promising as it compiles down to UWP components while providing macOS compatibility.
Top comments (0)