Elytra Blog

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

RPC First Class Support

Back in December 2018, I wrote a post about RPC Pings support in Elytra. I cannot believe it has been that long. Later in 2019, I promised to bring first class support to blogs that implement RPC pings to Elytra. 

I have just finished implementation and it is now live. To recap the steps from the earlier blog post, let’s assume you have a WordPress Blog. 

…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 it. WordPress handles all the complexities for you. If you use Micro.blog, you can find instructions here. You can adapt that shortcut to send RPC pings for any website you host as well as to any other service other than Elytra. 

Here’s what happens in the background:

  1. Your website/script sends an RPC ping to Elytra.
  2. Elytra immediately processes your website’s RSS Feed. 
  3. Any new posts are added for your subscribers to read. 
  4. Additionally, users subscribed to your blog’s push notifications from the iOS and iPadOS Apps are sent a push notification.

Starting today, 29 Mar, 2020: Once your blog sends at least 5 pings every 14 days, Elytra will no longer poll for changes to your RSS feed. Elytra will then assume that you will send RPC pings every time content on your website is updated. If no RPC pings are posted for 14 days, Elytra will once again begin polling changes at regular intervals until the 5 pings are received and the cycle can repeat. 

So you get the benefit of real-time updates, push notifications and no penalties for downtime. This hugely benefits users using a blogging platform like Github Pages, Micro.blog, etc. that don’t inherently support WebSub yet. You can use this for your WordPress based blog as well if you don’t want to install the WebSub plugin for whatever reason. 

Starting with v1.7, users of the iOS and iPadOS apps will also be able to subscribe to feeds for Push Notifications which use RPC pings. 

I invite your feedback on this feature if you decide to implement and make use for it. For any questions, please feel free to email me at support@elytra.app. Enjoy Reading. 

v1.6.2 Submitted for Review

I just finished submitting the v1.6.2 build for review. It’ll be released automatically to everyone once it passes review and finishes processing for the App Store. 

It fixes two bugs: 

  • Fixed a bug which caused the app to launch with the Empty State Interface with no way to navigate within the app when opened in split-view mode on compatible iPads.
  • Fixed a crash that would occur when launching the app from a cold state.

I’m also happy to note that work on v1.7 of the iOS app is nearing completion. It won’t be released until Summer, 2020 though. It’ll be released alongside something else. So stay subscribed to know more about that. 

Spring 2020 Supplementary Update

Youtube is very wide, densely spread content aggregation service which almost every single one of us has used at least once. Youtube has supported RSS Feeds for channels for a while now; for as long as I can remember actually. Although, it makes it very hard to find and subscribe to them. There is no direct option to do so. 

Until recently, I traversed a channel’s homepage and realised that Youtube advertises these links, like any good citizen of the WWW should. So now when you enter your favourite channel’s URL in Elytra, the app will automatically fetch the RSS Feed URL for you and add it to your account. 

I’ve further programmed Elytra to know the 3 varieties of the URLs Youtube uses for channels and handle all of them gracefully. I’ve personally configured mine to all go inside a Youtube folder so I can tap on the folder to view its custom feed and go through all published videos. 

In v1.6, I also updated how Youtube videos are handled in the app. It now uses the HLS stream which automatically configures the player based on your device settings like Low Power Mode, Low Data Mode, and the like. So it’s very energy efficient compared to opening the main stream or embedding in a web view. 

Unfortunately, Youtube does not support WebPush/PubSubHubBub on these feeds yet, and I doubt they ever will. 

If you need to import all your channels, you can follow Google’s support documentation which can be found here

As always, if you like the app, please take a moment and rate it on the App Store. It helps the app and me a lot. Happy Reading.

Spring 2020 Update

The Spring 2020 update for Elytra 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

Elytra's new triple column layout in light and dark mode.

  • iPadOS users gain the ability of the three column collapsible layout in landscape mode. This has been a highly requested feature and I’m glad to finally include it in Elytra.
  • iOS 12 support has been dropped. From this version on, only iOS 13 will be supported. v1.5.4 will continue to work for users still using iOS 12.
  • Blog Names below the Article’s title are now tappable. They open the blog’s article’s list. When you open an article from the blog’s own article list, this behaviour is disabled to prevent a rabbit hole situation.

