Skipping the App Stores: Why I Choose Web Apps and Direct Downloads Instead

As someone who dabbles in web development and has experimented with Android apps, I recently thought about trying my hand at iOS development. After all, mobile apps are where the money is, right? But I quickly ran into a massive roadblock: Apple makes it ridiculously hard to even get started unless you’re already deep in their ecosystem.

The biggest issue? You must use macOS to develop iOS apps. Apple’s official development tool, Xcode, only runs on macOS. That means if you’re on Windows or Linux, your options are to either buy an expensive Mac, rent a cloud Mac (which can be costly over time), or try some hacky workarounds like running macOS in a virtual machine—something Apple technically forbids.

This is in stark contrast to Android development, which works just fine on Windows, Mac, and Linux. Android Studio, the main development tool for Android apps, is cross-platform. Google doesn’t force developers into a specific ecosystem just to write code. Even Microsoft, which used to be notorious for platform lock-in, makes Visual Studio available for multiple operating systems. But Apple? Nope, you either buy a Mac or you don’t develop for iOS.

This hardware requirement is exactly why I haven’t published my desktop app, BibleApp, for macOS. People have asked me about a Mac version, but I simply don’t own a Mac, and I’m not about to drop hundreds (or thousands) of dollars just to build and sign an app for Apple’s platform. Instead, I released BibleApp as a Windows app at bibleapp.ca, where you can download it without restrictions.

But let’s say you jump through all these hoops and actually build an app. Now you have to deal with Apple’s gatekeeping. Unlike Android, where you can sideload apps or distribute them outside the Play Store, Apple forces you to go through the App Store. And to even submit an app, you have to pay $99 per year for a developer account. Meanwhile, Google charges a one-time fee of $25, and you’re good to go for life.

Then there’s the app review process, which is notoriously strict and inconsistent. Apple can reject your app for vague reasons like “not providing enough value” or for violating some obscure guideline that they apply differently depending on the day. And if your app competes with Apple’s own services? Good luck getting it approved at all.

And Apple isn’t the only problem. While Google Play is more open, it’s still a walled garden. I recently tried to publish my app, TeamPicker, to Google Play, and despite submitting it three times, it was denied every time because Google claimed I hadn’t tested enough. Now, Google requires at least 20 testers to use the app for 14 days before you can even request production approval. Instead of dealing with that, I converted TeamPicker into a progressive web app (PWA), which bypasses the Play Store entirely.

At this point, I believe websites, progressive web apps (PWAs), and similar technologies are the best way to overcome Apple and Google’s restrictions. Unlike native apps, web apps don’t require approval from app store gatekeepers, they work across platforms, and they don’t force developers to pay fees just to distribute their software. However, for apps that still work best as native downloads, there are other ways to distribute them. I took this approach with my Android app Verse, which I haven’t published on Google Play (for now) but have made available as a direct download from my website—allowing users to install it without Google’s unnecessary restrictions.

Both Apple and Google take massive cuts of revenue from developers, enforce arbitrary rules, and can remove apps at any time for any reason. The entire mobile app ecosystem is built around corporations acting as gatekeepers, and unless something changes, independent developers will always be at their mercy. But at least with the open web and direct distribution, we still have ways to build and share software on our own terms.


Comments

Leave a Reply

Your email address will not be published. Required fields are marked *