Elytra Blog

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

March 2022 Update

The first release of March, 2022 is here and includes a variety of improvements and bug fixes.

The is the first release to introduce Neptune, Elytra’s own full-text extractor based on modern technologies.

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.

Here’s what’s new and changed in v2022.03.0:

New

  • The app now uses Neptune, a new full-text extractor, for fetching full-text content for articles.
  • [macOS] Added Read and Bookmark buttons to the toolbar.
  • You can now import and export your feed settings.

Fixes

  • Fixed articles rendering an image caption again as a normal paragraph.
  • Fixed an accessibility bug where large bodies of text would not be picked up by VoiceOver.
  • Fixed an accessibility bug where image captions would sometimes skip punctuations when using VoiceOver.
  • Fixed a crash that would sometimes occur when opening an article in its own window.
  • Fixed fetching full-text and reloading full-text content.
  • Fixed discarding loaded full-text content.
  • Fixed a critical issue where the app would start into an invalid state after setting up the account.
  • Fixed a crash which would sometimes occur when opening an article in the browser.
  • Fixed a crash which would sometimes occur when setting up an article.

Notes

If you see continous errors when fetching information about subscriptions, purchasing or restoring: please check if you have a custom DNS blocker enabled on your device. Some of these prevent connections to the service Elytra now uses to manage subscriptions. You may have to unblock api.revenuecat.com in your DNS blocker settings to get things to work.

February 2022 Update

Elytra got multiple releases in February. This post outlines the changes across all those releases and acts as a monthly summary of things happening here.

Version Numbers

Starting with the recent releases, the versioning scheme for the apps has changed. The previous version numbers wouldn’t make much sense to either of us, except for identifying a particular release.

That’s not helpful if I have tens of builds for the same version and the macOS and iOS apps are running two separate builds for the same version.

Now, the versions are numbered as year.month.release, the latest release being 2022.02.4. That makes it easy for the both of us to identify when this build was released. For people browsing the App Store, it’s a clear indication of a regularly updated app as well.

Changes, Improvements and Fixes

Improvements

  • Added new keyboard shortcut to load Full-Text when an article is open.

  • Updated Japanese translations

  • Improvements to bulk marking read and improvements around on-device logging for the same.

  • Hint for externally opening articles

Fixes

  • Some fixes around images from specific hosts failing to load.

  • Fixed some issues around fetching full-text.

  • Fixed a bug causing full-text cover images not being drawn in the article view.

  • Fixed an issue with some attachments not appearing in articles.

  • [iOS] Added Logs viewer and export under settings.

  • Fixed swipe action on article not correctly marking an article as unread.

  • Clear local data correctly when resyncing.

  • Fixed shadows of the categories in the New Feed section.

  • Fixed a crash when processing block quotes in some articles.

  • Fixed a crash occurring after a successful OPML import.

  • Fixed crashes around importing feeds from OPML files.

  • Fixed feeds not mapping to folders when importing structured OPML files.

  • Fixed a bug with first time account setup causing multiple not-found errors in some cases.

  • Fixed a crash when syncing new articles which only contain a cover image.

  • Fixed adding a new feed directly to a folder.

  • Fixed feeds resync discarding feed settings.

  • Fixed feeds resync not remembering custom feed names.

  • Fixed shadows of the categories in the New Feed section.

I’m going to make this a habit: post a monthly summary at the beginning of each month so changes to app can be clearly tracked and if we missed out anything, we can go back and look at these logs to figure things out.

There are a few new repos I’d like to mention here:

  • Localisations All the translation files used by Elytra. If you find a mistake in a translation, please feel free to submit a correction there. You can also add a new language that you’re comfortable translating to. The contents of that repo use a permissive license, so other developers can also use translations that fit their apps from there.

  • IssueTracker The Issue Tracker is a public repo for tracking bugs and feature requests. If you have one, please open an issue there with the correct type so other users with similar requests can also chime in.

Thank you for reading, have a safe and cheerful day.

v1.4 Fall 2019 Update

Left: Articles List. Center: Folder List. Right: Article Reader.

Dark Mode. Left: Articles List. Center: Folder View. Right: Article Reader.

