Gmail on iOS (and why it sucks)

Gmail on iOS (and why it sucks)

In my search for the perfect client I’ve tried several variations of client and configurations, and I’m going to lay out below why I think Gmail on iOS in it’s current state sucks. I’ve used the default Apple Mail app, which you can’t remove from the phone at all, the Gmail iOS app which was released sometime last year and immediately pulled again because of fatal errors (way to go Google! How much money do you guys need to develop a simple client for your ultra popular webmail service?) and the recently released Sparrow client after some positive experience using their desktop Mac client.

Mail

First let’s look at what the built in Mail app from Apple can and can’t do. This is the only iOS client that can download new email in the background without any further intervention. You don’t need to open the app to kick off a new download, the client simply gets new email as it is delivered to your inbox. You can optionally include a notification in various permutations. If you need to know about certain email in a rather timely fashion, there is simply no better solution as far as getting those messages in front of your eyes. However, for Gmail you only have two configuration choices on iOS. You can choose to set it up as a Gmail account, which does not allow push notifications or background polling at all, so the closest you can get is fetching new email every 15 minutes. For most use cases that’s probably fine, but it also means you can’t sync your contacts if you plan to use Gmail as your primary contact database (which I do because it’s fucking convenient to have all your contacts in one place). The other option is to set up Gmail as an exchange account, which does provide instantaneous push for new email (like BlackBerry has done for YEARS), and you can also sync contacts and calendars using this configuration option. The only downside here is that battery use is slightly higher because you’re getting email delivered constantly rather than in 15 minute batches. If you have a busy inbox it could make a pretty big difference in your battery life. No matter which of these two options you choose, the way that the Mail app handles emails is not that different. Under the default Gmail config, you’ll get an archive button instead of a trash can (delete) button, but the exchange setup can easily be configured to allow the delete option to archive messages anyway.

Apple Mail app

Mail app uses a “flag” for Gmail stars and the center bottom button is for archive (instead of delete)

The default Apple Mail client also has the ability to handle messages using IMAP folders which then map back to functions in Gmail. There are the special folders like Important, Spam, and Starred, and then there are also all your labels as folders. So it’s nice that you can at least apply a label to an email, but that also archives the message (removing it from your inbox) and you can only apply one label at a time. If you try to apply a second label, the email is essentially “moved” into another folder. It’s a limitation with the workaround of using IMAP rather than the Google Gmail API. I also use a ton of filters for various automated emails (think nagios) and they are left unread but shuffled out of the inbox so that my phone isn’t constantly buzzing. In the Gmail web client, I can see the number of unread messages which have been filtered to a certain label, which isn’t something that Apple provides in their Mail app unless you specifically choose to sync that IMAP folder to your phone, which obviates the whole reason I filter messages out of my Inbox in the first place.

Apple Mail app doesn't show unread count on "labels"

Apple Mail app doesn’t show unread count on “labels”

Another pain point here is that none of the folders displayed in the Apple Mail app have any colors. I have many of my labels configured in my Gmail web client with meaningful colors so I can quickly identify them without having to read the text, and it’s unfortunate that this can’t be carried over on Apple’s Mail client, but my understanding is that Google doesn’t provide a method in the Gmail API to determine label colors anyway. The other annoyance I have with the Apple Mail client is that while it does allow you to apply a flag (which translates to a Gmail star) it takes three taps inside a message to do so, or you can do it in four taps while you’re looking at the multiple message view. In the Gmail web client it is as simple as clicking (once) on the star icon or tapping the “s” key if you have Gmail keyboard shortcuts enabled. Despite these annoyances I still find Apple’s Mail client to be the best solution for me so far if only for the fact that all messages are downloaded and waiting for my response when I open the client, so there is no delay when I decide I want to do some email triage. I just open the app and start archiving, labeling, or starring messages depending on what I plan to do with them. One last minor quibble I have is that Gmail does not expose lab features through the IMAP functionality, so there is no way to “mute” a message from the Apple Mail client, or any other IMAP client for that matter. As far as I can tell, there is no reason they could not merely make the special Mute label another IMAP folder, but so far there is no sign that they are going to do this.

Other highlights/lowlights: Mail includes up/down arrows for quickly jumping from one message to another without having to go back to the list of all messages first. This saves a shitload of time each day as I go through email and archive most of it, marking only a few for followup or further reading.

Gmail for iOS

When Google finally released a native iOS Gmail application, I was extremely excited! I was looking forward to getting full Gmail functionality (stars, labels, filters, etc.) from a native iOS application. It is amazingly stunning how poorly Google executed on this app. First of all, I do have to give credit that all functions available in the Gmail web client are available on the iOS client, I can star, label (and I can see the correct label colors), mute, archive, delete, the whole shebang.

Gmail for iOS

What a novel idea, make starring an email one tap away, and show me the full label name/color in the message list!

It also provides the superior search that Google is known for, and they do display counters on every single label with unread messages. This is also the only iOS client which will actually display the labels applied on a message in the list view, which I greatly appreciate. However, there are many ways in which this app is crippled. The most obvious thing is that it only loads the first 10 emails, just like the mobile version of Gmail, so if you have a backlog and you want to read your messages from oldest to newest (I do, and I do) you better like tapping “Show more messages…” a bunch of times.

Gmail for iOS limitations

Show more messages…UGH

The second most annoying thing about using this app is that it’s actually just loading their HTML5/JS mobile page in an iOS wrapper with a few special buttons on it. This means the app does not have the look or feel of a native iOS application. The bounce when you reach the top of a list is “wrong” and the scrolling physics are very different. In addition, they have this asinine scribbles feature. Seriously? I am NEVER going to use a mobile email client to draw something with my finger, WTF? Another way in which this app is broken is that when you scroll to the bottom of the list of all your labels (I have about 50) you can’t tap the top iOS status bar to quickly jump back to the top (where the Inbox is).

