Elytra Blog

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

Summer 2019 Update

The summer is here (monsoons, for us lucky folks in India) and this brings a new update for Elytra. 

Visually, this isn’t a very big update but I have been able to improve a couple of a things in this release which is detailed below:



Using the newer longer iPhones becomes a task when handling them with a single hand, especially the iPhone XR and the iPhone XS Max. I personally run into a lot of issues with my iPhone X. These are big devices and reaching actions at the top in the navigation bar becomes a task by itself. So a new option has been introduced in Elytra v1.3 which enables you to bring all of these actions in the toolbar towards the bottom of the screen.

 Toolbars on the iPhone XS across various primary interfaces in Elytra.

Toolbars on the primary interfaces on the iPad Pro 11 inches and 12.9 inches

Some actions like sharing an article or opening it in the browser are still left to be in the navigation bar. I hope to enable y’all to determine which actions appear in the toolbar and which appear in the navigation bar in a future release. 


In v1.2 of Elytra, I publicly released the new Extended Layout which was supposed to improve compatibility on iPads and be able to extend the layout to two columns of articles. This was achieved using Collection Views. This introduced a unique problem for me where swipe actions was no longer directly feasible. To address this shortcoming of the app, I’m introducing menus in this release. They bring shortcuts to the Articles interface in Elytra making accessing common actions a little more accessible. 

Menu support on the iPad Pro 12.9 inches and iPhone XS


Faster Rendering

I’ve reworked certain sections of the Article renderer so I can add more supported sections to the article reader in the future. But the immediate effect of this is improve rendering speeds on older devices like the iPhone 6 and 6S. The performance improvements are huge when compared to the v1.2 builds but don’t take my word for it, if you try it on any of these devices, let me know your experience. You can email me or send me a tweet on twitter.

Another advantage of this change is to bring change logs to the article viewer. I’m working on enabling this so that changes made to an article can be visible so you can see corrections, updates and deletions if you’re interested in that sort of a thing. 

Improved Networking

I’ve reworked certain sections of the app to improve networking with Elytra’s sync server. This change is extremely opaque to users but what it does is avoid fetching information it does not need at all. This reduces the amount of data transferred from the sync server and helps save on bandwidth. 

Improved Image Rendering

If you start to notice more vibrant images in articles, you got to thank the improvements UIKit Engineers @ Apple have made in iOS 12. As this will be the last version that will support iOS 11 (iOS 13 Betas are either already out or will be out soon), I thought this would be a good opportunity to improve on this. Any images hosted and served by blogs which support the DCI-P3 colour space are now resized according to your specifications while preserving all of that extra colour information. 


I am very glad to report that v1.2.3 was a very stable build. It reported, for the first time, 0 crashes which is a huge achievement for me and the app. So I have nothing to report here. 

Closing Notes

I hope you like this build. I am working on adding a few more smaller improvements and changes through the v1.3 pipeline. Have a great summer and if you’re an iOS or macOS Developer, have a great WWDC! 

Marked Read

In the v1.2 release of Elytra, a few users of Elytra started to report unusual behaviour in the app when marking multiple articles as read especially with the backdated articles setting. 

This was caused due to an issue with the API of Elytra which behaved unexpectedly due to a misconfiguration in the iOS App. Today’s release corrects this behaviour and now works as expected. 

This release also contains a fix which works around a bug in iOS 12.1.x where trying to copying rich text from the Article Interface could crash the app. So at the moment, copying rich text wont work as expected and will default to plain text in most cases. 

I’m trying to isolate the issue on my end as far as possible so I can report this to Apple Engineers if necessary. 

I have also been keeping a close eye on crashes and issues you may be facing. I’m happy to report that over the last one month, App Store Connect has reported zero crashes with a healthy usage increase. This is a huge milestone for Elytra and has been possible only because of all the wonderful and helpful people who have patiently worked with me to get these fixed. 

I’ll detail my summer plans for Elytra in a separate blog post. As of now, Elytra’s v1.3 is shaping up to be a really cool release and I cannot wait to share more details with all of y’all. 

The Spring Update

Elytra’s Spring update has been available for a while on the App Store, but due to personal reasons and prior commitments, I was unable to write this post. So let’s get down to it. 

To celebrate the Spring Update, I also took the opportunity to update the main website as well. I’ll be making a couple of tweaks to it to fix some responsive design issues, but apart from that, I hope you like it. I also tried making the Privacy aspect of Elytra and the pricing structure (thanks to the wonderful people behind Capsicum app for the inspiration) a bit more clear and upfront. 

