Unread 4.2.1 is available from the App Store with these improvements:

  • This update fixes a bug that prevented article list thumbnails for BBC articles from appearing under some circumstances. This fix will apply to new articles downloaded after installing this update.
  • This update fixes a bug around setting a custom icon on iPhone and iPad.

If you enjoy using Unread please consider purchasing a subscription to its premium features.

The webpage text service had a period of about 7 hours where it was not reliably retrieving webpage text. It was not completely unavailable, but it was not working reliably either. I fixed this. All servers are now operating as expected.

I am sorry about this. The fact that this went on for so long without my being aware of it is inexcusable. I am working on improvements to my monitoring so that such a scenario does not go undetected going forward.

Unread 4.2 adds iOS 18 and iPadOS 18 features and a variety of other improvements. This update is available now from the App Store.

Dark Mode Icon and Tinted Icon

The standard icon for Unread now has a dark mode variant on iPhone and iPad for iOS 18 and iPadOS 18. After enabling dark mode icons on your home screen, Unread’s icon will have a dark background. This change will not apply when using an alternate icon for Unread.

This update also adds support for tinted icons on iPhone and iPad for iOS 18 and iPadOS 18.

Widget Updates

This update adds the ability to show widgets with a tint on iPhone and iPad for iOS 18 and iPadOS 18.

Additional Improvements

  • On Mac, a new Next Article toolbar button selects the next article in the article list. This button is not present by default, but can be added to a main viewer window by choosing Customize Toolbar… from the View menu. Similarly there is a new optional Next Article menu item for the swipe left menu of the article view on iPhone and iPad. To enable it, open the Settings screen, select Articles under Basic Options, and turn on Next Article under Basic Actions.
  • On Mac, this update adds a First Article menu item to the Article menu. This selects the first article in the article list. This menu item has a ^1 (Control-1) keyboard shortcut. On most (but not all) keyboard layouts, typing just 1 will also invoke that menu item.
  • On Mac for customers using more than one account, the ⌥1 (Option-1) keyboard shortcut will open the first account, ⌥2 will open the second account, etc.
  • On Mac, this update adds an optional New Subscription… toolbar button. This button is not present by default, but can be added to a main viewer window by choosing Customize Toolbar… from the View menu.
  • This update fixes a bug that caused articles to be associated with Feedbin saved searches after they no longer met the saved search criteria under some circumstances.
  • This update fixes a bug around the Clear Read Items on Mark All Read setting on Mac.
  • This update fixes a bug around article list table selection on Mac.
  • This update fixes a bug that caused broken images in some apartmenttherapy.com articles.

Available Now

This update is available now from the App Store. If you enjoy using Unread, please consider purchasing a subscription to its premium features.

Unread 4.1 adds article actions for GoodLinks and Omnivore, new settings around clearing read items, and more. This update is available now from the App Store.

New Article Actions: GoodLinks and Omnivore

This update adds new article actions for GoodLinks and Omnivore.

You can invoke an article action in any of the following ways:

  • Using the context menu on an article in an article list.
  • Using the context menu of a link in an article.
  • Using a toolbar button on Mac. Article action toolbar buttons are not present by default. You can add them to the toolbar by choosing Customize Toolbar… from the View menu.
  • Using the swipe left menu from inside an article on iPhone or iPad.
  • Using a keyboard shortcut on Mac or iPad with a hardware keyboard.

The keyboard shortcut for GoodLinks is Control-G (^G). The keyboard shortcut for Omnivore is Control-O (^O).

Like other premium article actions, these require a subscription to Unread’s premium features.

The GoodLinks article action requires that the GoodLinks app be installed. On iPhone and iPad, the GoodLinks article action works by opening GoodLinks. GoodLinks will open briefly, and it will then bring Unread back to the foreground. On Mac, the GoodLinks article action works by opening GoodLinks in the background.

The Omnivore article action sends links directly to Omnivore via its API.

I updated Unread’s privacy policy, adding links to the GoodLinks Privacy Policy and to the Omnivore Privacy Policy.

Clear Read Items Settings