Elytra on iPhone 11 showing changes to the Blog names in the article reader.

Improvements

  • Re-add WebP Images support.
  • Improved handling of opening articles from push notifications.
  • Minor Quality of Life adjustments and rendering improvements.
  • Improved loading Youtube Videos. The HLS Manifest of the video is now loaded when available. If this is absent, then the mp4 file is checked for and loaded if available. Using the HLS Manifest improves battery usage, performance and lowers data usage. The HLS Manifest is directly handled by the OS and hence also respects Low Data modes on your WiFi or Cellular connections.
  • Keyboard commands are now available once again. KNOWN ISSUE: Once you open an article, the keyboard commands for the Feeds Interface may not work in certain cases.
  • Improved legibility and visibility of a couple of icons.

Fixes

  • Fixed recommendations not displaying the feed correctly.
  • Fixed issue with loading images where narrower images would be enlarged to fix the max width as determined by the app.
  • Fixed a 14 month old bug which could cause a crash when reloading feeds with one or more folders open.
  • Fixed opening an Feed from the search results.
  • Moving from open to open folder no longer crashes the app.
  • Fixed the default sorting option for Unread showing the wrong icon.
  • Fixed rendering on the launch splash screen.
  • Fixed displaying article helper view on larger iPhones.
  • Fixed the iOS 13 link tap bug: when scrolling in the article reader, if your finger scrolls by dragging a link, iOS would tell the app to open that link.
  • Fixed the Search Bar not toggling in the article view correctly.
  • Fixed the search previous button being enabled when viewing the first search result in the article.

Thank you for reading. If you have made it so far, please consider sharing https://elytra.app on your blogs, RSS Feeds and Social Networks, thank you.

Elytra Winter 2019 Update

Winter is coming… soon. The Elytra Winter 2019 update is already here though. 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 change log:

iOS App

What’s New

Elytra's Updated Sign In Interface

New Push Notifications Interface

New Image Viewer Interface

  • Added a new Bookmarks Manager. This is much more efficient system compared to the previous system and is much more scalable. This is a non-UI update so you’ll see a lot of performance benefits from this.
  • Sign in With Apple. If you’re new to Elytra, you don’t need to take any additional steps. If you’ve been using Elytra and are updating to the latest version, please head over to Settings > Account and link your account from there.
  • Image Viewer: Tap on an image in an article to open it in a full screen image viewer. All images from the article are gathered in single place for easier viewing.
  • Push Settings: View a list of publishers you’ve subscribed to receive push notifications from.
  • Added Settings Sync to work in tandem with the web app. More on this soon.

Improvements

  • Adding a new feed from the search interface now increments the unread count.
  • Removing a feed now decrements the unread count.
  • Recommendations interface now correctly shows the custom Feed name if one is set.
  • Improves how the app handles & reacts to memory pressure warnings from the OS.
  • The Author Interface now shows the author’s name prominently and defers the blog’s name to the subtitle.
  • Drastically improved managing of unread counts in the app.
  • Improved behaviour of the app when marking backdated articles as read.

Fixes

  • Fixes push notifications opening the wrong feed.
  • Fixes push notifications not opening the article on iOS 13.
  • Fixed a bug where the app would re-sync all bookmarks even if they existed locally.
  • Fixed the Settings icon for the Push Notifications row not showing up on some devices.
  • Fixed the activity indicator persisting on screen when only one or no page exists for unread items.
  • Fixed a potential crash when opening new feed interface.
  • Fixes loading of unsupported image formats. Loading an SVG image would cause the app to crash.
  • Fixed last updated date not matching the actual refresh date when manually refreshing through the User Interface. This only updated when fetching via background refresh.
  • Fixed an issue that would cause a corrupted navigation bar in iOS 13.
  • Fixes a crash which could occur when the Trial Interface was presented.
  • Fixed linked images which would not render if they were contained inside an anchor blog with multiple other elements. These other elements were usually line-breaks preventing the entire block from rendering properly. Affected blog: Saturday Morning Breakfast Cereal..
  • Removed webp support.
  • Images are loaded using the same extension from the proxy as the source image.
  • Fixed a small bug with the unread count when marking read automatically from the article reader.
  • Fixed an issue with image loading preferences. “Never Load Images” now works properly in the Articles List & Article Viewer.
  • Fixed some really nasty memory leaks.
  • Fixed a crash that would occur when launching the app. This was a regression introduced in Build 275 of Elytra and OS 13.1.2.
  • Micro.blog posts with images now show the image as a thumbnail in the articles list when settings are enabled for it.
  • Fixed the colour of the summary label (iOS 13 only, correct on iOS 12).

