Elytra Blog

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

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. 

Cheers. 

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. 

Recommendations

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.

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.

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. 

Last round on me!

This is most likely the last build of Elytra which will be going out to the Public Beta testers. It mostly contains a few minor fixes and two new additions. Read on to learn more.

New

  • Long tapping on the All Read button (Double checkmark) in a Feed’s interface will enable you to mark all unread articles as read, including articles not currently loaded in the interface. This is especially useful when you add a new high frequency feed to your list.
  • You can now optionally use a Dark Application Icon for Elytra. A new Miscellaneous section has been added under settings.

Fixes

  • Tweaked the Application Icons to render correctly on displays which use the sRGB colour profile.
  • Updated the footer text in the Subscriptions Interface to be compliant with Apple’s requirements. This is critically useful for you as well as I have come to realise. (I’m secretly hoping Elytra passes Apple’s review in the first go, as we all do :D)
  • Fixed application launch on iPads when running Elytra for the first time on the device.
  • Scrolling to load the next batch of articles now consumes less power. This is done less frequently now by using an alternate system API.
  • Fixed the status bar being dark (when a dark theme is selected) for the Move Folder interface.
  • Tapping on the Close button on iPads now deselects the currently selected article.

Notes
Version: 1.0.0
Build 127
Pipe: PBeta-04

Public Beta – Round 4

Elytra Build 110 is now available to all beta testers. This is a sizeable change-log so get ready. 

Whats New

  • The Publisher title is now included in the Article view. This is very useful when browsing through articles in the Unread or Bookmarked section.
  • New Subscriptions interface. You’ll see it once during the beta. You won’t be charged for the subscription when you install builds through Testflight. 
  • Off by default, you can now toggle to have Article cover images show up in the Feed interface. To manage this setting, open the App’s settings > Image Handling, scroll right to the end. Articles without cover images will continue to behave as they have always done.  

Improvements

  • Improves handling of folders when deleting a feed from a folder or deleting the folder itself.
  • When importing your OPML file, the File Picker Interface will now allow for selection of files saved with the .opml extension as well. 
  • Improved the functioning of the OPML interface for imports and exports.
  • Improved system for managing unread counts on the Feeds interface. 
  • Code blocks now support dynamic type. 
  • Removed the subscriptions interface from the Introduction interface. The subscriptions interface will now popup once after you add your first feed.
  • Tapping the search button in the Article’s Interface will dismiss the Search bar if it’s already active. 

Fixes

  • Fixed a memory consumption issue caused when really long articles are opened.
  • Fixed an issue where the cover image of an article would render twice, once as the cover image and the other as an image inside the post.
  • Fixed padding of code blocks.
  • Fixes height of rendered tweets. 
  • Rotating to a new orientation no longer causes a black out in the Article interface. 
  • Fixed a rendering bug for new lines and extraneous spaces in paragraphs.
  • Fixed handling of push notification taps. 
  • Fixed the width of the search bar (in the Articles interface) on iPads.
  • When you update the theme on the iPad and if an article is open, the article will refresh to accommodate for this change. 
  • Fixed the appearance of the New Feed and New Folder inputs. 

Notes

  • Version: 1.0.0
  • Build 110.
  • Pipe: PBeta-04

Public Beta – Round 3

Elytra Build 104 is now available on Testflight and I’ve added another batch 100 testers to the list. If you still haven’t received your invite, this could be the week.

I spent a small part of the weekend fine tuning things on the server side so it can accommodate more feeds and serve more people without needing to be upgraded to a bigger size. 

This update includes a lot of visual fixes and some underlying fixes to how Elytra functions.

Improvements

  • Haptic feedback has been enabled now that I have had a chance to fine tune things. This was previously available in the private beta but disabled during public beta release.
  • Opening and closing folders no longer causes the weird jumpy animation. 
  • Micro-blog posts are now handled in a graceful manner with content snippets shown instead of only the Blog’s title and author.
  • Added a Reset App option under the Settings.app if you need to externally reset the app. If you do this, your account information will be erased from the device. You can still reload the same account by setting up as usual and then swapping the account ID. Please note your account ID if you plan to do this. 
  • Improved the text that is shared when you long tap a linked header to bring up the Share modal.  
  • Handles .ico favicons correctly. 

Fixes

  • The Recommendations Interface in the previous build (103) stopped showing any feeds. This was a regression and has since been fixed. 
  • Fixed a crash where some images came with empty urls and the app tried to load them. 
  • Various minor improvements to the Onboarding flow. 
  • Fixed a dead-lock situation when you try to add a feed (which provides multiple feed options) that you already have in your list. 

Known Issues

There is a known bug when you open the Import/Export OPML interface and later dismiss it. The overlay persists and causes the screen to be dimmed. A restart fixes this issue. I haven’t been able to trace it or reliably reproduce the issue. 

Notes

  • Version: 1.0.0
  • Build 104.
  • Pipe: PBeta-03

