Elytra Blog

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

Elytra 2.0.3 is now available

Hot off the tracks of v2.0.2 comes v2.0.3 with a couple of more fixes. All known issues in Elytra’s v2 are now fixed and patched. If any additional issues are reported, those will be addressed in v2.1.0 unless they prevent the app from functioning.

Improvements

Improved Swift and SwiftUI Syntax Highlighting
Improved Swift and SwiftUI Syntax Highlighting

Improved Swift & SwiftUI syntax highlighting in code blocks.

Fixes

  • Fixed an issue where selecting the “Only load on Wi-Fi” image bandwidth setting did not persist correctly.

  • Fixed an issue where selecting the “Low Res” image resolution setting did not persist correctly.

  • Fixed a bug where toggling dark mode (or already present) did not correctly set the colours for the filters’ input.

  • Fixed an issue where the Image Viewer would not display the image at full resolution once it is loaded.

  • Fixed an issue where the OPML Interface would launch with the base tint on the button backgrounds and then update to your preferred tint.

  • Fixed an issue where semantic colours would not load correctly on iOS 14.0.1 for your selected tint colour.

  • Fixed a crash that would occur when bootstrapping the local cache database.

  • Fixed a crash that would occur when saving restoration data.

  • Fixed an issue where images in articles would be scaled incorrectly when using the image proxy.

  • Fixed a bug where tapping on the Attributions item in the Settings interface would crash the app.

  • Fixed a crash that would occur when decoding certain HTML encodings. (16-bit decoding is hard, y’all!)

Link: https://apps.apple.com/us/app/elytra/id1433266971

New Elytra Landing Page

Elytra’s first website was made in the fall of 2017. It was extremely basic, gave the requiste information to the reader and a link to sign up for the TestFlight beta ( TestFlight Links were not a thing back then).

With the release of v1.0, I updated to an improved layout, more details and screenshots. I kept updating the screenshots up to the release of v1.4 and then completely forgot about it (this did lead to some confusion).

New Website

With the release of v2.0, it was time to update it, however, with the rushed release of iOS 14, I didn’t get enough time to complete it.

Today, I just launched the updated website. Check it out here.

Elytra's New Landing Page - Hero
Elytra's New Landing Page - Design

I have simplified the website by much, reduced as many interaction points as possible to ensure the reader can quickly get an idea of the app, and proceed to viewing further details on the App Store.

For the main navigation in the header, I used a simple <details> block with <nav> as its detail block. Accessible, simple, and known interaction.

Almost all images are optimised for retina screens as well as for various breakpoints at varying sizes.

One critical section I thought I must add was about Privacy.

Elytra's New Landing Page - Privacy

With Apple’s strong focus on Privacy, and a wonderful marketing page to go with it, I thought it would only compliment their message and my committment towards ensuring the same as a 3rd party developer on their platform.

Additional Enhancements

Some additional enhancements I’d like to make sooner than later:

  • I would like to make some tweaks to the font sizes of headers based on the device width metric, but I found it not to be a blocker, and release it as is.

  • Add sRGB and P3 specific images to the sources. When viewing the website on my Macbook Pro, the colours are evidently faded. Since I do have source images in the P3 format, I should be able easily do this.

  • Additional hints for a11y.

Noticeably Missing

Dark/Light mode. The previous website support this, however, for this time around I decided to go with a static colour scheme to suite the various bands I am using on the page as decorative backgrounds for the device images.

This darker colour scheme also strongly compliments the beautiful imagery one experiences when using Elytra with various Photography and Art & Design blogs.

If you have any suggestions for improvements or noticed a bug, do let me know.

As always, happy reading.

Elytra 2.0.2 is now available

Elytra 2.0.2 (38) is now available on the App Store. This build includes some critical fixes and an update is recommended.