Version 1.2 has by far been the most involved update I have worked on for any app. On the surface, not a whole lot has changed, but under the User Interface, significant changes have been made to improve rendering times for the Article Viewer, networking, continuous efforts to reduce power and network bandwidth consumption and a whole lot more. 

As for the changes directly noticeable, let’s go through them. 

What’s New

In v1.2, I tried to make finding blogs that match your interests a little simpler. Once again, I did not want to implement a “My interests” based system where Elytra harvests this data and recommends blogs to you. As I noted in my previous post, Improving Discoverability, I harnessed data already available to Elytra to help you find new blogs. You can read all the details in that post. 

The Add Feed Interface now also enables you to search for Feeds that match the Feed's Title or keywords to your text queries.

To further improve upon the same system, adding a new feed now expands to three separate sections: 

  1. The traditional: add by entering a link method. 
  2. Searching by the title of the blog.
  3. Searching by keywords associated with the blog. 

All the information above is made publicly available to Elytra and blogs can change this information anytime. Elytra does not add any information to this so all results you see are Best Match only. 

Apart from this, the Extended Feed Format is now default and the older list format has been removed from the app completely. The newer design and layout can accommodate a lot more information and a variety of settings to show and hide that information with better compatibility. I highly recommend you check out the Miscellaneous section under the App’s Settings for all possible options. 

What’s Improved

Apart from what I mentioned earlier in the post, there aren’t a whole lot of improvements in the app that are visible. Most changes have occurred “under the hood” to improve performance and stability of the app. 

Apart from all the new things and improvements, I was able to fix a lot of bugs from v1.0 and v1.1. As of right now, Elytra has no crashing bugs that I am aware of. This brings it to a level of stability that gives me free time to build other cool stuff for Elytra.

I have one more patch update Waiting for Review in the App Store which will bring the highly requested Reader and Flutter (flatter, but wings, so flutter) App Icon options for you to choose from, so I hope you like them. 

Closing Notes

After the release of v1.2.2, if any bugs come up, I’ll be patching and fixing them in v1.2.3. But if nothing comes up, I’ll commence work on a few other related projects and v1.3 in March. As always, I really appreciate the wonderful reviews y’all write on the App Store and I enjoy reading your emails, so please keep ‘em coming. Cheers.

Overwhelming Unread Articles

Colin Devroe writing on his blog,

When people subscribe to more than just a few sites it quickly can be overwhelming to people that don’t like to wake up to “inboxes” with 300 unread count. People just abandon those. It is why Twitter, Facebook, Instagram, etc. all use algorithms to select which content people should see when they open the app.

He also goes on to give his personal preference of having all articles listed in reverse chronological order. So do I. But do you wish Elytra surfaced things a little differently?

We should likely stop talking about RSS. We need to simply start calling RSS “Subscribing”. “Subscribe to my blog” is the only thing we need to say.

Yes, this change needs to happen. Lets make it happen.

Mean while, I’ll be in my corner finishing v1.2 of Elytra.

Happy Holidays

Happy Holidays.

Just a quick note: All Elytra Subscriptions are currently available at discounted prices from Monday, 24th of December through Friday, 28th of December

You can extend your active subscription at these prices, renew an expired one or gift it to your friends and family. 


Improving Discoverability

Finding interesting content to read online has always been easy. Run to your nearest Subreddit Stand or Twitter Board and you’ll find yourself bombarded with a lot of information. What you wanted are topics you’re interested in. So you spend time talking to people and finding new sources. And when you do, you add its RSS Feed to your favorite Reader, like Elytra.

There is scope for improvement here. A lot of social networking services use Graphs to determine what you may want to read. That’s cool (it is, I’m completely fascinated by it) but it involves opening up your reading habits, requiring and storing your personal info, syncing your contacts so the service and find your friends and see what they are reading. It all adds to up to being a very invasive technique.

My Proposal & Implementation

I queried up the blogs in Elytra (over 9000 of them, wow!) and I was happy to see that the majority of them provide tags/categories information through the RSS Feed 1. So I decided to use this information to bring these topics of interest to you from blogs you already follow.

Tags in Unread & Blog Feeds

I’m still exploring this direction but I believe this will open up a lot of possibilities for you to discover new blogs, authors and topics of interest. This information is already made available to Elytra by the blogs and as it does not rely on your information, we successfully keep things private as usual.

I’d love to hear your thoughts on this so head over to the Reddit discussion here.

