Elytra Blog

The simple RSS Reader. This blog publishes release notes, engineering and design details.

November 2022 Supplementary Release

I’ve just released a supplementary update for the November 2022 release.

The iOS update has been approved, the Mac update is pending review and should become available shortly. It includes some critical fixes so updating is highly recommended. 

You can download the latest Mac release from Github as well. 

Release Notes

New

  • Added support for following Mastodon accounts through their RSS feeds. Start by adding the user’s ID (eg. @nikhil@social.dezinezync.com) in the new feed web address field.

Fixes

  • Fixed some issues when loading images using the image proxy

  • Fixed a bug with Smart Folders auto-grouping

  • Fixed exporting log archive

  • Fixed articles list sometimes not loading immediately after sync

  • Fixed crash when opening an article with an embedded audio file which had a negative start offset (basically a file with bad metadata)

  • Fixed a bug where “Mark All Read” would still show some articles are unread in the list

  • Fixed a critical bug where internal DB connection wiring was all messy. It’s a lot cleaner now and put inside a neat little white-box imported from a Scandinavian country

November 2022 Release

Elytra’s November 2022 releases focuses purely on stability and backwards compatibility of features. 

If you feel generous and have a couple of minutes, please leave a review on the App Store. It makes a huge difference for me. Thank you in advance.

Common Fixes & Improvements 

  • Various improvements to widgets
  • Fixed a bug with updating counters after syncing completes 
  • Fixed a bug with the “Review App” prompt appearing unexpectedly 
  • Fixed a bug causing filtered articles to be visible in article lists throughout the app.
  • Fixed crash when opening an article from notifications.

iOS 

  • Improvements for find in article on iOS 15
  • Find in article now loops over results in iOS 15 similar to iOS 16
  • Fixed search results in articles appearing in reverse order on iOS 16
  • Fixed a bug with counting for the lockscreen widgets

This will be the last release of 2022, not including bug fix releases in the v2022.11.x pipeline if any are required. I’ll be starting work on the next big features of Elytra soon and will slowly start becoming available with the v2023.1 release.

In the mean time, I hope you stay safe and healthy. Happy holidays.

Elytra October 2022 Release

The October release of Elytra focuses on bringing new features and improving performance & reliability of the app. It also brings supports for the newly released iPads.

If you feel generous and have a couple of minutes, please leave a review on the App Store. It makes a huge difference for me. Thank you in advance.

Smart Folders

Elytra's Smart Folder Editor on macOS and iPhone 14 Pro Introducing Smart Folders

  • Create smart folders using a combination of title keywords and folders
  • Automatically curated and ready to go when you need them
  • Notifications when new unread articles are available in smart folders

Improved

  • Massively optimised rendering of the Articles list for consistent 120fps scrolling (on supported devices)
  • Spotlight indexing now always runs in the background when your device is connected to power and has a reachable internet connection.

Fixes

  • Fixed bugs crashing the app in background
  • Fixed deleting folders
  • Fixed crash when renaming a feed
  • Fixed hang on reset app

Elytra September 2022 Release

The September release of Elytra focuses on bringing new features and improving performance & reliability of the app. It also brings support for iOS 16 and the newly released iPhone 14 and 14 Pro family of devices.

If you feel generous and have a couple of minutes, please leave a review on the App Store. It makes a huge difference for me. Thank you in advance.

Banner: Elytra running on iPhone 14 Pro

New

Banner: Elytra running on iPad Air with two articles in separate windows
  • Support for the latest OS releases.
  • Added section under Settings > Account to transition from a private ID to an Apple ID
  • Elytra now uses the common internal logging framework for fetching, displaying and archiving logs
  • You can now open independant multiple windows of Elytra on iPads
  • Searching in articles now uses the new Apple framework for a seamless system-UI experience.
  • Added multi-selection in the articles list
  • Added multi-selection context menus for bulk updating articles
  • Multi-selection support now enables dragging and dropping multiple articles
  • Two New Widgets for the Lockscreen:
  1. Unreads: Shows the unread articles from the last two weeks. The gauge counts up all the articles in the last two weeks.
  2. Today: Shows the number of unread articles from today. The gauge counts up all articles from today.

Both widgets open the respective section in the app for quick access.

  • Keyboard focus mode now enabled throughout the app

Improved

  • Improved performance of loading feeds, articles and processing filters
  • Improved performance of pulling new articles from Elytra Cloud
  • Improved article rendering performance by nearly 2x
  • Improved internal caching mechanisms
  • Reduced power usage signficantly when scrolling through long lists of articles
  • Tap anywhere on the empty view to display the sidebar if it is not visible
  • Improvements to the networking library used to communicate with the Elytra API
  • Improved sync performance for new installations of an existing account

