Archive for January 26, 2021

Tuesday, January 26, 2021

Tweetbot 6 for iOS

John Voorhees (Tapbots):

Tapbots, the maker of Tweetbot, has released version 6 of the app, introducing a new subscription pricing model along with a handful of timeline and design updates.

The subscription costs $0.99 per month or $5.99 annually. Many of the features previously available as part of the paid app, including multiple account support, advanced filtering, and push notifications, are now subscription-only features. Tapbots says that subscribers will also benefit from future updates as Twitter expands its third-party APIs and ensure Tweetbot’s continued development.

$6/year seems reasonable, though it’s not clear whether the Mac version will eventually require an additional subscription. It doesn’t replace the old app, so nothing is taken away from those who have already paid for version 5.

Juli Clover:

The update adds support for Twitter’s V2 API, adding interface options for polls and cards for the first time, and it tweaks the timeline view and adds support for more tweet data. There are new “@” and “#” buttons when composing a tweet, plus there are new app icon options and more UI themes.

Paul Haddad:

Not sure if its a new App Store rule, or just whichever reviewer we got, but they requested that we remove Tweetbot 5 from sale within 30 days of Tweetbot 6 going live.

And by request I mean wouldn’t approve until we agreed.

This is weird, though. Tapbots is trying to do the right thing by letting people keep using the old app, but Apple won’t let them fix any bugs that crop up?

Damien Petrilli:

The “value” provided by Apple. The new Tweetbot doesn’t show up in the results. I scrolled multiple screens and nowhere to be found.


Update (2021-01-27): Paul Haddad:

No Swift, No 3rd party code. I’m a dinosaur and proud of it. I’m also lazy and have no desire to rewrite a ton of perfectly fine working code.

Jonathan Deutsch:

Apple should have a separate “unlisted” state that does not allow new purchases or it to show up in search results but still:

  • Has an app page with the URL working
  • Allows updates to be downloaded

Every now and then I put Hype 3 back up for sale to let folks still on that version get updates in case they missed it.

Some v3 versions have a crash-on-launch with 10.15+ and we keep getting emails about it. It wouldn’t be a problem if they could get the update normally.

Paul Haddad:

The subscription “backlash” hasn’t been anywhere near as bad as I thought it’d be. Pretty sure the last time we did a paid upgrade (you know in 20 freaking 15) it was quite a bit worse.


I think a lot of the backlash on subscriptions is the prices being so apparently high. Seems like a lot of apps go with significantly higher prices when going to subs which I can see annoying people.

Philippe Hausler:

I am impressed with the perf improvements. It seems considerably smoother. Thank you! Well worth the small price for a subscription to keep quality software like this up and rollin.

Michael Rockwell:

I have some complaints about the new link previews, though. Each time I publish on my short-form site, IFTTT automatically publishes a tweet with the content of the post and a link back to This is all I want, nothing more and nothing less. But Tweetbot 6 generates a preview of the link. Sometimes.

Paul Haddad:

Twitter’s V2 API is still marked as Early Access, so we matched that as there’s still bugs in their API (though we work around most of them). Once they call it 1.0 or what not, we’ll remove the tag.

Nick Heer:

Tapbots’ ability to update Tweetbot is, alas, limited by how fast Twitter builds out its new more developer-friendly API. For example, while you can now view polls in Tweetbot, you cannot vote in them; it will prompt you to open the poll in the Twitter app if you try. You cannot view who liked a tweet or retweeted a post with a comment. You cannot search tweets from more than the last seven days. All of these limitations are on Twitter’s end and have nothing to do with Tweetbot specifically.

Paul Haddad:

Twitter actually lists a roadmap of their API. There’s no dates but gives a rough idea of what’s coming up. Access levels/Rate limits for some of the new stuff is not usable by us at this time, but it’s something they are looking at.

Update (2021-11-12): Paul Haddad:

I was asked in a couple very different contexts today if subscriptions have been working out. And yep they have. Barring a huge amount of churn or some unforeseen external changes we’re already at a long term sustainable level.

Update (2022-01-31): Tapbots:

It’s been exactly a year since we launched Tweetbot 6! Here are all the updates that happened to Tweetbot in the past year


While subscriptions are a controversial topic, it has allowed us to continuously make Tweetbot a better product. We are excited to make this year’s subscription worth it to you again.

The Business of MKBHD

Marques Brownlee:

I still edit 99 percent of everything. I have the motion graphics artist and cinematographer, Vinh and Brandon, who will just go in on eight hours of editing for the first seven seconds of the intros and fun stuff like that. But I’m 99 percent of the edit, I’m writing everything, and I think at the end of the day, it’s still my face and it’s still my presentation of my ideas.


There’s the ads that are built into YouTube through the AdSense program. That’s one version of it. You don’t really get to control those ads, but you can still have banner ads, you can have pre-rolls, mid-roll video ads, things like that. And there’s a whole ecosystem there where you try to find a balancing act between how many ads do you place? Do you put mid-rolls in your videos or not?

But then there’s also the integrations that you do control, which can be inside the videos. Sometimes it’s a pre-roll, you say “this video is sponsored by...” You have an integrated section inside of a video or a post-roll. You get control over that, which is often very beneficial because that’s way better targeting for the company who’s trying to talk to somebody. And then there’s all kinds of other alternate ways that YouTube channels make money. For example, we have a merch store.

SwiftUI Unit Testing

Alexey Naumov (via Peter Steinberger):

So I decided to build ViewInspector, a library that allows for inspecting the SwiftUI view hierarchy at runtime.


And as it turned out, there were many pitfalls waiting for me on the way:

  1. All types in reflection are erased to Any
  2. Computed properties, such as var body: some View, are not available in reflection
  3. Generic private structs and function types which are tricky to cast the value to
  4. Initializing a struct which all init methods are private
  5. SwiftUI dependency injection through Environment
  6. Property wrappers, such as @State, with an elusive storage for values
  7. Significant variations of the hierarchy after a tiny tweak of the input. For example, Text("Hi") vs Text(hiValue)
  8. Overall obscurity and lack of information about the private structures

In this piece, I want to share abnormal use cases and hacky tricks I had to appeal to when building this library using just the standard capabilities of Swift language.

Displaying the State or the Action

John Gruber:

In the Facebook/Android style, a down-pointing chevron is a button you tap to expand more content, and an up-pointing chevron is a button you tap to collapse it. In the iOS/Mac style, a right-pointing chevron (or triangle, depending on the OS) indicates the collapsed state, and a down-pointing chevron indicates the expanded state. The Android way, a down-pointing chevron means “will open, if you tap”; the Mac/iOS way, a down-pointing chevron means “is open, tap to close”.

Other cross-platform apps like Amazon’s Alexa do it the Android way, too.

Ken Harris:

The other common place that Apple uses “show state and imply action”, and which lots of third-party apps get wrong: padlock icons.

1Password had that backwards for over 10 years.

Another example of a button that double as status indicator is the “1x” zoom indicator in the iOS Camera app.

Nicholas Riley:

I agree with your point overall but note there is one standard macOS control that behaves the way you don’t like…

It can get confusing. For example, Mac toolbar buttons typically show the action rather than the state, e.g. the Mute button in Mail.