1. If you run a blog which does not expose this information through its RSS Feed, you should definitely consider adding those.

Elytra December Update

In this post, I wanted to quickly write down a couple of notes for you to read at your leisure. 

  • There is no release scheduled for this month however I am working on a fix release scheduled for next week to fix a couple of bugs reported by one of the newest users of Elytra. Thank you, Tim! 
  • The next big release is scheduled for after 15th of January 2019.
  • I am continuing to improve the API for Elytra which powers the sync services, automated account creation, OPML imports as well a lot of the real time logic which brings push notifications from certain blogs. 

Real Time Updates

The last point from the above list has kept me wondering, how can I improve the situation where publishers can ping Elytra’s API to notify it about new posts. 

After looking in to how WordPress operates, the answer was obvious: RPC Pings. Starting today, if your blog runs on WordPress, you can add the following URL: https://api.elytra.app/rpc-ping under > WordPress Blog’s Settings > Writing > Update Services. 

That’s all you have to do. This won’t immediately enable your readers to receive real-time push notifications for your blog, but it’ll enable the sync service to immediately fetch new posts. I’ll be working on bringing push notifications to your readers in the coming week. Once that is enabled, the API will no longer periodically poll your Blog’s RSS feed and will solely rely on this mechanism. If you can configure the above setting, I highly recommend that you do. 


I have been tweaking how recommendations are selected, over the last week and I am pretty happy with the results now. Currently, the recommendations are purely based on anonymous statistics which detail which articles were read the most eventually surfacing the Feeds they belong to. In the coming few weeks, this will change to using a combination of anonymous statistics to further randomise and give better recommendations. 

The new system will also remove feeds you are subscribed to so that the recommendations become true recommendations for you instead of a generic “Whats Hot!” list.

Data & Statistics

The core of the Recommendations section has been this anonymous data collected directly on the server based on the articles you read. Since this data is in no way tied to any user account and it reveals a lot of information which publishers may find useful. Early next year, I plan to release a dashboard for Publishers to view this data. Just like the iOS app, the dashboard website will have a private and then a public beta. The final release will be available at nominal fee of $1/month for subscribing publishers. 

Your personal data is never collected by Elytra and as such no information about you can be included in the above stats. If you’re a publisher and would like to be included in the Private Beta, give me a shoutout on Twitter or DM me. 

Closing Notes

I have nothing more to write, so I’ll leave you with my best wishes for the Holidays. Cheers. 

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.


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.

New Servers and Scheduled Downtime (October)

New Servers

I’ve just finished work on a new set of servers in the Singapore region. These servers will now handle traffic for all of your requests from the South East Asia region. You should experience lower latencies, faster load times and over all improved speediness in the app. 

Users in the European and American regions are currently unaffected by this change. 

Scheduled Downtime

There will be a scheduled downtime of the Elytra Service starting 28 October at 09:00PM IST (28 October, 3:30PM UTC) up to 29 October, 02:00 AM IST (28 October, 8:30 PM UTC).

During this time, I’ll be upgrading some of the servers in the US-East region for improved efficiency, reduced costs and higher throughput overall. The service will remain unavailable during that time to the users in the American and European regions. Service will continue as expected for users in the South East Asian region. 

Due to the change in the pricing for the servers, the benefits will be passed on to you. I’ll share more details on this later. 

I’ll appreciate your patience during this scheduled downtime. You can find the discussion on this post on Reddit.

1.1.0 Roadmap

I’ve spent the weekend planning for the upcoming 1.1.0 release of Elytra. It’s been a very enlightening weekend for me as to what ya’ll are looking for in an RSS Reader as well as some features and improvements I want to bring to the app. 

This is what the Roadmap is currently looking like for this release. 

Elytra 1.1.0 Roadmap presently scheduled for 20 October, 2018.

If there is something else you’d like to see included in this release, please feel free to email me, or you can also find me on Twitter. My Direct Messages are open to everyone. 

The date in the screenshot is a tentative date and is likely to change but as far as possible, I’d like to stick and commit to that date. 

If you notice, we have an established schedule here. 1.5 months per release is a decent timeframe. There is no guarantee that it’ll be maintained due to several factors being outside my control, I will certainly try my best.

Test Flight Update

As work has now commenced on the 1.1.0 release, if you haven’t joined the latest Test Flight Beta group, you can now do so from this direct link: https://testflight.apple.com/join/WiHZBq4P

That is all from me for this week. I’m most likely going to be a hermit for this week sorting out all the layouts and such so please do excuse me if I respond to your emails slower than usual.