iPad: Article Reader. iPhone: Feed's Articles List.

Dark Mode. iPad: Article Reader. iPhone: Feed's Articles List.

Fall/Autumn is here and this brings a new update for Elytra with iOS 13 compatibility. Given how the last two updates worked out, seasonal updates with one-time bug fixes updates is working out well, so I’ll be sticking to this schedule.

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.

Now, for the change log:

What’s New

  • Full iOS 13 Compatibility.
  • Native Dark Mode support.
  • Most icons used in the app now use SF Symbols (by Apple).
  • The Reader theme now has a Dark counterpart as well.
  • Pop Menus have been repleaced by Context Menus which are new to iOS 13. Long Press/3D Press on Feeds or Articles to bring up the context menus.
  • New Font: Open Dyslexic. This font is well suited for Dyslexic readers. I personally switch between this and the System font choice.
  • Recommendations now shows a list of “Similar” feeds. Similar feeds are RSS Feeds which are followed by a user who follows at-least one RSS Feed which you follow too.

Improvements

  • Improved networking with support for better caching mechanisms.
  • Improved state restoration performance on iPhone 6S and 7.
  • Since v1.1, Elytra would render only sections of the article at a time. In iOS 13, the scroll bar is now draggable, and Elytra’s behavior would break this interaction. v1.4 will now render all text in an article without any memory overhead.
  • Tapping on theme no longer reloads it.
  • Improved the Gamma point for the Reader theme making it easier to read in darker environments (when not using the system dark mode).
  • improved Voice Over support for Ordered Lists & Unordered Lists.
  • Account deactivation is now handled directly through the API. This no longer requires you to send an email to deactivate the account which further ensures your privacy.
  • Improved how Feed Renaming is handled by the app to ensure updates are immediately processed on screen.
  • Enclosures are now added to the article viewer more reliably. Some articles may contain multiple images as enclosures which will be rendered as a Gallery.

Fixes

  • fixed a crash that would occur when loading Youtube videos. Youtube has changed the API response which caused the crash. The new method is resilient to all such future API changes.
  • fixed a state in the Article reader when using the toolbar where the previous and next article buttons would not update their states.
  • fixed the height of Tweets embedded in articles. When no images are present in the tweet, the Tweet context adjusts to account for this.
  • fixed the copy behavior when highlighting text and then tapping on copy. This used a custom implementation since iOS 12.1.4 and I’ve finally found the issue and fixed it. Took over a year ¯\_(ツ)_/¯.
  • fixed the odd behaviour when lauching the app on an iPad would not show the sidebar. This required a custom implementation in iOS 12 to make it work correctly but is no longer needed for iOS 13.
  • fixed sharing of URLs from articles after long tapping on the URL to bring up the Share Sheet.
  • fixed enclsoure images sometimes appearing twice in the feed. This may still happen in some articles (the same image will appear twice because they have different URLs).
  • fixed handling of nested italic and bold descriptors. Previously, only one of the two would be used (latest taking the priority).

Elytra November Update

Happy Holidays! October has been a great month for Elytra on multiple fronts:

  1. The app’s first few subscriptions kicked in after the 14-day free trial periods. Many of you’ll sent me emails regarding the pricing, some left App Store Reviews (being able to respond to them is a great feature) raising their concerns. I have been able to take action on this. I’ll talk more about this in a bit.
  2. October brought in a bunch of bug fix releases for the app, while I continued to work on new features and improving the general stability of the app.
  3. I managed to acquire some new Beta Testers who have been really good with giving me feedback on new features. I’d like to work out a way wherein with their explicit permission — include their names in the credits section.
  4. There is a now a subreddit for Elytra if you want to discuss, propose new features or just have a public discussion related to the app.

What’s New

Let’s begin with all the new features and improvements in v1.1.0:

Folder Feeds

Folder Feeds in Elytra v.1.1.

I probably have 14–15 emails in my inbox requesting Folder Feeds. Honestly, I had never considered this. I worked with a couple of them to get the correct implementation of it. I’m very happy with how it turned out. This makes a minor change to how folders work in the Feeds’ Interface:

  1. The previous interaction of tapping on the Folder row now opens the Folder’s Feed.
  2. To expand or collapse the Folder: tap on the folder icon.