Public Beta – Round 2

The second Public Beta of Elytra is now available on Testflight. I have also sent out the 3rd batch of invites to everyone who signed up. 

To clarify how I’m sending out invites:

Every few days, I pick a batch of 100 (in order) and add them to the Testflight Public Beta list. This is allowing me to ensure that the server can handle the load. So far, it’s been smooth sailing. 

Also, thank you to everyone who sent me emails reporting bugs and suggestions to improve the app. It’s been of immense help. As always, if you run into any issues when adding new feeds, send me an email with the link and I’ll take a look. 

Here is the change-log for the latest build.  

Improvements

  • Favicons are now less rounded based on feedback where circles are usually reserved for people’s photos & avatars.
  • Improves Voice over support for long paragraphs by breaking them down into their distinct paragraphs. 
  • Introduced a subtle load-in animation for the Articles interface.
  • Now when searching in an article, you can press the ENTER key to jump to the next result if one is available and the ESC key to dismiss the search context.

Fixes

  • Fixes an issue where tapping on the cancel button in the Subscription Interface would lock up the process. The continue button no longer remains disabled. 
  • Fixed the text errors on the Subscription Interface.
  • Fixed a crash that would occur if you navigated to Unread, then back and then to Bookmarks in quick succession. 
  • Fixed handling of URLs without the http: prefix. 
  • Fixed a Voice Over issue where it would only read the first sentence and the first word of the second sentence in a Paragraph. 
  • Fixed search highlighting on iPads

Notes

  • Version: 1.0.0
  • Build 103
  • Pipe: PBeta-02

Public Beta

A warm welcome to all the new Public Beta Testers. 

Now that the cheesy stuff is out of the way, let’s get to the meat of this release.

What’s new

  • Added a “Open in browser” button to the Article interface.
  • Account Deactivation
  • Implemented Accent colour
  • Recommendations interface 

Improvements

  • Improves the tinting of the refresh control for dark interfaces or after switching the theme.
  • Improved the kerning for the System font for the Article’s title.
  • Vastly improved GIF performance and memory consumption thanks to the FLAnimatedImage library. 
  • Fetching an favicon across all the available images (opengraph, apple-touch-icon and the favicon itself) based on weights. Apple-touch-icon is given a higher preference over the favicon now.
  • When adding a new feed from the app, typing in http/s is now optional. 
  • When a feed has multiple endpoints, the list now uses head truncation so you don’t accidentally add the comments feed. 

Fixes

  • Fixed adding feeds from the share extension.
  • Fixed the position of the popover (iPads) for the long tap interaction on feeds and folders.
  • Added a default handler for the browser scheme when one isn’t selected.
  • Fixed an issue where all buttons would remain in the disabled state if the cancel button in the Purchase interface was tapped during first run.
  • Searching within an article should now work as expected. There is a known issue on iPads where the highlight doesn’t align with the characters you’re searching for. 
    Fixed a rare crash that would occur when dismissing the Unread interface while a page was loading.

Notes

  • Version: 1.0.0
  • Build 102.
  • Pipe: PBeta-01

Beekeeping #4

This is a good one! 

Account Management

If you remember the early alpha days, the anonymous account management thing created a lot of issues you and I. Well, that’ll no longer be the case. This has been moved to a more concrete system.

However, do note that this may not correctly work on first run, so I recommend you to copy your account ID and keep it handy incase you need to restore your account.

What’s New

  • There’s a new launch screen that guides you through your anonymous account setup process and subscription setup. During the betas, you won’t be charged for the subscription, so please go along with it. If you do get charged (Apple!), I’ll send you cookies worth the same amount.
  • Access restrictions are in place when a subscription expires or lapses however they won’t be effect during the betas. They’ll get activated once the app releases on the App store.  
  • Animated GIFs now require you to tap on the GIF button to load the image and then the play button to play them. This is done so as to deter the usage of GIFs and save precious power and CPU cycles. 
  • Video elements are now natively supported (including livestream links)
  • When adding new feeds, a visual dialog is now added to let you know that the app is processing your request.

Improvements

  • Gallery items now correct announce captions for images when VoiceOver is enabled. 
  • Improved guided access control for gallery navigation 
  • Fixed an issue where labels of certain buttons were read incorrectly or mixed up.
  • Fixed an issue where Voice Over sometimes did not correctly read the title of the active interface (usually occurs for modals).

What’s Fixed

  • Fixed loading of bookmarks from the server during post-setup syncs.
  • Fixed an issue where the “Move to Folder” interface used to show a checkmark against None even if a folder is selected.
  • Fixed empty states not appearing correctly on some devices.
  • Fixed the Author’s interface showing articles from all authors from that Subscription. 
  • Fixed a caching issue that caused old caches to be displayed instead of the latest information from the server. 

Notes

  • Version: 1.0.0
  • Build 91.
  • Pipe: Beta-04