API

I have been discussing with a few developers across platforms to open Elytra’s API to them so they can also build apps on top of it. I hope this takes off because that’ll mean more and more apps will be using a more private and secure way to read their favourite RSS Feeds. 

Other than that, I have made some significant changes to the API and RSS Feed Poller in this update. Here’s a quick change log of things which affects us as Elytra’s Users:

  • The RSS Feed Poller now fetches more frequently and now fully complies with all HTTP caching mechanisms. Previously I only used ETags to know if a feed document was fresh or stale. But this sometimes resulted in unnecessary requests. If a Feed now tells that the content is to be considered fresh for a day, that will be respected. 
  • Improved the WebSub protocol support. If you write on your own blog, I urge that you check if whatever engine runs your blog supports WebSub. If you’re using WordPress, there are plugins with enable this feature. It’s simple to setup and you get free real-time notifications for your readers.  

Thank you for your continued support and feedback and criticism. I will continue to work on the iOS and Web apps through November. I’ll be unavailable on email in December but please feel free to get in touch, I’ll try to reply to you during that time whenever possible. Happy holidays. 

Elytra Winter Update – Back on Track

I published earlier this week that Elytra’s Winter update was delayed because of a major bug in the iOS 13.2 SDK causing the app to get rejected in review. Apple has since released updated tools which fix this issue. I’m submitting the update for review once again today. 

I have also been reading about faster review times since 1st November. I hope this trend continues. 

Elytra Winter Update Delayed

I had Elytra’s v1.5 build scheduled up pretty tight and ready to go. I submitted it to the App Store for Review and woke up today morning to learn that the binary was rejected because it was crashing. That’s fair. None of us involved want this to happen. 

I checked the crash log provided by the review team and it did not look good. However, a quick run on my devices and reading about this issue (yes! It has already been documented), I have to unfortunately conclude that I’m going to have to delay v1.5 until Apple fixes this issue. 

As soon as an update to Xcode is available, I’ll test things and dispatch a new build. The iOS 13.2 SDK fixes a bunch of issues I’ve been facing since the iOS 13.0 SDK so I hope it is worth waiting. 

iOS 12 Deprecation

Apple recently updated their Support page stating updated iOS 13 adoption metrics. Chance Miller (9To5Mac) wrote about it in detail. With over 50% on iPhones and 30% on iPads, this seems like a good time to deprecate iOS 12 support from Elytra. 

Elytra for iOS v1.5 will be the last pipeline to support iOS 12. v1.6 which is scheduled for Spring 2020 will drop iOS 12 support completely. Some excellent changes await in in v1.6 and I cannot wait to share more details with you. 

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).

August 2019 Update

Web Service

Over the last couple of days, I have been testing a new way for reliably fetching and caching RSS data from your favourite RSS feeds. 

Ironically, my preliminary implementation of this reliable method wasn’t all that reliable usually not adding new articles to the database. Luckily, I caught this issue within 24h and has now been patched. 

This change matters for two reasons:

  1. Although this new method is slower by almost 50%, it uses less resources like CPU and RAM, so I was able to downsize the server that runs this process. This means a small reduction in operating costs for me. 
  2. I have improved logging across the board so now I’ll know exact reasons why a particular RSS Feed failed to update. So the next time if you reach out to me telling me a feed wasn’t updated in a while, I should be able to resolve it quicker. 

iOS App

The progress on this has been slower than I had hoped. iOS 13 is changing a lot across the Betas, and has been one of the buggiest releases in recent memory. I have all the major things covered but I’m most likely not going to release the iOS 13 release of Elytra until the iOS 13 GM becomes available. 

macOS App

Yes, this is planned. But in the mean time, NetNewsWire is out in Public Beta. Definitely give it a shot.