NetNewsWire 6 Out Now on iPhone and iPad

‌The World’s Favourite Open Source RSS ReaderTM has been updated to version 6.0 on iPhone and iPad. I don’t often write about releases, but this one is significant and it’s been almost a year in the making.‌

The headline features of this release are iCloud syncing, Twitter and Reddit integrations, home screen widgets, and support for a host of new syncing services.

iCloud Syncing

iCloud syncing is a game-changing feature if you want to sync your feeds across your Apple devices and don’t want to use a third-party syncing service to do so.

You can enable iCloud syncing in the app by going to Settings > Add Account > iCloud. Once enabled, you can either drag feeds from your existing local account or third-party service to iCloud or add feeds directly using Add Feed and selecting the iCloud account.

From there, it behaves like a local account with one small difference: it will sync your feed subscriptions, read and starred statuses across your Apple devices. It’s a really cool feature.

A few words to the wise, though. First, if you’re going to do a large migration of feeds into iCloud, it does take time. Apple has strict requirements on the amount of data that can be synced and will, on occasion, apply some throttling. (Be patient!) Second, like local accounts, you may miss some articles if they come and go before the app has completed a refresh.

Additional Third-Party Sync Services

In addition to local syncing, iCloud, Feedbin, and Feedly, 6.0 expands the available syncing services with five new providers: BazQux, Inoreader, NewsBlur, The Old Reader, and FreshRSS. If you use any of these services, now is a great time to jump on board.

Twitter and Reddit Integrations

Tweets and Reddit posts in an RSS reader? If you’re using a local or iCloud account, this is now possible. You can enable Twitter or Reddit via the app’s Settings menu under Add Extension.

Once you’ve signed in, you get additional options in the “+” menu to add Twitter or Reddit feeds:

Reddit Twitter
Home Home
Popular Mentions
All Screen Name
Subreddit Search

I use the Twitter Search option the most. For example, to follow the #NetNewsWire hashtag.

Home Screen Widgets

There are three variations of home screen widgets that follow your Smart Feeds: a Today widget, an Unread widget, and a Starred widget. They come in medium and large sizes. Tapping on articles will take you straight to the article while tapping anywhere else will open the app.

We’ve not included the widgets on macOS. If you’d like them there, please raise an issue on GitHub.

If You Want to Help Out

NetNewsWire is free, open-source, and built by volunteers around the world. If you want to get involved—and very likely learn a thing or two—head over to Slack. Brent has built a fantastic community, you’ll be made to feel welcome!

The Diminishing Utility of MFMailComposeViewController

The Distant Past

Before iOS 14, the default email app on iOS was Mail. Of course, you could have had other email apps installed, but they’d never be the app used by the system when tapping on an email address. You’d always end up in Mail.

This made things easy for developers. If you wanted give users the ability to send emails from within your app, you’d use MFMailComposeViewController. Implementation was easy:

if MFMailComposeViewController.canSendMail() {
    let mailController = MFMailComposeViewController(rootViewController: self)
    mailController.setSubject("Test Subject")
    mailController.setToRecipients(["mail@test.com"])
    mailController.mailComposeDelegate = self
    present(mailController, animated: true, completion: nil)
}

Today

As a developer, I want to respect the user’s choice of email app, whether it’s Mail, Edison, Gmail, Outlook, or Hey. To do that, I can’t use MFMailComposeViewController. Instead, I have to add mailto to the LSApplicationQueriesSchemes key in Info.plist and then, when the user wants to send an email, use this code:

if UIApplication.shared.canOpenURL(url) {
    UIApplication.shared.open(url, options: [.universalLinksOnly : false]) { (success) in
        // Handle success/failure
    }
}

Unlike MFMailComposeViewController, this approach sends the user to their choice of email app and, at the same time, closes the source app. It’s not ideal.

A feature request for iOS 15: default mail apps should have their own MFMailComposeViewController equivalent.