This past week I bit the bullet and made the leap I’d been subconsciously preparing myself for ever since I built my own PC: I switched to Android. In a storm of a weekend, I bought a Samsung Galaxy S21 5G, a Fitbit Versa, and ported all of my subscriptions (that had a twin) to Android or bought new ones. It was expensive, but so far so good.
There are a lot of things to like about Android. The choice in default apps is salivating having come from iOS, 120hz screens are a pleasure, and almost any app one could need has a competent counterpart. Except there’s a catch. After nearly 20 years and market domination, some major apps still suck on Android? Such an app is Snapchat. Which used to take horrible photos on my Samsung Galaxy s6 (not pictured, photos from my S6). Now it’s 20201 and its photos still look like their painted with custard?
We know the reason. The images captured on Snapchat for Android are screenshots, taken by the app, of what the camera sees. That’s why regardless of how nice or common your phone is your experience will be shit. And, regardless of what Android Police says, it won’t be perfect on your S21 either.
So, they take a screenshot instead of using the device camera. Why? Android’s had a pretty good camera API for years, it’s almost comical how easy it is to take advantage of newer APIs (> Android 5.0), and it’s not like devices lack quality cameras. Except, not every device has access to newer APIs. A common excuse for Snapchat is that it’s harder to develop for Android due to the vast quantity of devices and their variations. Here, that excuse rings true. Obscure devices might not support newer APIs and testing your app on devices you don’t have access to is dangerous, especially since, most likely, your users aren’t going to blame Android. They’re going to blame you.
We can’t know for sure why Snapchat develops how they do, but one probable explanation is to maintain feature parity with iOS and reach the largest possible audience. Taking screenshots is just the easiest and cheapest—in development time—method to maintain. And it’ll stay that way due to technical debt.