There is always some degree of tension between “native apps” and “the web” as platforms.
If you’re going to write a native app for Android devices, well, I’ll quote from the Android Developer documentation:
Android apps can be written using Kotlin, Java, and C++ languages. The Android SDK tools compile your code along with any data and resource files into an APK or an Android App Bundle.
You’re not building a website. There are no web technologies listed there.
With the power of Xcode, the ease of Swift, and the revolutionary features of cutting-edge Apple technologies, you have the freedom to create your most innovative apps ever.
You’re not building a website. There are no web technologies involved.
As I recall, Microsoft was always the most friendly toward treating web apps as if there were native apps, listing them as first-class citizens in their stores and such, but I’m not sure how much of a thing that is anymore since they aren’t much of a player in the phones and tablets world anymore (although I do think the Surface Duo is cool). But surely a truly native Windows app is .NET and C# and whatnot.
If you want to build a native app across platforms, you’re either:
- Writing it as many times as platforms you want to support
- Using some middle-man software to write-once-compile-everywhere
Why do companies like Apple and Google want you to write native apps over web apps? I can’t pretend to know the minds of entire industry giants, but control seems like one easy answer. Especially for Apple, which has a long history of building operating systems and allowing developers to build apps that run directly on those operating systems.
Despite Steve Jobs’s original vision for mobile apps being web apps, the Apple App Store (for iOS) became a thing along with the 2008 launch of the iPhone 3G. We asked: why not web apps? Why go proprietary? It could have been argued that the web just wasn’t ready for it. Web tech back then pales in comparison to what we have now. But I think many people are hanging onto that vibe that the web isn’t as capable. Even if you point to specific instances of that being true, who’s to blame for that lack of ability? The same company, in all likelihood.
It’s less clear to me why Google/Android went the same route as native apps. Google has an awful lot of incentive to make the web as good as it can be and has largely done a good job of that. You can get Progressive Web Apps into the Google Play Store, but it’s a bit of a second-class citizen, which seems bizarre.
It’s only slightly clearer to me why a business would choose a native app over the web. I wrote up why I think a business might go that route about a year ago, and I didn’t even do a good job of convincing myself. The problem is mostly all the examples out there. All the biggest and best apps around have chosen the web. Figma, Slack, Discord, GitHub, Spotify, Netflix, you name it, the biggest successes have picked the biggest platform first: the web.
Still, one gets the feeling that if any of the huge platform-producing tech companies could have their way, they’d have us all writing proprietary apps for their platform only. Right this second, the web feels like it’s in a good spot, but it also feels like the native vs. web battle is a swinging pendulum.
Say, somehow, the web is dealt some massive blow, and native apps have all the momentum. What does it look like for the web to lose? As in, for native apps to somehow become the default choice for organizations building digital products.
- Us designers and developers would either have to re-specialize on one particular platform or spread ourselves thin, getting mediocre at many.
- There would be many good apps in just one of the walled gardens, leaving users feeling cheated that they have to choose and miss out no matter what they choose.
- We would all live under the rule of these closed, privately-held systems. If they don’t like you or your app, you’re gone. That’s how they work now, but with nowhere else to go, gone is gone.
- URLs are of the web, not native apps. URLs are what makes search engines a thing. Farewell to global, helpful search.
- Did you (do you) learn and debug from being able to inspect the source code of the very thing you are looking at? Not anymore.
- Isn’t it nice how really old websites are still perfectly available? The web does a wonderful job of backward compatibility. In a world of all native apps, one platform update can prevent any non-conforming app from running at all.
- Not that websites are notoriously amazing at performance but have you weighed your average app download lately? 50MB is on the small end. So much for the web helping bring digital connectivity to developing nations.
- If you sell the product, prepare to give up a sizeable chunk of every sale.
- Does it bring you comfort that the decision-making processes that guide the web are good-slow, because it prevents dangerous under-thought ideas? That’s how the open, collaborative web works, not private industry.
- Do you like the idea of being able to exert control over websites with things like user stylesheets and web extensions? That’s not a thing on native apps.
- Plus like, how do you even look up how to build native apps without websites amiright.
Anyway, it would suck, so let’s not have that happen. PWAs (Progressive Web Apps) are a perfectly good way forward, and Project Fugu has been doing well ensuring web apps “close gaps” on APIs needed on the web. What we need to press for is equal API access and capabilities for the web on all platforms and equal discoverability and distribution of web apps through app stores.
Better yet, let’s ditch the idea of native apps. All web! All web! All web!
Oh, and whenever Net Neutrality comes up in politics again, fight for it.