Fixes

  • Fixed search crashing on iOS
  • Fixed crash on sign up (after a fresh installation)
  • Fixed a critical bug causing older articles to be marked as filtered even when no filters were applicable.
  • Fixed a critical bug causing Re-sync to crash sometimes
  • Fixed importing OPML and Feed Settings files
  • Fixed onboarding getting stuck when signing-in with a Private ID
  • Fixed an bug with the Folder’s widget always showing no articles
  • Fixed an bug with the Folder’s widget not correctly displaying micro.blog style posts
  • Fixed opening articles from widgets when the app isn’t running
  • Fixed reset account hanging after launching app
  • Fixed wrong icon displayed for the Share sheet extension

July 2022 Release

The July 2022 release of Elytra focuses on clearing up old code and files from Elytra’s codebase and the final release in the upgrade pipeline started back in 2022 during the May 2022 release.

If you feel generous and have a couple of minutes, please leave a review on the App Store. It makes a huge difference for me. Thank you in advance.

Improvements

  • Improved performance of loading feeds, articles and processing filters.

  • Improved performance of pulling new articles from Elytra Cloud.

  • Improved article rendering performance by nearly 2x.

  • Improved internal caching mechanisms.

  • Reduced power usage signficantly when scrolling through long lists of articles.

Fixes

  • Fixed onboarding getting stuck when signing-in with a Private ID.

  • Fixed OPML import issue.

  • Fixed search crashing on iOS

  • Fixed crash on sign up (after a fresh installation)

  • Fixed a critical bug causing older articles to be marked as filtered even when no filters were applicable.

  • Fixed a critical bug causing Re-sync to crash sometimes.

May 2022 – 3 Release

The May release of Elytra focuses on clearing up old code and files from Elytra’s codebase. A lot is changing under the hood, but very little is changing visually in the app.

This is to prime the codebase for WWDC 2022 which will bring in new OS versions and features to the app.

This will be the final release to support iOS 14. This will also be the final release with new features until the next release shipping with iOS 16 support.


As WWDC approaches, we’ll be seeing a lot of articles coming from the press surrounding the event. RSS feeds are a great way to follow this news as it happens.

So to get you setup, first 1000 users can get their first three months at a discounted price using the code: EYTWWDC22 for the monthly subscription, and EYYWWDC22 for the yearly subscription.

These codes will be valid till the 12th of June, 2022, 12:00AM GMT.


Fixes

  • [iOS] Deleting your account now prompts for cancelling your active subscription and backing up your data before deleting it.

  • Fixed a crash when opening the filters view.

  • Fixed a crashing bug that would sometimes occur when marking over a hundred articles as read.

  • Fixed a crashing bug that would occur when no items are pending to be marked as read.

May 2022-2 Release

The May release of Elytra focuses on clearing up old code and files from Elytra’s codebase. A lot is changing under the hood, but very little is changing visually in the app.

This is to prime the codebase for WWDC 2022 which will bring in new OS versions and features to the app.


As WWDC approaches, we’ll be seeing a lot of articles coming from the press surrounding the event. RSS feeds are a great way to follow this news as it happens.

So to get you setup, first 1000 users can get their first three months at a discounted price using the code: EYTWWDC22 for the monthly subscription, and EYYWWDC22 for the yearly subscription.

These codes will be valid till the 12th of June, 2022, 12:00AM GMT.


If you feel generous and have a couple of minutes, please leave a review on the App Store. It makes a huge difference for me. Thank you in advance.

New

  • New User Interface and manager for OPML Imports

  • New marking articles as read now happens in the background. The operations complete instantly and whenever your device has an opportunity to update this with the API, it’ll make an attempt. If you’re offline, it’ll try the next time you’re online.

Fixes

  • Fixed marking read blocking the UI in some cases.

  • Fixed some data-race bugs.

  • [iOS] Fixed Safari extension showing blank feed items.

  • [iOS] Fixed Safari extension showing the UI when only a single feed is identified. It now directly opens the app with that URL instead.

  • Fixed a bug where image re-downloads would fail immediately when retrying with the image proxy.

  • Fixed push tokens not being synced with the server when push notifications are already authorized.

  • Fixed full re-sync causing the app to crash instantly.

May 2022 Release

The May release of Elytra focuses on clearing up old code and files from Elytra’s codebase. A lot is changing under the hood, but very little is changing visually in the app.

This is to prime the codebase for WWDC 2022 which will bring in new OS versions and features to the app.

As WWDC approaches, we’ll be seeing a lot of articles coming from the press surrounding the event. RSS feeds are a great way to follow this news as it happens.

So to get you setup, first 1000 users can get their first three months at a discounted price using the code: EYTWWDC22 for the monthly subscription, and EYYWWDC22 for the yearly subscription.

These codes will be valid till the 12th of June, 2022, 12:00AM GMT.