This update adds a setting to enable clearing read items automatically when manually refreshing. When an article list should only include unread articles, either because you are in the list of unread articles or because Hide Read Items is enabled, articles stay in that list even after they are marked read – until you perform a Clear Read Items action. If this setting is enabled, Unread will clear read articles automatically when you manually refresh the account by selecting Refresh from the View menu on Mac, by using the Refresh toolbar button on Mac, by selecting Refresh from the swipe left menu on iPhone or iPad, or by pulling to refresh on iPhone or iPad.

On Mac there is also a setting to automatically clear read articles on Mark All Read. When this takes effect, marking all read will result in an initially empty article list.

On Mac, these options are under the General pane of the Settings window. On iPhone and iPad the new setting is on the Read & Unread settings screen.

Additional Improvements

  • The prompt offering to apply a display mode change between feed text, webpage text, or both to all articles from a feed is now displayed more prominently on Mac.
  • Under the Advanced tab of the Settings window on Mac, there is now a setting around whether to mark an article read when opening it. By default this is enabled.
  • This update fixes bugs around the display of emoji from feeds generated by WordPress.
  • This update fixes a bug around the layout of images inside blockquotes on iPhone.
  • This update adds fixes around article list images for articles from uploadvr.com.
  • This update fixes a bug that prevented some images from loading.
  • This update fixes a bug around keyboard focus when using the Unread Articles, All Articles, etc., menu items on Mac.
  • This update adds a Certificate pinning setting to the Advanced pane of the Settings window on Mac. This is enabled by default. When enabled, Unread uses certificate pinning when making requests to Unread Cloud and to the webpage text service. This provides an additional layer of security, but it results in requests failing when used in combination with some antivirus software and on some corporate devices. I recommend leaving it enabled unless you have specific reason to disable it. Unread for iPhone and iPad always uses certificate pinning when making requests to Unread Cloud and to the webpage text service.
  • For customers not subscribed to Unread’s premium features, the main window toolbar on Mac now has an Upgrade button making it easy to upgrade. Similarly on iPhone and iPad the swipe left menu of several screens now has an Upgrade menu item making it easy to upgrade. Neither appears when already subscribed to Unread’s premium features.
  • The first time Unread is opened on iPhone or iPad after installing this update, it will display a news alert about the availability of Unread for Mac.

This update is available now from the App Store. If you enjoy using Unread, please consider purchasing a subscription to its premium features.

These are a few tips for navigating Unread for Mac via keyboard.

Scrolling via Space Bar

You can scroll down one page in the current article by pressing the space bar. If Unread is already at the end of that article and you are in a main viewer window, Unread will advance to the next article in the article list.

Clear Read Items

You can clear read items with ⌘' (command-apostrophe). By default that will leave the currently selected article, even if it is read. You can clear read items including the currently selected article with ⇧⌘' (shift-command-apostrophe).

Single Letter Keyboard Shortcuts

These keyboard shortcuts are available in English keyboard layouts. They are not available in all keyboard layouts:

J: Select next article
K: Select previous article

N: Select next feed in the source list
P: Select previous feed in the source list

L: Select next pane in the main viewer window
H: Select previous pane in the main viewer window

B or V: View on web

A: Mark all read

Ernest Rudak, writing at Just Text:

If you are a VoiceOver user and wondering if Unread is accessible, I have good news. The app is more than just accessible; it uses standard layouts, and all buttons and menus are clearly labeled. Unread is not only a pleasure to use from a visual perspective but also from a VoiceOver perspective. The Mac version is built with native technologies, specifically AppKit. What this means for you as a VoiceOver user is that the app behaves as it should, and you will not encounter cumbersome corners in the app that feel unfamiliar or strange.

Ernest’s review describes Unread in detail with a focus on its accessibility via VoiceOver.

In order to retrieve new articles from feeds, Unread Cloud needs to check those feeds periodically. In general, Unread Cloud polling intervals range from every 5 minutes to every 60 minutes, depending on a variety of factors:

  • When the most recent article from that feed was published. (If the most recent article from a feed was published several years ago, it is less likely that a new one will be published within the next few minutes.)
  • The number of active accounts subscribed to the feed.
  • Whether Unread Cloud’s last attempt to check that feed was successful, versus the website being unreachable or returning an error.