Fixes

  • Fixes a rotation bug on iPads.

  • Fixes an article scaling bug on iPads when toggling the sidebar.

  • Changing the selected tint colour now applies correctly throughout the app.

  • Fixed the app not loading the selected tint colour on launch.

  • Fixed an issue when searching for a feed by title or keywords would dismiss the modal.

  • Fixed an issue with pagination when searching for feeds in the Add New Feed interface.

  • Fixed an issue where the App would show a “No Subscription Found” error after resetting or deactivating your account.

  • Fixed an issue where an interrupted on-boarding would prevent you from using the app without purchasing a subscription. This now ensures you are always able to start your free trial if your onboarding was interrupted.

  • If you’re currently enrolled in the Free Trial, the subscriptions interface will now correctly indicate that.

  • Some blog engines convert emojis to an image with the emoji as the alt text on the image. Elytra will now skip rendering the image and appropriately render the emoji used by the author in the same context as the original blog post. This prevents the paragraph breaking on to the next line to accommodate the custom emoji image the blog engine inserts.

  • Fixes an issue with sorting of Feeds. Feeds which are not inside any folder are now correctly sorted in ascending alphabetical order. Thank you Jason, for pointing this out.

  • iPads in Portrait mode now correctly hide the sidebar upon tapping an article.

Link: https://apps.apple.com/us/app/elytra/id1433266971

2.0.1 is now available. Update Recommended.

Version 2.0.1 (31) should now be processing for the App Store and should become available shortly. I run into a small hiccup with the Review Process causing a small delay with the release.

This release mostly contains fixes for a few crashing bugs and it’s highly recommended, if you’re running iOS 14 now, that you update to this release.

Fixes

  • Various fixes for adding new feeds.

  • Fixed applying selected tint colours globally.

  • Deleting a feed (which is inside a folder) no longer collapses the folder.

  • Fixes a crash on opening the Notifications Interface if you have 0 subscriptions.

  • Fixes a crash on adding a feed from the Share Extension

There are some minor issues I am aware of. I’ll post another release next week to address those.

In the mean time, happy reading.

Link: https://apps.apple.com/us/app/elytra/id1433266971

Elytra Fall 2020 Update

Elytra’s Fall 2020 update is finally here alongside the release of iOS 14. This is v2.0 and will be the first build to only support iOS 14. If you’re still on iOS 13 and for whatever reason you won’t be updating to iOS 14 soon, rest assured, v1.8 will continue to function as long as you use it.

You can download the update from the App Store

Upcoming Devices

Elytra running on 4th Generation iPad Air

Apple will be releasing new hardware later in October starting with the recently announced new iPad Air 4th Generation devices. Elytra will be ready on day-1 when these devices reach you with no new updates required.

iOS 14 UI

Elytra running on the iPad Pro and on the iPhone 11 Pro showing new User Interface elements from iOS 14

Throughout the app, I’ve made changes to the app’s interface to closely follow new updates Apple has released this year, including menus from buttons (for the sorting option), new Sidebar Layout style on the iPad, Triple Column Layout on the iPad and new List styles.

New Code Theme

The new code theme in Elytra 2.0

Also in this release, I’ve included a new Code theme which uses the semantic colours from iOS, auto-updates for dark mode without reloading the entire stack and, may I say so myself, looks beautiful. You can read more about in this blog post I wrote earlier.

Widgets

How could an iOS 14 release build be complete without new Widgets! I’ve personally been looking forward to using Widgets and making them was fun too! Elytra 2.0 ships with 2 different widgets:

  • Counters Widget: Shows the latest counts of articles from Unread, Today and Bookmarks sections of the app. This widget is only available in the small size.

  • Unread: Shows the latest articles from the unread section. The medium size widget shows 2 articles and the large size widget will show 4 articles. This widget will prioritize articles with cover images.

Full Change Log

What’s New

  • All new triple column support using Apple’s own UI Framework.

  • An all new Sidebar Interface. This uses Apple’s latest UI Framework for displaying your folders and feeds.

  • iOS 14 Widgets support. Contains a Counters (Small) Widget and an Unread Articles (medium and large) widget.

  • Implements Trailing Swipe actions on Article List Items.

  • Directional marking as read. Long press on an article in Unread, Today or a Feed to see these options.

  • New Code Theme for pre-formatted code blocks.

  • The Add Feed interface now shows Recommendations for its default state to help improve finding and adding new feeds.

