The Iowa Caucus Mobile App Disaster

By now I assume most of us have heard about the fiasco surrounding the Iowa Caucus. For those of us now in the United States, Iowa had a caucus. No big deal, right? The problem began when they decided to pay a company $60K to build a mobile app for transmitting the caucus count. And that is where the problem began.

Where to begin? First of all, the app wasn't in Google Play or the App Store, forcing users to download the app from TestFlight and TestFairy. When I read that my mind exploded a little, and I'm pretty sure it did some damage. What does this mean?

TestFlight is an app by Apple for side-loading the app onto the device. Typically, it is used to test an app by engineers and quality assurance. Engineers ready the iOS app, upload it to TestFlight, an Apple service, and shortly the app is available for download on iPhone devices that have TestFlight and are linked to the company's corporate account. This makes testing a little less stressful. No emailing an app, uploading the app via FTP/SSH/whatever, etc.

The problem? TestFlight isn't really appropriate for end users. I stress appropriate. As in, it's mind-boggling why Shadow would have users bother with downloading TestFlight, getting it set up, then downloading and installing the Iowa Caucus app. It just blows my mind. Why?

Why? Because they didn't have enough time. You see, after an app is complete, engineers send the app to Apple for approval. The approval process can take anywhere from 3-5 days, 3-5 days too early for Shadow to finish the app. So instead of ditching the app altogether, as they should have done, they decided to continue building the app, giving them 3-5 more days to finish the project. Time they apparently needed.

Because they couldn't submit the app, say, a week before the caucus for Apple to approve, they had the backup plan of using TestFlight.

(I'm using Apple and TestFlight here as an example, but the same applies to Android and Google Play.)

That was a terrible idea. Yes, maybe engineering and QA know how to use TestFlight, but asking end users to do this is beyond absurd. One giant, error-prone step.

Let's talk about another mistake engineering made: the decision to use React Native.

On my YouTube channel, I teach only Kotlin, the latest and best programming language for building Android apps. For creating iOS apps you should use Swift. Does this mean that you need to learn two separate programming languages to create an app most of the US can use? Yes. Well sort of.

There is another solution: use React Native, a cross-platform solution for building a app once, and exporting it for both iOS and Android phones. The upside to React Native is that you build once, deploy everywhere (iOS and Android). The downside? It's just wrong. Wrong for everything except for the most basic app.

Let's talk about design. The designs look like they're from the 1600's with a touch of 1950's. More on that in another post, if I have time.

Then there's UX. Just terrible. I don't have time to finish this post, tweet me if you want more.

By Daniel Malone

Daniel Malone is an Android Developer in Austin, Texas. He enjoys writing code, whether it be HTML, CSS, JavaScript, PHP, Java, XML or Kotlin. Daniel started writing code at age 12. By the time he was 15, he had a technology news website that received about 200 visitors a day. His first computer was a Dell Dimension 3000, with an 80GB hard drive, 512MB RAM and a broken DVD drive.

Leave a Reply