If a server returns a 429 (Too Many Requests) response, Unread Cloud automatically slows its polling for that feed down to once every four hours. I do not want to be a burden on websites or fight the policies of those trying to publish a feed.

If a server returns a 403 (Forbidden) response, Unread Cloud will not check that feed for another four hours. That polling interval change is temporary if the next retrieval is successful.

Unread Cloud uses “If-Modified-Since” and “If-None-Match” headers to avoid retrieving an entire feed when it is unchanged. Unread Cloud retrieves feeds in a compressed form from servers that support HTTP/HTTPS compression.

There is more nuance to the timing than this, and it is subject to change over time. This is just a rough summary.

Feed Reader Score Project

Rachel at rachelbythebay.com recently started working on a feed reader score project. The project is a laudable effort to encourage RSS reader developers to behave respectfully towards websites hosting RSS feeds: to not poll more frequently than needed, and to use HTTP/HTTPS caching. This is important work. If RSS readers are a burden to websites, website owners are dissuaded from providing feeds.

I learned of this project about a week ago, when a follower on Mastodon kindly sent me a link to an article describing feed reader polling behavior. That article describes Unread Cloud’s behavior as follows:

Unread RSS Reader. Godawful poll timing. 6103 requests in 52 days is about one poll every 736 seconds _on average_, but they’re hugely spread out. WTF? Put it this way: the list of unique intervals (nn seconds, nn minutes, ...) is *four pages tall* on my web browser.

One poll every 736 seconds sounds great, but the description indicates that something is amiss. I got in touch with Rachel, who kindly shared with me the data used to arrive at these conclusions. I did some analysis on this data.

Chart showing minimum and maximum time intervals for each day. For the most part the minimum interval is a constant 13 minutes through 2024-06-28. It becomes very low and variable from 2024-07-29 through 2024-07-08. Then it goes to about 15 minutes. The maximum interval varies between 15 minutes and 30 minutes. But there is a 124-minute time interval on 2024-07-11. The minimum time interval goes way down from 2024-06-29 through 2024-07-08.
The first and last days have lower request counts (because they are partial days). The request counts through 2024-06-29 hover around 110 per day. The request counts for 2024-06-30 through 2024-07-08 go up to about 190 per day. Then they come back down to about 95 per day.

What happened from 2024-06-29 through 2024-07-08?

The request count for those days is roughly double that of the other days, and the minimum interval is absurdly low.

This coincides with my configuring a test instance, essentially a temporary clone of Unread Cloud, that started with a copy of the production database. I did this in part to do a test restore from the offline backup. The Unread Cloud production database has a warm backup that stays up-to-date via replication. The offline backup is there in case both database servers fail. Every few months I do a test restore from the offline backup to ensure that the backups are functioning as expected – and are not subtly broken in a way that my monitoring does not catch. I also did some testing of code changes against this database. I do not often test against a full copy of the production database, but in this particular case I was concerned that the changes I was making could introduce a performance issue.

Since there were two different Unread Cloud instances checking this feed, there were roughly twice as many requests. Each instance was determining the timing for its own polling independently.

It is fair to point out that an Unread customer being subscribed to a feed resulted in twice the number of requests to that feed during this time! I am seriously considering that impact.

What happened on 2024-07-11?

The maximum interval for that day is 124 minutes. One request had that high interval. The others were within the expected range. I did have some server issues this day, so this does not surprise me.

Why is the maximum interval so variable?

The minimum interval is fairly consistent, but the maximum interval varies between the minimum and almost 30 minutes (ignoring the specific date ranges above).

When a new customer signs up and imports a large number of feeds that Unread Cloud is not already checking, Unread Cloud will check those feeds right away and defer checking other feeds. Checking feeds also gets deferred when rebooting servers in order to deploy a security update that requires a reboot. Similarly when I deploy an update to the Unread Cloud server software, that pauses feed checking for a period of time.

Conclusions

