I think they will win in the long run, and will eventually
(~5 years) become the dominant type of app in mobile and
desktop app stores.
Am I the only one who remembers people saying this EXACT thing about Java Swing apps? Not saying it's impossible, but "Write Once Run Anywhere" has been a mirage "just over the horizon" for a long time.Maybe Java fans, or Sun/Oracle employees and fanboys said that. That doesn't really mean much.
I did predict years ago that open web technologies will destroy native (desktop) apps, Flash, and Silverlight. In hindsight, I was correct.
I am predicting the same thing with regards to native mobile apps: they will largely disappear, and web apps will again win.
(I say this with first-hand knowledge: several years ago when plugins were still common, I gave the final talk to a Silverlight user group in Minneapolis, in which I told the crowd there was simply no reason to continue using plugins. HTML5 won, and mobile only finalized its success.)
Just as open web technologies ate Microsoft's lunch, undermining the domination of Windows, I predict the same will be true of the Apple (and Google) app ecoysystems. More and more, operating systems are simply environments in which to run web browser. I believe this trend will continue.
As late as 2010, Apple was still getting beat up about the iPad not supporting Flash.
HTML 5 was not popular a "few years before 2007". Android users were still touting being able to (barely) use Flash as late as 2010.
It also wasn't "open jtechnologies" that caused Windows to be less relevant. Windows still commands 85-90% plus of the desktop. Mobile caused the desktop to be less relevant.
But, how do you reconcile this belief with the ample evidence you offer that Apple/iOS are dragging their feet and are resistant (for whatever internal reasons) to letting PWAs offer a first class experience?
In other words, what forces, in your view, will eventually bring Apple over to full support for PWAs?
Although it does seem to be this way, you can submit an app to the store without being a registered, legal company. The most common route is to just mark yourself as a sole proprietorship using your own name. No need for an LLC or anything. However, this may vary from country to country.
I had to get a DUNS number to apply to the app store. And it had to be an LLC (I think?) and not a sole proprietorship.
I initially just wanted to use a "DBA" (doing business as) but they don't allow those anymore, they used to in the early days but no longer.
A DUNS number is only required for organizations, not individuals.
I suppose I could have just used my name though.
https://blog.twitter.com/engineering/en_us/topics/open-sourc...
I've been using it on Android for a while. It's not perfect, but it's definitely good enough. There are still plenty of apps where I'd tell a CEO, "No, we really need three sets of client developers," but the number is certainly dropping over time.
iOS: You have to use Cordova plugins. I used RemoteCommand[0] and NowPlaying[1] that lets me write JavaScript that calls into native iOS functionality. Once the Cordova plugins are installed, you write JS to talk to them. Source code for that here[2].
Android: Google has submitted a web standard[3] for this. Integrating with it is simple[4].
Windows: Microsoft automatically injects the Windows API into the JS global namespace. So you write JavaScript that looks like window.Windows.Media.SystemMediaTransportControls.doSomethingHere(). You can see the code for that here[5].
[0]: https://github.com/leon/cordova-plugin-remotecommand
[1]: https://github.com/leon/cordova-plugin-nowplaying
[2]: https://github.com/JudahGabriel/Chavah/blob/master/Chavah.Ne...
[3]: https://developer.mozilla.org/en-US/docs/Web/API/Media_Sessi...
[4]: https://github.com/JudahGabriel/Chavah/blob/master/Chavah.Ne...
[5]: https://github.com/JudahGabriel/Chavah/blob/master/Chavah.Ne...
Google is the unique bright light here. They've submitted a web standard, navigator.mediaSession [0], that lets you do this in a web standard way. Unfortunatly, the only browser that implements it is Chrome on Android.
[0]: https://developer.mozilla.org/en-US/docs/Web/API/Media_Sessi...
1. That's where users are. We've trained a generation of users to find apps in app stores.
2. Some mobile platforms (read: iOS) are hostile to web apps. For example, Apple doesn't let you play audio in the background on iOS. (Or rather, they suspend JS execution if the web app is in the background, or if the screen is off. Thus, you can play exactly a single MP3, then my media player app will stop playing music unless it's still in the fore, which is a show-stopper.) This is just one of dozens of issues with web audio in iOS Safari; I've documented more here[0].
Native apps have no such restriction. Thus, packaging my PWA as an app got around all these restrictions. Plus it lets me integrate with the OS, for example, by showing the currently-playing song name, artist, album, art, etc. on the lock screen.
[0]: http://debuggerdotbreak.judahgabriel.com/2016/12/13/its-almo...
I'm OK with that. Web apps are clunkier and provide a worse experience. That Google makes this easier speaks to the sort of UX you get with Android.
Chicken and eggs argument here: web apps are clunkier and provide a worse experience because they are not well supported by the OS or the OS does not provide better support for web apps because they provide a worse experience?
Hybrid app frameworks exist because phone operational systems lack proper support for web applications.
No, they are clunkier and provide a worse experience, because most "web apps" are ported version of desktop bloatware, targeting devices, permanently plugged into wall-mounted electric outlet.
What are "web applications" anyway? Something, that requires permanent internet connectivity? Something with DOM APIs? Something with built-in Javascript interpreter? Something with CSS support? The defining qualities of "web" have absolutely nothing to do with mobile devices. If anything, "web" has bad supported for OS. This is why all hybrid frameworks are about exposing additional OS functionality to browser, not the other way around.
Just accept, that you are looking at wrong tool for the job.
And if we care about freedom and the opened web, we should not cheer on proprietary, closed platforms like app stores. We should want the opened web to win.
Shame on developers for cargo culting web apps over to various mobile platforms. Even on desktop platforms, non-native apps stick out like a sore thumb and generally work poorly (e.g. Slack). Granted I'm okay with my apps not doing autoplay video regardless of whether or not they're native.
> And if we care about freedom and the opened web, we should not cheer on proprietary, closed platforms like app stores. We should want the opened web to win.
How about the freedom to be rid of phishing apps and spyware? The "opened web" is not an all or nothing idea, and promoting web "apps" over proper native apps isn't a win.
Can't play next song if it is in background, etc. All the tech reasons were listed out.
The jist of the article is getting a PWA into the app stores is harder than it needs to be, especially on iOS. Between Google, Apple, and Microsoft, I found Google's Play Store to be the simplest and quickest store to get a PWA published in.
Another interesting bit is that web technologies haven't caught up to native. My PWA isn't super complex -- it's a glorified music player -- and yet integrating into the OS (now playing song on the lock screen, for example) was painful and non-standard, particularly on iOS.
All that said, I'm quite excited about PWAs. I think they will win in the long run, and will eventually (~5 years) become the dominant type of app in mobile and desktop app stores.