If you feel generous and have a couple of minutes, please leave a review on the App Store. It makes a huge difference for me. Thank you in advance.

Fixes

  • fixed a bug preventing manual refresh

  • [iOS] fixed a bug causing background refresh to hang until the app was active again.

  • [iOS] implemented Offer Codes Redemption

  • [iOS] fixed viewing logs

  • fixed a bug causing indexed articles to be re-indexed on launch

  • miscellaneous internal fixes

April 2022 Release

The April release of Elytra focuses on clearing up old code and files from Elytra’s codebase. A lot is changing under the hood, but very little is changing visually in the app.

This is to prime the codebase for WWDC 2022 which will bring in new OS versions and features to the app.

If you feel generous and have a couple of minutes, please leave a review on the App Store. It makes a huge difference for me. Thank you in advance.

New

  • Spotlight integration for articles.

  • Re-enabled feeds indexing for Spotlight.

Improvements

  • Improved logging system

  • Sharing logs is now faster

  • Improved mini-audio player reactiveness.

  • When contacting support, logs are automatically attached to the email.

  • When no email accounts are setup, Elytra will now let you share the debug information and logs through the share sheet.

  • macOS users can view the app logs now. Help (Menu) > View Logs

Fixes

  • Fixed a few random crashes caused by the previous available SDK.

  • Fixed a regression where the blog label was not tappable in the article reader.

  • Fixed a bug with updating selected state of article in the list on iPadOS/macOS.

  • Fixed localisation, Voice Over and some accessibility tokens on the article switcher and helper buttons.

  • Fixed importing OPML files not correctly parsing unencoded html entities in feed titles.

Others

  • Updated attributions of 3rd party libraries.

Introducing Neptune

Prelude

RSS Feeds are amazing! Many of us have built entire apps, services and businesses around it. The specifications for it have existed for a long time. Newer specifications like JSONFeed are powering new workflows around it.

Earlier in the previous decade, websites began injecting ads, trackers into their RSS feeds. Those were easy to get around for Elytra.

However, soon after the rise of Ad Blockers and similar technologies, more and more websites wanted people to open their web pages through their RSS feeds. This leads to websites providing only truncated excerpts in their feeds.


This become a legitimate problem soon after Social Media Giants began fiddling with users feeds by converting a timeline to a suggestions list like the coupons section from a local newspaper ¯\_(ツ)_/¯.

To solve this problem, a lot of genius services like Postlight’s Mercury popped up. They provided a huge boost to feed reader apps (and many others). Almost every app I used before Elytra used it. Elytra used it up till version 2022.2.4.

However, Postlight later made Mercury an open-source project which didn’t receive much attention from the original authors and the community since 2019. I tried to add my own patches to it however, it became tedious to maintain in its current form without doing a complete rewrite against the latest tooling and NodeJS versions.

Since I was considering a rewrite anyway, I thought to myself: why not do it with my new favourite programming language as of 2022: Swift. And as I was going to rewrite things, why not do it simpler (if not better!).

Introduction

This led me to create Neptune, a pure Swift based system to fetch and parse full-text content from webpages for Elytra. It’s fast, very very fast (more details below) and uses a simpler logic compared to mercury to parse and process webpages.

The Swift programming language, by its design, leads to type safe code that brings fewer surprises compared to NodeJS. It also compiles down into a single executable binary, which has its own tradeoffs, but brings three powerful, key features:

  • maintainability
  • performance
  • more performance

Numbers

Oh, and I’m not kidding. On a tiny t3.nano (512MB RAM, 2GB swap, 1vCPU) server, these are some numbers:

Process 0.1K Articles 1K Articles 10K Articles
Mercury 28s 378s 3500s
Neptune 12s 135s 1428s
Change +40% +41.17% +42.05%
  • These tests were performed with the t3.nano instance having full CPU credits available to it.
  • These tests did not persist any data to disk by itself.
  • These tests were performed in partial isolation: only the process being tested was run along with the test script.

If you’re asking yourself, what the numbers mean for you: the answer is quite simple: Neptune is very quick at fetching full-text context from your favourite blogs. Additionally, because it’s simpler to maintain and upgrade, adding support for new websites is vastly simpler and requires only a few lines of code of me (sometimes only 6 lines, 4 of which are bootstrap code).

The Future

I’m sure Neptune is not ready for any commercial use, not in its current form anyways. But I will eventually offer Neptune as a standalone service for other apps to use. I’ll document this at a later point in time.

Users of Elytra can take advantage of Neptune starting with the v2022.03 release as the default extractor. No settings to toggle. It’s all set up.

If you spot any issues, or articles from specific websites failing to load, please submit an issue on Github. It has a standard format making it easy for you to submit reports. I look forward to reading from you about your experience with Neptune.