Sorting Options

New Sorting Options in Elytra v.1.1

The second most requested feature was being able to sort the feeds in ascending order: oldest articles first. While it sounds relatively simple (and it is, if all the data was locally available on the device), this turned out to be a slightly complicated transaction on the sync server. A single user requesting this information was fine but when I simulated it with at least 100 simultaneous such requests, things quickly broke down. By changing how a few things work on the sync server, I was able to heavily optimize this and also include the ability to only fetch Unread articles for that feed in any sorting order. This is great when you’re going through a large feed and only wish to read unread articles.

Type Improvements

Type Improvements for larger accessiblity sizes in Elytra v1.1

I’ve always invested a lot of time optimising and tuning the Type rendering in the app. I recently found some sections I accidentally ignored with the Accessibility Type settings. The app now respects these settings correctly and ensures you get the optimal reading experience. This is also the precursor to the improved layout engine which is scheduled for the next release.

Corrected Bold Text implementation in Elytra v.1.1

I’ve also taken this opportunity to improve support for the Bold Text setting. The app now respects this setting correctly throughout the app with a sole exception: In the Article reader, when using the Georgia or Merriweather font — these fonts do not offer the correct font-weight used to render text with this setting. The app falls back to using the bold font-weight. If this is not desired, I will recommend using an alternate font.

Image Loading

New Image Proxy options under the Image Loading Preferences in Elytra v.1.1

This version brings a big improvement to how images are loaded. Thanks to images.weserv.nl, an Image Proxy is now available for loading images over a CDN. This is optional and is disabled by default. Some problems we face when loading images:

  1. Most blogs do not provide multiple image options depending on the size of the device.
  2. Some blogs embed massive images which aren’t an issue for Desktop class browsers, but heavily strain memory, battery and RAM on mobile devices.
  3. Some blogs, due to various constraints, cant serve images over a CDN or a fast network which degrades performance for us. By using an Image Proxy, Elytra can work around these problems by:
  4. Based on your Bandwidth and Sizing preferences: load an image of the optimal quality.
  5. Based on your current device’s size: load an image of the optimal width or height.
  6. Utilize the CDN being used by the proxy to download the images from the nearest node. Technical Note: The quality parameter is affected by your image sizing preference, the current device, if you’re using an iPad — the size of the app if being used in multi-tasking mode and the current network type. A combined score is generated whenever any of these parameters change and the new score is used to determine the quality parameter. In my non-scientific testing, I observed significant bandwidth savings, improvements to the energy consumption graphs for the app as well as memory savings since the app now loads significantly smaller images while offering the same visual quality you’re expecting. This also saves some CPU cycles by preventing your device from having to downscale images. Without WeServ’s Free Image Proxy, this would not be possible.

Extended Layout

Extended Layout on iPad Pro utilising the real estate on the device more efficiently.

After realising that I am not optimally utilising all the available real estate on iPads, I worked on the Extended Layout for iPads (this is also available on iPhones but is disabled by default). This brings two critical improvements to the iPad app:

  1. All Feed Interfaces (Unread, Bookmarks, Feeds and Folder Feeds) now get a two column layout for article lists provided enough width is available. This interface can also now be extended to use the full screen which seamlessly transitions into the Article Reader interface.
  2. This brings preliminary support for changing the active theme for the app while reading an article, although it is still more taps away than necessary. I plan to improve this in the next release. This was deferred for this release as it heavily relies on the Layout Engine improvements I am working on right now.

Apart from the above new features I have also fixed a bunch of bugs, improved VoiceOver support where ever it was broken, and continue to work towards beginning to localize the app. You can find the finer details in the Release Notes on the App Store.

Subscriptions

