This week’s issue kicks off with Adam Engst figuring out how to restart automated posting of TidBITS headlines to Twitter after WordPress was forced to pull that feature by Twitter’s exorbitant pricing changes. As a bonus, you can now follow TidBITS on Mastodon, too! After that, Adam turns his attention to explaining why he uses Mimestream, a Gmail-specific email app for the Mac that has emerged from a multi-year public beta with its 1.0 release. Finally, Apple says it’s shutting down My Photo Stream soon. Notable Mac app releases this week include BBEdit 14.6.6, Carbon Copy Cloner 6.1.6, Mellel 5.1.4, SoundSource 5.6, Fantastical 3.7.14 and Cardhop 2.2.7, and Final Cut Pro 10.6.6, Compressor 4.6.4, and Motion 5.6.4.
As part of Elon Musk’s not-so-secret plan to drive Twitter into the ground, the company recently rejiggered the pricing for API access for developers, raising the cost for enterprise-level access from free to a minimum of $42,000 per month. You wouldn’t want it to be easy for publishers to post their content on Twitter, would you?
That new level was both prima facie ridiculous and financially infeasible for companies like Automattic, makers of WordPress and the Jetpack plug-in that enables automatic social media sharing of posts. Automattic turned off the option to post to Twitter in Jetpack and said it would add the capability to share posts to Mastodon and Instagram.
I’ve used Jetpack to post TidBITS articles on Twitter and Facebook for years. Despite the hoopla about social media, neither the impressions nor subsequent engagement has ever been more than a drop in the bucket of TidBITS traffic or conversation. We see about 200–500 views per post on Twitter, while Facebook posts average 100–300 views. While those numbers seem low, clickthroughs are even worse: Google Analytics tells me that social media accounted for just 1.64% of TidBITS traffic over the last year. Unimpressive though those numbers are, they took no work to generate, thanks to Jetpack.
However, Jetpack has now stopped posting our articles on Twitter. My initial reaction was, “Good riddance!” I was prepared to leave Twitter entirely. But, although this breakage was an excellent opportunity to drop Twitter like the rotten potato it has become, I couldn’t help wondering if there was an alternative way of posting TidBITS articles on Twitter for free. It wasn’t worth anything to me other than the time spent scratching an intellectual itch.
Some research showed that the social media management service Buffer still offers a free plan for three channels, whereas competitor Hootsuite has only paid plans. Because the raison d’être of both is to post to social media, they are either unaffected by Twitter’s enterprise pricing changes or have decided to absorb the cost increases.
But how to get TidBITS articles into Buffer’s queue automatically? Just as I’m unwilling to pay anything to post to social media, I also refuse to do any ongoing work to make it happen. If it’s not automated, forget it.
Initially, I gravitated to the automation services IFTTT and Zapier, which I think about periodically even though neither has ever actually solved a problem for me. That has continued to be true because even though both claim to be able to bring in a WordPress post and send it off to Buffer, neither proved capable of logging directly into my WordPress server. Zapier also recommended its WordPress plug-in, but I passed since it hasn’t been updated in a year and has only two stars, with multiple users claiming it doesn’t work at all. IFTTT and Zapier remain options for blogs hosted on WordPress.com that can’t install plug-ins, assuming you can get them to log in.
However, I quickly found the WordPress to Buffer plug-in, which has 4.5 stars and was last updated a week ago. After my developer installed it, it took me just minutes to connect to my Buffer account and configure WordPress to post to Twitter. It has a Pro version with additional features that costs $39 per year, but none of the extra features seem necessary for my setup.
As a bonus, Buffer and the WordPress to Buffer plug-in now support Mastodon, so I also set up and connected a TidBITS account there. If you’re using Mastodon and want TidBITS headlines in your feed, follow us at
Finally, curious about what was happening with our posts on Facebook, I visited our Facebook page and discovered that something caused Jetpack to stop posting to Facebook after March 2023. No one has apparently noticed or at least mentioned it to me. Since I was goofing around in Buffer anyway, I set it up to post to Facebook and turned Jetpack’s reposting service off entirely.
While part of me wants to kick social media to the curb entirely, I’d feel bad for the people who like seeing TidBITS articles in their feeds. So as long as posting TidBITS articles on social media remains free and automatic, I’ll keep it going.
I regularly use beta software but seldom write about it in TidBITS unless it is sufficiently stable, feature-complete, and interesting. Most recently, I went in-depth on the beta Web browser Arc because, well, the title of my article says it all: “Arc Will Change the Way You Work on the Web” (1 May 2023). I noted there that Arc had become the default dashboard for much of what I do, so much so that I had moved my email to my secondary screen.
The Gmail-specific email app Mimestream is what I want to tell you about today. We’ve been writing about its betas for years, starting with Julio Ojeda-Zapata’s “Mimestream Brings Gmail Features to a Mac Email App” (25 September 2020) and continuing through numerous Watchlist updates. In some ways, it’s hard to remember that Mimestream has been in beta all this time, given how much time I’ve spent in it since switching to it in November 2020.
But beta was the correct designation for Mimestream. Even though I’ve used it as my daily driver, I also submitted 46 bug reports and have had numerous discussions with developer Neil Jhaveri about interface intricacies and email oddities. At first, he was the only person working on Mimestream, but as he got closer to completing his checklist of core features, he brought on additional people, building a team of five.
Mimestream has finally emerged from beta, with version 1.0 now available for download and promoting ten new features (plus a discount) to encourage both its 167,000 beta testers and newcomers to become paying customers. For Mac users who rely on Gmail, I believe it’s the best email experience available today.
Mimestream relies on subscriptions, charging $49.99 per year with a 40% first-year discount for those who subscribe before 9 June 2023, dropping the price to $29.99. Some will be perturbed that Mimestream is not free and has no one-time purchase option, but real software costs real money, particularly when it doesn’t monetize your eyeballs or personal information. I asked Neil Jhaveri about the subscription approach, and he said that there was no alternative, given issues with the Gmail API and the need to keep up with Apple’s frequent changes to the Swift and SwiftUI technologies underpinning Mimestream. He makes a strong case for the subscription model, and in the end, Mimestream can thrive only if it’s financially successful.
Gmail All the Way Down
Before I get into the details of why I’m using Mimestream over free alternatives like the Gmail Web interface or Apple’s Mail, it’s worth saying a few words about what being a Gmail-specific client means, given that Gmail bundles the client and server aspects of email together. Mimestream is an alternative front end to everything in Gmail: messages, addresses, filters, settings, and more. If you ever think something is off in Mimestream, you can open Gmail in a Web browser to see how it compares. In fact, menu commands let you open any Mimestream message in Gmail directly or copy a URL to it. I sometimes link to those email conversations when I leave myself notes or reminders.
Mimestream communicates with Gmail via the Gmail API, not IMAP, which eliminates one of the things I dislike about IMAP clients: the process and inevitable delays in checking email. With Gmail—and thus with Mimestream—a message either exists or it doesn’t; there’s no checking. When I haven’t opened my MacBook Air for a while, it can take Mimestream a few seconds to sync up with the current state of Gmail, but at most, I notice a few messages shuffling into place at the top of my Inbox. Typically, when I move from one Mac to another, Mimestream looks exactly as I left it on the other machine seconds ago.
Of course, the downside of a Gmail-specific client is that you can’t use it with any email service other than Gmail. Full IMAP support is on Mimestream’s roadmap, though it may require more work than it might seem because of Gmail’s significant architectural differences from IMAP. Regardless, if you want to see IMAP support in Mimestream, I encourage you to vote for it and other features you’d like to see in the future. It’s refreshing to have such transparency and input into the direction of an app.
Unlike Web browsing, where every site is different and everyone works in their own special way, email is quite prescriptive. You start from a collection of messages (which Gmail organizes by labels and IMAP-based services do with mailboxes), scan summaries in a message list, and read the messages that interest you. Most messages can be deleted or archived. Many require a reply, and some may need to be forwarded or filed in a different collection. And, of course, you must be able to create and send new messages.
Meeting these needs has caused most email apps to settle on a set of interface elements that work well for differentiating between collections of messages, a list of message summaries, and the messages themselves.
Mimestream hews closely to what you’d expect from a multi-pane email app. That’s unsurprising given Neil Jhaveri’s background leading engineering teams that worked on Apple’s Mail and Notes. You won’t have trouble getting your bearings the first time you launch Mimestream.
The sidebar at the left contains Gmail labels, the message list in the center displays concise summaries of the messages associated with the selected label, and the optional viewing pane at the right shows the full text of the message. Any message can be opened in a separate window by double-clicking it in the message list. Similarly, replies and new messages appear in their own windows.
Where Mimestream shines is in its attention to visual form and functional detail—the small interface elements and features that make working with email feel familiar, fluid, and fast. I spend hours per day in email, and while I’m willing to tweak my working habits slightly to match what an app can do, I prefer it to accommodate my idiosyncrasies.
For instance, I seldom delete messages. My Google account has plenty of space, and Gmail’s performance doesn’t degrade with massive email stores, so I prefer to keep everything for posterity and focus my attention on unread and starred messages. So it’s vital that my email client supports that approach rather than pushing its own concept of Inbox Zero or whatever philosophy it might have.
I can’t predict what refinements and affordances will make working with your email a joy, so I want to share some of what I find compelling about Mimestream. Many of these aren’t unique, they’re just very well done, and the result is that using Mimestream feels like driving a well-engineered automobile instead of a low-end car that feels like it was assembled from cheap, off-the-shelf components.
Gmail Keyboard Shortcuts
Because I switched to Gmail from Eudora, I had to learn entirely new keyboard shortcuts. Even though I relied for years on the Gmail-specific client Mailplane, which encapsulated the Gmail Web interface in a Mac app window and provided Mac-like shortcuts, I chose to learn Gmail’s keyboard shortcuts so I could also use Gmail in a Web browser without difficulty (see “Zen and the Art of Gmail, Part 4: Mailplane,” 16 March 2011).
Gmail’s keyboard shortcuts feel as though they evolved from a Unix editor ancestor; many don’t require a modifier key and would conflict with standard Mac shortcuts if they did. For instance, the Gmail shortcut for creating a new message is just C. Mark Unread is Shift-U, Reply to All is A, and adding a star is S. I won’t say they’re faster or better; they’re just guaranteed to work in Gmail and Gmail-focused apps.
Mimestream acknowledges that many users come from the Gmail Web interface and may prefer Gmail’s keyboard shortcuts. In Mimestream > Settings > General, you can tell Mimestream to honor Gmail keyboard shortcuts. Those migrating from Apple Mail can choose that set, and if you have no opinion, you can stick with Mimestream’s default set.
A Clean Message List
Even though I read every personal message I receive, plus most in the mailing lists to which I subscribe, I still want to be able to scan the message list quickly and accurately. That’s especially important when looking through the results of a search. In Mimestream > Settings > Sidebar & List, Mimestream offers four different levels of information density for the message list.
- Dense includes just the sender’s name, as much of the Subject line as fits, the number of messages in the conversation, and the time (if in the current day) or date of the most recent message in the conversation. Mimestream converts the date to “Yesterday” when appropriate and displays the dates of unread messages in blue.
- Compact goes one step further to include some of the first line of the most recent message, along with the label(s) associated with the conversation.
- Default is exactly like Compact but replaces the paperclip icon that indicates an attachment with a line listing its name.
- Expanded provides another row to hold more of the first line of the most recent message in each conversation.
I prefer the Default option. Dense doesn’t work for me because people are terrible about descriptive Subject lines. Compact is fine, but I appreciate the extra hint in Default about attachments. And while I understand the idea behind Expanded, it wastes more space than I prefer.
There is no right answer here. I appreciate that Mimestream meets you where you prefer rather than forcing you to accept its opinion of the “best” information density.
Also, note the careful design work surrounding the different types of information. When it’s helpful in a conversation, Mimestream truncates the sender names to just their first names, which is how most of us would think of them anyway, and it bolds them since the most important fact about a message is likely who sent it to you. However, the number of messages in the conversation isn’t as significant, so it’s displayed in a much lighter color. The Subject of the message is in a regular weight to indicate that it’s slightly subordinate to the senders, and the first line preview matches the lighter time and date text. By dropping the darkness of the text within each conversation summary, Mimestream does an excellent job of differentiating the summaries without having to add anything more than a faint horizontal rule between them.
Two commands in the View menu let you display message size and show a Gmail importance marker, but both must be jammed into the first line of the conversation summary, significantly reducing the amount of space for the sender names. I leave them off.
Finally, note that Mimestream lets you set the width of the message list to (almost) whatever you want. What makes the most sense for you depends on your eyes and screen size. And, of course, you can change the text size used throughout the app using the text slider in Mimestream > Settings > General.
Filtering the Message List
As noted above, I rarely delete messages, relying instead on the read/unread state to determine which messages appear in the list. Mimestream supports that well with its message filters, which focus on the most common reasons to hide or show messages in the list: Unread, Starred, and Important. Unread catches new messages and those you mark as unread to keep around; Starred collects those you’ve starred; and Important displays those that Gmail’s algorithm has identified as important for you (more on that shortly).
Message filters aren’t unique, but I find that Mimestream’s hit the sweet spot of just what I need to control what appears in my incoming mail stream and messages still in play.
Because I’ve adopted the Gmail search mindset, I don’t do a lot of filing of messages—I can find nearly anything I want with a quick search. I have Gmail automatically assign labels to mailing list messages and predictable order receipts, and I manually label things like registration codes. But for the most part, I’m happy to treat most of my email as a searchable stream.
Until recently, I used the Gmail inbox categories (below left), which automatically sort messages into Primary, Social, Promotions, Updates, and Forums categories. Mimestream lets you enable each of these on a per-account basis in Mimestream > Settings > Accounts > Inbox Categories. I gave up on the inbox categories because I found myself clicking each in turn whenever I wanted to see what was new in my email—I couldn’t just ignore one of the categories in case it contained something important. Plus, running through each of them and back to Primary hid the read messages for my next pass—Mimestream only hides read messages no longer caught by the filter when you switch to another label or toggle the filter button off and back on (which is slower).
When I turned off the inbox categories (they’re still accessible in the Categories folder), I worked briefly with just the Inbox and Starred labels, switching between them to refresh the filter status of the Inbox label. That was effective, but then I discovered the Important label (below right). Gmail automatically assigns Important to incoming messages based on the contents of the message, the people involved, past replies, and more. (Priority flags that other people assign to messages in their apps are irrelevant; no one can game the system so their messages are marked as Important.) So now I’m trying to see if I like having my most important messages separated out or if I’ll have to check both Important and Inbox every time I check email.
Regardless, I appreciate Mimestream’s flexibility about what appears in the sidebar. Those with multiple accounts may find the sidebar more cluttered, but I hope you can configure it in a way that makes the most sense to you. (As an aside, Mimestream can now collect multiple accounts under profiles that let you specify different notification schedules and integrate with Focus Filters. I don’t currently need the feature, but I hear it’s popular with those who juggle multiple accounts.)
Search and Addressing Auto-Complete
The most common searches I do are for people because I know when a conversation involved someone specific. Mimestream’s search field isn’t unusual, and although its Gmail-powered searches are speedy, there are a couple of seconds of delay as it receives and displays the results. However, what I like most about Mimestream searches is how smart they are about auto-completing addresses, a feature that applies when addressing messages.
Many people have multiple email addresses, but Mimestream does an excellent job of ordering them by frequency of use. So when I search for Tonya, Mimestream’s first suggestion is always [email protected], not her Cornell address, Gmail address, or one of her iCloud addresses (below left). Underneath her addresses come other people whose names or email addresses contain “tonya.” Plus, Mimestream makes suggestions based on the search string appearing in the Subject line or attachments.
When addressing messages, Mimestream starts with recently used addresses, properly ordered, and then pulls from Apple’s Contacts database, Google Contacts, and other addresses found in your email (below right). While I appreciate how deep Mimestream goes when looking for addresses, I’m mostly grateful that the one I want is nearly always the first choice, which is often not the case in other apps.
One minor note about searches. I believe that when you select a label and then start a search, the search should be constrained to that label rather than doing an All Mail search that must subsequently be constrained to the already selected label. When I made that point to Neil Jhaveri back in 2021, he initially agreed with me. Apparently I’m weird, though, and the change confused other users, so he switched it back so all searches apply to All Mail initially. If you’re weird like me—and Neil says no one else has complained, imagine!—you can have searches constrained to the selected label by entering this command in Terminal. It reminds me of Eudora’s hidden x-eudora-settings options!
defaults write com.mimestream.Mimestream ScopeSearchToCurrentFolder -bool YES
Mimestream handles conversations exceptionally well. Let’s say you open your email to find a conversation that has been going on for a few messages. Since you haven’t seen them before, they’ll all be expanded so you can read them. As the day progresses and the conversation accumulates more messages, subsequent views display one of two approaches.
When there are just a few already-read messages or a starred message (which is always expanded) appears in the middle, you’ll see a compressed display of only the first line (below left). Click anywhere in that row to expand the message; click anywhere in the header area of an expanded message to compress it again. Once enough read messages are present, Mimestream switches to an even more compressed view with a numeric indicator showing how many messages are hidden entirely (below right). Click the number to expand those messages to the first-line view.
The button in the upper-right corner lets you expand all the messages to their full size and, once in that state, switches so you can compress them down again. It’s handy when you need to scan through an old thread to refresh yourself on what was discussed.
Some conversation view interfaces force you to reply to the thread’s last message, which isn’t always appropriate. With Mimestream, you can click any message to expand and select it, after which the Reply and Reply to All shortcuts operate on that message. (As you can see above, each expanded message has its own buttons, too.)
Those are some of the broader reasons I’ve been enjoying using Mimestream, but plenty of other little features in Mimestream make a difference for me, too:
- Because of my reliance on unread messages, I like some control over how quickly a message is marked as unread. Too fast and I can lose track of a message; too long and reading it isn’t sufficient. Mimestream provides complete control over that delay in Mimestream > Settings > Viewing.
- If you select text in a message, Mimestream can quote it, quote the entire message, or ask you which you prefer. There are times I appreciate being able to quote a selection.
- Undo Send is one of my favorite features in an email client—I frequently remember something to add or change right after sending a message. Mimestream lets you set the delay before actually sending up to 30 seconds. You’ll find it in Mimestream > Settings > Composing.
- Gmail’s filter interface is terrible, and while Mimestream’s doesn’t introduce any new features, it’s easier to use. Look for it in Mimestream > Settings > Filters.
- Although I need it only infrequently, I find Mimestream’s vacation response interface easier than Gmail’s. It’s in Mimestream > Settings > Accounts > AccountName > Vacation.
- Finally, Mimestream supports Markdown substitutions, so you can apply bold and italic formatting, create lists, quote text, and format text as code with familiar Markdown tags. I use this all the time for lists and quoting in particular. You can disable it (and other substitutions) in Edit > Substitutions if you don’t like it.
Will Mimestream fit the way you think about and work with email? I can’t say, but if you use Gmail, I encourage you to give its 14-day free trial a chance to show you what it can do. Since Mimestream is an alternative front-end to Gmail and all your data remains in Gmail, there’s no downside in seeing if you like it.