Improvements

  • Unread counts update more reliably as you read through your content.

  • Improved underlying code for managing the initial state of the app.

  • Force touch and tapping on urls now works reliably.

  • Updated Feed Sorting options to use a menu interface instead of an options controller.

  • Improved styling for inline code blocks.

  • New Folder/Edit Folder interface now uses a basic interface which is faster to use IMO.

Fixes

  • Prevents an issue causing the app to sync data twice upon successfully launching.

  • Fixes an issue where marking currently loaded articles as read in the Unread view would prevent new articles from loading.

  • If you have setup a custom title for a Feed, the custom title will now show up correctly for the empty state.

  • Fixed a crash caused when trying to share a Feed’s URL or its website’s URL.

  • Fixed an issue where reading an article from today would not decrement the “Unread Today” counter.

  • Fixes showing cover images inside the Article Reader.

  • Fixed I/O View not appearing when importing / exporting OPML files.

  • Fixed some pre-formatted quotes appearing as single-line code blocks.

  • Fixed code blocks appearing out of order. A year old bug finally fixed!

This update also includes miscellaneous improvements and fixes under the hood to improve the general stability of the app.

As recently put by one of Elytra’s admirers on twitter:

Read more, distract less. #letsgo

Hardik Parmar

June 2020 Web Service Update

I’m starting a new series of posts detailing changes I release to the Web Service. The Web Service is responsible for syncing your account across your devices and browsers. It also caches new articles so you only fetch information from sources that have changed since the last sync. 

  • I keep getting error reports from the Web Service in a unified private channel on Elytra’s Slack group. I use these reports to patch bugs as soon and as quickly as I can. 
  • Yesterday, I received some errors regarding adding feeds using the ftr.freshangle.net service. This is the first I had heard about so I quickly investigated and found some issues in Elytra’s code that prevented these feeds from being processed. The ftr.freshangle.net service now has first class support in Elytra for both the XML and JSON feed endpoints. 
  • There was a major sync bug in Elytra’s code both on the Web Service and iOS App. I released v1.7.4 on iOS to patch this issue and patched the Web Service as well. By morning of 4th June, these errors dropped down to just 12% compared to the day before it. As soon as all users update to the latest version of the iOS App, this should drop down to 0%. If you still haven’t updated, check the App Store for updates. 
  • On 2nd June, we faced an interruptions and eventually an outage from our service provider which caused Elytra’s first ever downtime this year. Things eventually began recovering by 03:30AM IST on the 3rd of June. Everything is now stable. This outage resulted in some angry customers and I completely understand that. If you ever face any issues with the App or Service, always feel free to contact me at support@elytra.app

On a separate note, a White Hat Hacker recently got in touch with me regarding a critical issue with the API Service. I have since patched the issue. No data was affected as the core issue had to do with DNS setup for emails sent from Elytra’s domain. 

That’s it for this update. Happy Reading! 

Elytra Web is now in Public Beta

Elytra Web in Safari with Article open.

Elytra for web is now in public beta and in this post I’ll document some features and quirks of the webapp. You can start using it right away.

When I set out to build the Web App, I wanted to bring as much functionality of the iOS App as possible, and this proved to the tricky. Since version 1 of the app, the Article Reader never used HTML to render the contents. Everything was drawn native to bring native accessiblity functions and remove privacy-sucking scripts from the entire reading experience.

To do the same on the web with the same data was a tad bit challenging, but not impossible.

Elytra Web in Safari with Article open. Some features are notably missing at the moment like:

  • Viewing and reading your bookmarks
  • Searching Feeds
  • Synced settings

to name a few. I’ll be adding these over the next couple of days and I hope to align the final release of the Web App along with v1.8 of the iOS App.

Elytra Web in Safari with Article open. Just like the iOS App, you can also view your Youtube feeds in the Web App. This has become the de-facto way of me and some hard critics of Elytra to consume the latest content from their favourite Youtube Creators.

Elytra Web in Safari with Article open. Microblog Feeds also get first-class treatment on the Web App just like the iOS App. I am a supporter of what Micro.blog stands for and try to actively use it as time permits. My main website is basically a hosted Micro.blog.