I mentioned earlier about a lot of users voicing their concerns over the Subscriptions’ pricing and the lack of a One-Time purchase. With the thought of reducing the pricing lingering in my mind, I was unable to justify it with my current infrastructure costs. I recently ran into this announcement from AWS (I probably missed it because I was preparing for Elytra’s launch at the time). After exploring my options, I determined that it is a definitive upgrade for me while lowering my server costs, the benefits of which I am able to pass on to you. With immediate effect:

  1. All subscription prices have been dropped by 1 Tier. This is effectively a 1/3rd reduction in the cost of the subscriptions.
  2. Anyone who has purchased a subscription prior to the release of v.1.1 will be automatically provided with extra days (or months if you purchased the annual subscription) on their current subscription. No extra action should be necessary from you. If this isn’t immediately reflected, restoring your purchases will update this.
  3. All new subscriptions will be available at the new reduced pricing.
  4. An additional Life-Time purchase is also available. This will include all future updates, improvements, dedicated support and a round of your favorite beverage on me when you’re in my town or I am in yours!

My goal with Elytra was to make reading on iOS devices accessible to as many people as I can reach. With your constant feedback, criticism and kind words, I have been able to continuously improve the app. I will be taking a short break from all development work and spending time with my friends and family over the Holidays. I will try my best to reply to your emails in a timely manner and frequent the new Elytra subreddit as often as I can. Cheers!

You can find the discussion around this post on here.

Hello, App Store

Elytra 1.0.0 is now generally available on the App Store. There’s also a shiny new website

From having of the most volatile, overwhelming pre-releases announced on Twitter, to getting some really cool, critical, and supportive Beta Testers, to the Subscriptions rejection a few weeks earlier, my journey with Elytra has been an absolute roller coaster.

When I started working on Elytra back in November I had no idea what to expect. I was very surprised that people really yearned for a new RSS Reader option. The responses on Twitter only made by presumptions more concrete: I want this. A lot of people want this. This needs to be on the App Store. 

There a lot of changes between the last Public Beta build and the App Store version. I wont go into too much detail here, but rest assured, it’s a more stable app. It isn’t completely stable though which is why I have version 1.0.1 ready to go for Review as soon as 1.0.0 is released. 

During the Public Beta, people sent me a lot of emails with feature requests, ideas and suggestions to make Elytra a better app, a better product. I’ve been communicating with a lot of people back and forth to evaluate and solidify these ideas and I am very excited to start working on those. 

As always, please feel free to email me or tweet/toot at me with ideas, questions or just stop by to say hi. 

App Status Update

TL;DR: Please copy your Account ID and keep it safe somewhere (Notes.app or whatever else you may be using for keeping notes). When the app launches on the App Store, if you wish to retain your account, you can use the same Account ID to get access to your feeds again. If you want to be re-inducted into the Public Beta, please send me an email stating so.


Elytra went through a second round of App Store Review following an appeal and it got rejected again. As I noted in my previous post (You can read it here), if that ended up happening, I’ll have to take some drastic steps. 

Since I cannot transfer an app which uses iCloud in any way, I had to recreate Elytra on my new Developer ID. 

Test Flight

With this change, I ended up with two identical apps on my phone. This is fine for me, however, the ramifications of this are big if you are part of the Beta Testing groups. 

The former Developer account expires tomorrow which will remove Elytra from Test Flight (renamed to YetiReader so I can continue using Elytra on the new account). If you wish to continue being a part of the Public Beta group, please send me an email through Test Flight or direct at: info@dezinezync.com and mention your Test Flight Email ID.

A good thing to come out of this situation: I have a much much better build which I’ll be shipping as 1.0.0. I’ve added multiple fixes, improvements and UI polish which was lacking from the latest build currently available. 

I am not sure if the Test Flight build will continue to work once the former account expires. I know the build will no longer be available, but I am not sure if it’ll continue to work.

App Store

I believe I have a better idea as to why Elytra was rejected from using Auto Renewing Subscriptions. It’s just a guess at this point. I’ll be submitting the new build from the new account on Monday with all the new changes and improvements. I’m getting everything in order over the weekend. 

Hoping everything goes well this time round. If you no longer wish to be a part Public Beta, you don’t need to do anything. If you wish to continue using Elytra when it releases on the App Store, I strongly recommend you copy your Account ID to somewhere safe like Notes.app or whatever else you may be using. 

Thank you for sticking by me and keeping me motivated.