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.
If you’re going to write a native application for iOS devices, Apple would like you to use Swift, but you can also still use Objective-C.
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.
- Henrik Joreteg: Betting on the Web
- Andre Staltz: The Web Began Dying in 2014, Here’s How
- Parimal Satyal: Against an Increasingly User-Hostile Web
- Anil Dash: The Web We Lost
If we can somehow get a decent web app distribution channel, that would help. Right now you get a sort of built-in discoverability if you list on an app store. On the web, it’s much tougher to get customers. In my experience anyway—I have a web app/browser extension and a Mac app (Electron hehe).
When Win8 was first released, there was a huge push for HTML5/JS as a platform for native apps. It was one of the three options, the other two being .NET and C++; but HTML was the one that had by far the most visibility. It wasn’t just talk, either – a bunch of builtin apps were HTML-based.
Since then, there was a change of gears towards PWA instead of something Windows-specific. They’re no longer described as “native”, merely “like native”. There’s still a considerable push for them, though:
(note the section “Integrate PWAs on the desktop” in the ToC!)
“As soon as the Apple App Store (for iOS) became a thing, developers asked: why not web apps? Why go proprietary? Back in 2008, for that iPhone 3G launch with the App Store, it could have been argued that the web just wasn’t ready for it.”
This is wrong, backward in fact. Developers were asking for NATIVE app development, which Jobs either did not want or knew wasn’t ready. So Apple pushed Web apps hard, insisting that they were just fine for the vast majority of use cases.
There are legitimate reasons for native apps, most of which involve access to hardware or OS services. The thus-far-insurmountable security problems of Web apps preclude total reliance on them.
P.S. This form insists on hyphenating “insurmountable.”
Great post and thanks for bringing up search and customization, as I feel they’re underrated points in this conversation. Also “look up how to build native apps without websites amiright” is hilarious
I was producing my own iOS apps for 12 years and left the store in 2021 to go 100% web. Some ‘roadblocks’ I am working to improve include:
– a ‘App Store’ experience for web apps where people can get many apps without using a general search engine.
– universal ‘buy’ button so that it isn’t necessary to learn a custom payment thing per site / project
– better communication about how to ‘install’ (as too many people don’t know about A2HS)
– simple integrations with payment systems (for developers and customers) for PWAs
More about my experience here: https://ephemerata.rosano.ca/01fmeehzvr3n9q0rkrnf7y2d5c
I agree that much of what’s in the way has to do with poor standards support, but there are some things that can be done to improve UX, and maybe those could make a difference.
When webapps run on the phone: in a browser: its simply not the same as native apps. Nor from a usability standpoint; neither from a performace one (yes, even tho it might look like wasm is fast, its not asfast as a c executable, nor will be any future js library written, sorry).
Of course these are the tech reasons; then theres data collection. Which most likely is the main reason. On top if that, one could argue the lack of control (read: cash flow) over content in web apps by the big two could be a fourth reason.
Together all of these are i believe main reasons for it. In the end, web programming is but another paradigm; its probably a bit pretending to expect one paradigm to fit all possible use-cases out there.
I feel like “PWABuilder” should be mentioned: https://www.pwabuilder.com/
It makes building “native wrapper apps” for your PWAs (so they can be submitted to app stores) pretty trivial. I’ve done a few. It’s more work than just the PWA / website alone, but it’s FAR FAR less work than me learning the native platform languages and re-writing my app. For the most part, I just point PWABuilder at my PWA, config a few settings, and a minute later I’m downloading a built app package ready to submit to a store.
And in my experience, these kinds of apps are no longer treated as “second class citizens”. Google Play happily accepts them, as does Windows store (for desktops, since their phones/tables are dead).
Apple’s store has traditionally been a lot more finicky — only by policy, not technical limitation — but a number of apps built by PWABuilder have been successfully accepted and listed by Apple in recent months.
I wonder why React Native isn’t mentioned here, or given the credit/status it’s earned?
I haven’t built with it, but many have, and from what I can tell, they are mostly using “web like” development tools and processes, and ending up with true native apps that they then launch on the various app stores.
I don’t think I’ve heard of React Native apps being treated as second-class citizens in those app stores.
Moreover, I think there are other web-like native app builders to consider. For example, Socket: https://socketsupply.co Even if you don’t do any P2P networking (a strong point of Socket), it’s like a better version of PhoneGap/Electron/etc, where you’re building web tech and launching it in a webview with a native app wrapped around it. And Socket provides a set of web/Node like APIs for accessing capabilities that native apps expect but web apps never get, like full networking, full disk access, etc.
I think those kinds of “hybrid” apps definitely deserve to be thought of as using web tech, but living life as a first-class citizen in the app stores.
Ok, I made ✨ progress ✨!
Installed a small Share to Mastodon plugin which I hope works just fine, we’ll see with this post
Figured out a phone shortcut that takes me, through the mobile website, to easy note creation. Once again, the web does what the app failed to do.
Guess this afternoon will be writing time! But first, a bit of walking and fresh air. My poor brain is fried!
This Article was mentioned on brid.gy