I feel good knowing there is a good explanation for the anomalous polling intervals from 2024-06-29 through 2024-07-08. Even during that period, the highest daily request count is 192. On average that is one every 7.5 minutes. The rest, except for the 2-hour polling interval on 2024-07-11, are as expected.

I intend to continue the practice of occasionally creating a clone of Unread Cloud, starting with a backup of the production database. This does result in additional polling of feeds. But it is necessary to test the performance impact of changes under some circumstances, and it is necessary to ensure that my backups are functioning as expected.

I now have my own test feed polling on Rachel’s feed reader score project - so I can get an up-to-date external view of Unread’s polling to ensure that it aligns with my intentions. I have to pay the Unread Cloud server costs, so I am motivated to ensure that I am not polling feeds more often than necessary or using unnecessary bandwidth. I thank Rachel for this project.

Unread 4.0.1 is available from the App Store.

The biggest change in this update is that Unread’s old icon with the white background is back as the default icon. With Unread 4.0 (and Unread for Mac) I changed Unread’s icon to be one with a silver background. I thought it was an improvement, but after receiving several thoughtful messages from customers it has become clear that the silver icon was not popular. The silver icon remains available as an alternative icon for customers who subscribe to Unread’s premium features.

This update also incorporates these improvements:

  • This update adds a Keyboard Navigation help article on Mac. It is available via the Help menu. This help article describes shortcuts for navigating Unread with a keyboard.
  • This update fixes bugs around preserving window position and size on Mac.
  • This update improves the display of homekitnews.com articles. These improvements will apply to articles downloaded after installing this update.
  • This update fixes user interface glitches around organizing feed subscriptions via drag and drop on Mac.
  • This update fixes a bug that would prevent section titles from appearing at the top or bottom of an article list while flicking through it on a trackpad on Mac under some circumstances.
  • This update fixes a bug that caused VoiceOver to read image names when reading source list items on Mac.
  • This update fixes a bug that caused VoiceOver to read a rogue date or feed name when navigating to the left from the article list on Mac under some circumstances.
  • This update fixes a bug that caused VoiceOver to read account entries incorrectly on the Unread home screen under some circumstances on iPhone and iPad.
  • The description of Unread’s subscription now includes the fact that it supports Apple’s family sharing.

If you enjoy using Unread, please consider purchasing a subscription to Unread’s premium features.

It was seven years ago today that I officially took over development of Unread. It is a nice coincidence that this is the launch week of Unread for Mac.

Unread got some nice press attention this week. Here are some highlights:

Most importantly, I should stress again how refreshing it feels to have such a great native experience with Unread. The app is really fast, even when it’s loaded up with hundreds of feeds.
Niléane, MacStories

It’s an RSS reader made with taste. It has great typography, themes, search, and compatibility with the usual suspects. I love having this app on my Mac.
David Sparks, MacSparky

It feels so fast. It feels so good to use. I'm really, really impressed with the Mac app.
Matt Birchler, Comfort Zone

I’ve been using the Mac app for a couple of weeks, and it’s really quite nice, and I love that Brayton went the AppKit route.
Stephen Hackett, 512 Pixels

I want to thank everyone who helped spread the word about the launch – everything from podcasts and blogs to social media boosts. It is helpful to me, and helpful to Unread’s success.

If you enjoy using Unread, please consider subscribing to Unread’s premium features.

Now that Unread for Mac is available through the Mac App Store, I am winding down the public beta. If you are still using the public beta of Unread for Mac, please download the newest version from the Mac App Store.

The release of Unread for Mac has been very smooth. A big reason for that is the input I have received from beta testers. I want to thank everyone who beta tested Unread for Mac. I especially want to thank those of you who sent me suggestions and bug reports. You made Unread a better product.

If you enjoy using Unread, please consider purchasing a subscription to Unread’s premium features.

I released Unread for Mac yesterday. I want to thank everyone who downloaded Unread for Mac, everyone who helped spread the word online, and everyone who sent me questions or suggestions.

I think I wrote back to everyone who contacted me, but if you sent me a question and did not hear back then please email me. I pride myself in being responsive to customer inquiries.