Elytra Web in Safari with Article open with a seaprate window open with a podcast playing. I am really exicted to talk about this feature. I’ve always wanted to listen to podcats in Elytra on iOS but I believe it deserves its own separate app so it does not come in the way of reading content. But things are different on the web. Browsers can host multiple tabs for the same domain. So now on the web, you can open any article in it’s own tab and continue reading another article in the main window. I personally use this to play a podcast in the background while I work or read other articles. I’d love to hear from you how you use this feature.

As some of you may have noticed, I have used the New York font in one of the screenshots. If you have the font installed on your macOS systems, you will be able to use in the App as well. The app does not host the font itself because of its License, but can use it if you have it installed.

We now also have a Slack Group for discussions around the iOS and iOS app and soon the macOS App as well. I’d love to see you there and join in on the discussion.

It’s been a tremendous journey for Elytra since its inception back in 2016 and it’s public launch in 2018. As an Indie Developer, I’d really appreciate it if you shared this post with your friends who may be looking for an RSS Feed Reader on the web. As this is a public beta, everybody is welcome. And as always, you can send support queries to support@elytra.app or DM me on Twitter. Happy Reading.

A lot of Unread Articles

If you launch the app or open the web app (if you have access) and notice a sudden surge of unread articles waiting for you, I can explain.

Traditionally, to check if an article is unique and new, I checked its GUID which the feed provides and checked if it already exists in Elytra’s database. This works fine if there is only one source for an RSS feed. It breaks when there are multiple sources for a single website. This happens when say I subscribe to a Website’s XML Feed and someone else subscribes to its JSON Feed. Both sources are valid, but both bring in articles with the same content and GUID. So the articles would map only to the first feed. The second feed would never get new articles. 

To solve this problem, I just updated my unique constraint to also use the Feed’s unique ID. The new unique pair constraint of GUID-FeedID works for all feeds from a single website, irrespective of which source the user subscribes too. 

This caused a huge surge in unread articles for all users. I do apologise for having overlooked this issue, but on the bright side: We all have a bunch of articles to read over the weekend which we missed out on, no thanks to me. 

TestFlight Changes

I’ve been contemplating on this decision for a while now and I think it’s finally time to implement a major breaking change in Elytra’s TestFlight policy. All future releases of Elytra on TestFlight will require you to have an active and valid subscription. 

Since before v1.0, all testers using Elytra through TestFlight bypassed all subscription checks. This is generally what is expected. However, some people are using this to bypass subscriptions entirely. 

This however doesn’t mean all testers will be affected. I know those who actively share feedback, crash reports and communicate with me. I’ll maintain your subscriptions for free for as long as you wish to be on TestFlight program. Everyone else getting started can use the free trail and as required contact me for a a bump in your subscription expiry dates. 

Summer 2020 Update

The Summer 2020 update is here. 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 the full change log:

New

  • Support for Mouse/Pointer Interactions on iPadOS 13.4.
  • New Custom Feed: Today. All articles from the day, read and unread. Sort by your own preference.
  • Now add Youtube Channel RSS Feeds directly from the Share Extension.
  • Article Reader Customisation: You can now customise your reading experience based on your personal preferences. Set line heights, font sizes and individual fonts for paragraphs and headings.

Improvements

  • Improvements for handling Youtube URLs inside the app when adding a new channel feed.
  • Push Notifications will now show richer previews if you open them in context.
  • Show refresh control animation when the app loads and is loading Feeds data from the API.
  • GIFs will now show the first frame if the Image Proxy is enabled.

Fixes

  • Fixed incorrect paragraph line-spacing calculation with the selected value for font size.
  • Fixed an issue where opening a push notification on iPads would open them in the primary column.
  • When you tap on a push notification while another article is open from a Feed, the Feed now correctly deselects the active article.
  • When you tap on a push notification, the app sets up correctly on the iPad. If you tap on a Feed after this, it no longer dismisses the previously opened Article.
  • Fixed a crash when creating a new Folder for the first time.
  • Fixed GIF playback.
  • Fixed an issue where an article would remain marked as Read even after opening it.
  • Fixed font sizes for the Feed description on iPads.
  • Fixed a type bug on the iPad where the font sizes were comically large for titles.