Unread counts

Unread counts on individual labels!

My final problem with the official Google Gmail app for iOS is that push notifications are completely broken. For whatever reason Google has not seen fit to code their app so that it utilizes “Notification Center”, which is basically all the ways that Apple ripped off Android in order to mangage and display new notifications. All that being said, I would fucking love using this app if they allowed me to connect more than one account at a time!

Other highlights/lowlights: Since Gmail for iOS is not a client but a wrapper for their mobile website, there is no syncing necessary, and there is something to be said for that, despite the fact that you have to load 10 messages at a time in a long list.

Sparrow for iOS

So after all the frustrations experienced using the default Apple Mail client and Google’s own Gmail app, I was holding out hope that the team at Sparrow would pull through and make a really great iOS app. They didn’t. Almost, but not quite, or at least not enough to satisfy my personal needs. First of all, I have to admit that I had been going to their coming soon page on a daily basis in anticipation of the initial release of the app. I may not be a fair judge because I had such high hopes that this app was going to end all my suffering when using email on iOS. So let’s dig in. At first glance the app is very nice looking, and has a great design flare. Unlike the Gmail for iOS app, it’s fully native, so scrolling, the end of screen bounce, all sliding and animations are fluid and beautiful. The experience of manipulating the app is excellent. My first problem is in the display of the list of messages.

Sparrow for iOS

Label colors don’t sync, only one label is indicated in the upper right corner, but what the fuck label is it? Who the fuck knows?

As mentioned earlier, there is no way for the Sparrow for iOS app to sync the actual colors I have meticulously assigned in Gmail, so right off the bat that is annoying because I can’t rely simply on color to help identify which label is applied to an email, and since they don’t provide the text from the label, it’s pretty much useless as any kind of indicator except “there is a label on this message”. In addition, even if there is more than one label applied, Sparrow can only show the color for one label in the message list, and I’m not even sure how they determine how to do that, but the point is there is information here that is not available at all using this client. You’d think then that at least if I went to an individual message it would have a way to show me the actual label name, even if the color is all wrong, but no. The individual message view completely ignores labels entirely, as if they don’t exist at all. I guess the idea is that if you’re reading the actual message you’re beyond the point of needing to know how it’s labelled, but there are many messages which already have one label applied and I want to add a second, but I have NO WAY to tell which is applied or not applied using this app. I am the kind of person who needs meticulous control of stuff like this, to the point that if Sparrow let me edit the colors of the labels in their iOS app (like they do on the desktop client) I would definitely go through each label and match the color as closely as possible (like I did on the desktop client). Unfortunately, it only appears you can modify an existing label’s name, not color. Some other annoyances include the fact that I can only apply a label from the list view (not inside an individual message when I might be more likely to actually have a clue as to what I want to label the message as), and in order to apply a star it takes at least two actions (in list view, a swipe and then a tap; in full message view two taps) and this is opposed to Gmail where again it’s one tap in the iOS client and in their mobile Gmail interface. I would much rather have the full static bar along the bottom with the buttons exposed in the individual message view, which would eliminate the need for a second tap on common functions like star. I would also prefer if the individual message view replaced the “new mail” button with a label button, so I could apply labels without having to go back out to the list view, swipe to expose the buttons beneath the message, and tap the label button to view the available labels and then finally tap to apply a label. Although Sparrow is made specifically with the Gmail API in mind, apparently Google also doesn’t expose the labs functionality to the API, so there is no way to mute a message from the Sparrow email client either. They also have no way to continue fetching new email when the app is not in the foreground, and that makes it dreadful to open the app when there are a few to a hundred emails waiting, meaning that you’re waiting several minutes just for the privilege of seeing what your unread email looks like. They also currently do not have push notifications, but that is apparently coming in an update soon. It doesn’t really matter to me anyway, because push notifications still doesn’t mean the app will be able to download new mail in the background so I can just blast through it when I’m ready without having to wait for it all to download.

Other highlights/lowlights: One thing that drives me fucking crazy about Sparrow for iOS is the fact that the method for moving between various conversations is to scroll to the very top or bottom of a message and then keep pulling in the same direction. In long threads, getting to the top again is easy because you can tap the middle of the status bar, but getting to the bottom has no shortcut, and the other email clients discussed here include buttons for this. In addition, since the same method is used to move between threads in a conversation as well as full conversations, you sometimes end up having to go back up through multiple replies to get to the next conversation, or go back to the list of messages to choose the next conversation. The whole thing could be implemented more elegantly and without much effort, and without changing the way the app works. The really frustrating thing about this is that in a full on message view, they could have used left and right swipes to move between conversations since that was not a method that existed. I specifically expressed to the developers that I thought this was the best method, but they decided to implement something different. I think the application is beautiful and well built, but some of the UX choices they’ve made are not the most efficient use of taps, swipes, and slides. I understand the choice to put the buttons inside another button in message view in order to show more of the content of the message, but it means every time you read an email that you want to star, you have twice as many taps to make.

Unfortunately, for now it looks like I’ll stick to using the default Apple client because yet again Apple has hamstrung developers from being able to provide the same functionality. I wish they would at least open up some of the private APIs that they are obviously using for stuff like downloading new mail in the background so a better Gmail client could be produced. Each of these clients have their strengths and if they could all be combined into one super client I would easily pay $10-20, it’s that important to me.

Also, I’m not writing this because I’m a curmudgeon, but because I deeply care about this issue and because these clients all have great things going for them, which makes my frustrations amplified.