While the release of Unread for Mac is a big milestone, there is always more to do. Here is what I am considering next for Unread:

  • I mentioned in the announcement post that Unread for Mac is ahead of Unread for iPhone and iPad in some ways. I want to bring some features from Unread for Mac to the iPhone and iPad, specifically: search suggestions, undo support, and retrieving a higher resolution image when available for an image shown fullscreen.
  • I have some ideas around making syncing even faster for Unread Cloud accounts and Local accounts.
  • Functionality around organizing saved articles – both articles saved or starred from RSS feeds, and articles saved via Save to Unread.
  • Support for additional feed syncing services.

I tend to plan one release at a time, and my long-term thinking is likely to change based on customer input and the evolution of Apple’s platforms. Therefore I ask that you not treat this list as a set of specific promises. This is just a snapshot of what I am considering.

If you enjoy using Unread, please consider purchasing a subscription to Unread’s premium features.

The screen of a Mac running Unread. A three-pane viewer window is in the background. A standalone article window is in the foreground.

Unread for Mac is now available from the Mac App Store. Unread for Mac incorporates every Unread capability that makes sense on Mac including:

  • Beautiful typography
  • Color themes
  • Great search functionality
  • Handling of summary-only feeds
  • Syncing via Unread Cloud, Feedbin, Feedly, Fever, Inoreader, and NewsBlur
  • The Subscribe in Unread share extension
  • The Save to Unread share extension (subscription required)
  • Widgets
  • Handling of link articles

Unread for Mac is a native Mac app. The user interface is built with AppKit and a touch of SwiftUI. There are some ways in which Unread for Mac goes beyond Unread for iPhone and iPad.

Search Suggestion Menu

Unread for Mac includes a search suggestion menu. When you search articles for a term and one or more of your feed titles match that term, Unread will present a search suggestion menu letting you select a matching feed in the source list. This is convenient when you subscribe to a large number of feeds and you want to quickly get to articles from a specific feed.

Screenshot of Search Suggestion Menu
A search suggestion menu suggests selecting the feed “MacStories”.

Switching Between Feed Text and Webpage Text

Like on iPhone and iPad, on Mac you can easily switch between showing feed text, webpage text, or both for an individual article. After doing so, you are prompted to apply that change to other articles from the same feed.

On Mac you have the ability to see the result of that change on the current article before applying it to other articles from the same feed. After switching the display mode, the prompt to apply that change to other articles from the same feed is at the top of the article. This lets you see the result of the display mode change before deciding whether to apply it to other articles from the same feed.

Screenshot of prompt letting user apply display mode to all articles from a feed
A prompt asks whether to apply the display mode change to other articles from the same feed.

Bulk Subscription Management

Unread for Mac makes it easy to move subscriptions between folders or tags via drag and drop. You can unsubscribe from a set of feeds quickly by selecting them and choosing Unsubscribe… from the context menu or pressing the Delete key.

Viewing Images Fullscreen

Like on iPhone and iPad, you can click any image in an article to view it fullscreen. When viewing an image fullscreen, Unread for Mac will retrieve and display a higher resolution version of that image when one is available.

iPhone and iPad Update

Unread 4.0 is also available for iPhone and iPad. Its default app icon has a graphite background color, similar to that of Unread for Mac. In-app text and help articles have been updated to reflect the release of Unread for Mac.

Unread has the 4.0 version number across platforms. I intend to keep the version numbers in sync when feasible.

Premium Features

Unread is a free app. Premium features are available with a subscription.

A single subscription unlocks premium features on all platforms: Mac, iPhone, and iPad. If you are already a subscriber to Unread’s premium features on iPhone and iPad, those premium features are available on Unread for Mac at no additional charge. There is no change to the renewal price for current subscribers.

Privacy Policy Updates

I made these changes to the Unread Privacy Policy:

  • I replaced the term “share sheet extension” with “share extension,” to reflect that share extensions on Mac do not use a share sheet.
  • I updated the link to the NewsBlur Privacy Policy.

Download Now

Unread requires macOS 14.2 or later, iOS 17.0 or later, or iPadOS 17.0 or later. Unread 4.0 for Mac, iPhone, and iPad is available now from the App Store. If you enjoy using Unread, please consider telling your friends on social media.