Hacker News new | past | comments | ask | show | jobs | submit login

Early on, I made the choice to not to invest in learning native mobile development. I focused all my limited time on the web, and I think that, for once, I made the right choice.

Today, one can build amazing stuff for the browser. And, in my very humble opinion, the vast majority of apps should've been WebApps — except for maybe Uber, Google Drive, and games.

I worked in the journalism business, and, in my country, the early 10s were filled with media outlets spending so much of the little money they had to build mobile apps.

I was the sore thumb that rejected such trend.

I knew very well that the quality of most of these apps would be questionable at best. And of course these companies won't be investing regularly in updating their mobile fronts.

And that's exactly what happened: they're stuck with apps that are barely maintained, most of which looking like ancient artifacts from a bygone era. Because that's what they are.




> except for maybe Uber, Google Drive, and games

I understand Drive working better as a native app; it needs to be able to provide a virtual filesystem to the OS and do background syncing and such. But why Uber? Uber has (or maybe had) a mobile site that works fine for requesting rides and basically everything the app can do. I don't see what value Uber being a native app adds for the user. The same goes for most mobile games; they tend to have simple graphics that the browser is perfectly capable of rendering with great performance, and they tend to reinvent all common UI components so losing access to native system buttons and such wouldn't make a difference. PWAs should also provide plenty of storage for local save files and other game data. The exception of course being games that really push the system to its limits. I don't expect, say, Death Stranding or the RE4 remake to work well without direct access to native graphics acceleration, and they're too large to load as a single webpage. I will reiterate though that this is not the case for most mobile apps, even extremely profitable F2P ones that would benefit greatly from an extra 30% revenue. Why then do they not target the web? My gut feel is that it's because mobile users are trained to look in the app store for apps and games, not the web, while desktop users expect apps to be available in the browser with the exception of some professional tools and high-end games. That is to say, it's largely a cultural problem. Of course, Apple's lackluster support or PWAs doesn't help.


Uber has the same problem that Death Stranding and Resident Evil have: you can't keep shittons of data cached on-device unless you have it installed as an app and not a webpage. Uber specifically needs to support someone traveling from Sao Paulo, Brazil to Mumbai, India without needing to have more than a whisper of connectivity at their destination. The way you do that is by keeping the UI for every payment provider in the world in the app.

F2P mobile games need to be able to send you notification spam, because they're based around habituation and addiction. You couldn't do that in MobileSafari until very recently[0].

[0] Supposedly. I pinned Google Fi to my homescreen on my iPad, it asked for notification permissions, I see a notification count badge on it's app icon, but it still doesn't actually notify me when I get a text message or call.


I haven't run into no-network situation with Uber ever since every airport has wifi nowadays, but in that situation with no network, how does local on-device Uber data help to book a ride?


Imagine spotty, dropping connection, low bandwidth.

You do not want to load big chunk of JS because it was never cached, or as Uber used to do, download all the possible new promos every time you opened the app...

You want to squeeze through the minimal data you need to arrange your core business function.


It's not "no network", it's "minimal network". i.e. bad wifi or garbage 3G. Or you're data roaming, in which case you'd get charged out the nose if the app decided to redownload stuff.


Uber had an excellent PWA, m.uber.com.

I used it for years, but it didn't seem to work right on a new phone, with some UI elements not visible or off-screen, so I went back to the app.


I just opened it and it seems to be a simplified version of the app lacking a lot of features like stops and groceries.

Curiously I just realized it's the same view I get from the app on my phone a lot of the time due to some kind of error when loading the normal app view.


Uber provides features like push notifications and Dynamic Island support to users. Web Push only became available recently, and it’s only available if you install the web app to the Home Screen.


Uber gains benefit of functioning better under low/no connectivity, better location access and local/remote notifications as well as visual integration (e.g. showing ETAs and updates in the Dynamic Island or on the Lock Screen).

Some of these (increased caching and remote notifications) you can get on iOS if you install a web app as a Home Screen icon, but as just a website Uber might not get their minimum bar of functionality for widespread use. So far, I haven't seen any large companies have installed web apps as their go-to-market strategy.


It's interesting because Apple had to be pressured into even allowing native mobile apps. When the iPhone was launched they told everyone to develop web apps.


There was a lot of internal pressure as well, smooth scrolling was such a key product feature that they eventually admitted it was impossible to do in a browser if there was any complexity to the app at all.


Uber's native app and its focus on acting partially like webapp to dynamically download new content based on locality is one of the worst aspects using Uber, and is even worse with PWA.

All it takes is for network connectivity to be a little bit spotty (admittedly, Uber made it work a little bit better these days).

In the past, I've been more than once frustrated to rage from the fact that Uber couldn't just grab my A-GPS position, ping for address and send a short packet to order a car, but it had to download potentially megabytes of promo html before it let me actually do anything useful.

Avoiding it with PWA is afaik even harder (currently looking exactly into making PWA because I don't want to deal with iOS).


> I understand Drive working better as a native app; it needs to be able to provide a virtual filesystem to the OS and do background syncing and such.

That's a circular dependency though. You want that stuff because you want to use Drive with native apps and not web apps. But Drive is a first class backend (actually even more featureful, frankly) to web apps too. Basically the native Drive client is for native/legacy interop, not a barrier to a PWA future.


Uber could have been coded to a PWA just fine. Parent comment is simply unknowledgeable.

It's funny because the very first thing that Steve Jobs pushed when the first iPhone came out was PWA's, essentially, and not an App Store, which didn't exist yet... and the same API's are still available in Webkit I believe


> Of course, Apple's lackluster support or PWAs doesn't help.

Holding the web back is entirely intentional and makes strategic sense from Apple's point of view. They're well aware that a majority of apps would work perfectly fine as web apps -- but that also removes Apple from the equation. Only allowing Safari on iOS and intentionally gimping it solves the problem.

I mean, I can't even blame them. Can't lose out on that sweet 30% cut, y'know?

I'm only disappointed that legislation took this long to catch up to their shenanigans, and only in the EU.


I wish PWA advocates were more intellectually honest.

They don't care about the web and what is good for end users i.e. more APIs = less privacy.

They simply want to build apps without Apple's fee and controls.


Well, I wish Apple advocates would stop strawmanning and posting incorrect generalizing accusations.

I care deeply about privacy. That means I trust the browser sandbox a lot more than native apps. There's obviously a reason sites like Twitter and Reddit try to force their native apps on you as soon as you visit their web page on a phone -- it'll allow them to spy more on you.


> That means I trust the browser sandbox a lot more than native apps

You shouldn't.

The most privacy invading behaviour by far is the cross-site tracking that happens on the web. Where large data companies as well as Facebook/Google are building behavioural profiles with thousands of features and data is being packaged and sold to entities you have no knowledge of.

And all of which is being facilitated by browser fingerprinting courtesy of Google recklessly adopting APIs with little care about privacy.


You're not talking about a sandbox then?

A native app won't prevent Google or Facebook (or Apple) from tracking you. In my experience, native apps typically always require login, and then fingerprinting is unnecessary.

Avoiding their services, and using an open source and privacy respecting browser with uBlock Origin installed will protect you however.

The latter can be done on all OSes I've used -- except iOS.


Honestly if their new revenue share scheme stands up to the court I could see them taking 27% from PWAs as a possible future. It would be the only thing that spurs them to make it more robust.

I don’t agree with it at all to be perfectly clear. I’m only postulating that realistically the only way Apple takes PWAs to first class status is if they get a cut. Its rather unfortunate


You're speaking like Apple will get away with their malicious compliance and petulant behavior.

I'm not so sure they will, now that the cat is (finally!) out of the bag.


I'm not as hopeful that globally Apple will face regulatory scrutiny as much as it has in the EU, and even then, the EU only goes so far as well. They have as of yet had nothing to say about Apple's solution to their regulations around this


True.

However, if the EU is silent because it considers Apple's reaction acceptable, the new laws are meaningless, unnecessary, a total waste of time, and an embarrassment to the EU.

So my hope is that they realize this and the silence is due to the EU preparing to put Apple in its place.


I just wish Web wasn't such a frustrating development experience. While it has improved leaps and bounds in the last decade, I still find it to be suboptimal when compared to native offerings.

Most of that frustration comes down to tooling and more specifically TypeScript. I'm not sure how to succinctly express my pain here but I have found generally that I wrestle with the type system in TypeScript far more than native offerings.


    > I just wish Web wasn't such a frustrating development experience
It's got to be better than building to target two totally different platforms (and even more once you factor in tablets, Windows desktop/Linux/macOS) and then jumping through hoops to get your app packaged, reviewed, and updated consistently onto the target devices.

    > Most of that frustration comes down to tooling and more specifically TypeScript
I think that a lot of folks get frustrated with TS because they are coming at it from the wrong perspective. Instead of thinking about it like a static type system, think about it like "JavaScript with shape definitions". Give this a shot:

https://chrlschn.dev/blog/2023/09/typescript-is-not-a-progra...


There are plenty of options e.g. React Native, Flutter if you want one codebase.

And if you want to have a lowest common denominator user experience that's fine but you shouldn't expect users to reward you for it. That's why successful apps tailor the experience for each platform.


Neither solution takes away the fact that you have to jump through hoops for distribution.

Web apps and PWA's built with HTML and JavaScript are likely to work as-is for a decade or more given we are likely to see minimal incompatibilities with existing HTML, JavaScript, and CSS in that time and likely to see more net new capabilities.

    > if you want to have a lowest common denominator user experience...
One is a native app with a budget in the millions built by dozens of engineers. One is a web app built by...me:

https://youtube.com/shorts/bxs9ZpIJ6RM

Not sure that there's that much sacrifice when it comes to modern web apps.


I enjoy building for the web using "native" tooling, writing CSS and JavaScript "by hand."

Years ago I tried to up my game and learn to use grunt and babble and other build tools. However, I found the process extremely complex, only to end up with finicky systems that made me even more stressful, not less.

I decided to ditch all that PoS and do things the easy (and logical) way. Never looked back.


The TypeScript type system is obscenely complicated because it has to be able to type almost any weird pattern people used when there was no type system.

Most dynamically typed languages are adding type systems right now, and they all face the choice between rewriting/wrapping the whole ecosystem or build a very complex and ultimately unergonomic type system.


It’s too bad that Swift → JS compiler projects are all stalled. Swift syntax is similar and I think it’d be a nice step up for people who don’t care for compatibility with legacy JS and want uncompromised static typing on the web.


I came from the much cleaner, simpler type system of AS3, but I don't really see a problem with the complexity of TS. There are a lot of aspects of its type system I will probably never use... but I don't have to. I've written a lot of fairly complex business and game software for the web, and never found myself reaching for a conditional type. Meanwhile, keyof and union types are handy for autocomplete hints. And to me that's all TS is really about. It's just there to make large scale javascript less of a dynamic, chaotic, untyped mess.


Keep your business logic on the server and use whatever language you want. I stick to vanilla JS and only use it for DOM manipulations. I try and leverage CSS for simple manipulations when I can. I don't go out of my way to, but it can do a lot these days.


Keeping this mindset, I encourage you try liveview in any language of your choice [1]. This approach allows you to handle business logics on the server, and update the screen in browser from the server as well.

[1] https://github.com/liveviews/liveviews


Ha, I’ve been a Phoenix LiveView zealot from almost day one, thank you much ;) <3


> I just wish Web wasn't such a frustrating development experience.

I have to say, having recently gone back to doing some web dev work (doing some dashboards with lots of D3 visualisations), I was pleasantly surprised to see how better things have gotten. working with CSS is better (with stuff like grid, flex, nested selectors), and JS is also much much better (import maps, fetch API).

I'd say for developing cross-platform apps it's a pretty good deal.


I stopped wanting to write SwiftUI because the compiler there is the worst I’ve ever used. It uses some kinds of complicated inference for ViewBuilders, and the inference can get confused if you have a type error and deadlock checking a View. It’ll put an error squiggle on an entire function and say “sorry we timed out trying to typecheck this, can you figure it out?” I’ve never used any typed language compiler that gives up on 100 line or less functions.


That's because you're doing something much harder with web dev. You're making something that works almost everywhere. It's actually insane this is even possible. I bet one day, computronium will run Javascript.


Nah, the shitty parts of web dev are in basic building blocks other ecosystems handle without a problem. The fact that javascript can run anywhere doesn't mean it needs to have crappy build systems. It doesn't mean it needs to have constant breaking changes and flaky dependencies. CSS is crap for layouts. I've build apps with at least 10 layout systems, and CSS is the worst of all of them.


Correct, but HTML + JS + CSS is the standard we seem to have settled on, and having a globally accepted standard for anything is a unique and historic achievement, let alone for free, fast, and robust global distribution of Turing-complete computation and content delivery.

Now we can hope that those building blocks improve over time, but the current situation is so much better than it could have been.


> having a globally accepted standard for anything is a unique and historic achievement, let alone for free, fast, and robust global distribution of Turing-complete computation and content delivery.

It really is amazing.

> Now we can hope that those building blocks improve over time, but the current situation is so much better than it could have been.

I think the web is under-appreciated in part because most people have never used internet connected GUI computers without it, but it's important to remember that there's no a priori reason for why the web had to exist.

In an alternate timeline we could be living in a world where all interactive software has to be reviewed by a gatekeeper. I wasted an inordinate amount of time playing with this a few days ago: https://news.ycombinator.com/item?id=39205020 and I remember thinking, it's pretty cool that you don't need anyone's approval to release something like this, nor do you need to pay excessive fees to distribute it, nor does it take any meaningful time to download/install, and yet it works on all my devices, and it's relatively secure.


This is beautifully put! I hope more people are able to understand the point you're making, especially how "having a globally accepted standard for anything is a unique and historic achievement".


Thank you!

I guess I can make myself more clear - the good thing about CSS is not the way it does layouts, but that it can do layouts on almost any device.

You can come up with a better system that runs on your own machine (1 unit of effort), but then you have to convince everyone and their dog to adopt your new standard (1 billion units of effort).


Developing in native GUI frameworks is just as frustrating. Using QT for complex GUIs is more frustrating than HTML5/react or whatever


PWAs, especially those built with an offline-first approach, are so much closer to the native experience than those from half a decade ago. However what concerns me is Google's and Apple's incentives to help them get better to a point where they can rival native apps which could hit their bottom line.


The nice thing about the web is that while it’s no company’s favoured platform, it’s valuable to all of them as a way into each other’s platforms. That’s why whoever is “winning” the platform war a particular point tends to neglect the web. See Microsoft in the 2000s, and Apple now. But all their competitors are incentivised to push the web forward, because it’s a useful fallback as a way to get their apps into the walled garden. Then, eventually things shift and the company that was dominating falls behind a bit, or is facing antitrust problems, and suddenly they care about the web again. In that way, the web is a perpetual underdog, but never goes away.


Wow, that's a great way of putting it! Thanks, I had never linked the dots that way before.


> The nice thing about the web is that while it’s no company’s favoured platform

It is effectively Google's favored platform. They effectively get to be the gatekeepers for what standards become accepted. They control the most widely used engine, and fund the only opposition so they have an incentive to avoid going against them. Just look at how everyone dropped the ball in the recent JPEG-XL vs WebP news.


> See Microsoft in the 2000s, and Apple now.

This. Apple's Safari (on iOS and macOS) is the Microsoft IE of 2020s. It's unbelievably behind the more sophisticated browsers (Firefox, Chrome) and yet, Apple couldn't care less.


It's not IE by any imaginable standard. And it's only "unbelievably behind" if you count all the non-standard APIs that Chrome ships by default and calls them standard.

As for why Safari isn't the new IE, I recommend Breaking the Web Forward https://www.quirksmode.org/blog/archives/2021/08/breaking_th...


A browser that doesn't support extensions unless they're installed as separate apps on the platform is not worthy of the name "browser"; it's a lock-in mechanism.


> what concerns me is Google's and Apple's incentives to help them get better

I think that despite that, they did a decently good job. A few years ago, I created a voice-only social app: people can easily record and send voice memos.

I built it using fairly new tech at the time: the web audio api and native web components. (I refuse to touch react-style frameworks with a 20-foot pole.) It was 99% compatible with all major web browsers from the get-go, even with its fairly advanced "tech."

The only thing that wasn't cross-platform was the audio files themselves. I had to make a deep-dive into the world of encodings and codecs so that I can offer users audio files in the formats that work on their machines.

Obviously, there are areas where cross-platform-ity (??) is abysmal, but things will probably continue to evolve for the best ― hopefully.

And yes, PWAs with their offline capabilities are just awesome!


> PWAs . . . are so much closer to the native experience than those from half a decade ago.

On the one hand I love this. I'm glad PWAs are helping drive people who wants and expect a certain thing towards the web.

I am also however super sad that PWAs removed so much greatness of the web. Most don't launch in the browser. None have visible url bars. They just added a new mode so PWAs can have some kind of tabs. They don't integrate with bookmarks, or extensions. They don't have forward/back. I like the web a lot, and I feel like PWAs are a major step backwards for me.

What's really scary to me js that new permissions are being added which are PWA only. I no longer can have a web like experience; I am forced to have an app like experience, without any of the affordances I get with a user agent/browser at my back. I feel so undermined here.


You can use extensions with PWAs,at least on desktop


I'm hoping the latest EU regulation enforcing alternate browser engines will make a dent in this.

...but when I see how petulantly defiant Apple's responses to other regulations which threaten their lock-in strategies have been, I'm not optimistic.


I think you meant Google's and Apple's incentives to make them (PWAs) worse...


My understanding is that there is a lot of political power inside Google (from the Chrome side of things) working to ensure that PWAs are the primary way that users interact with their phones. It's definitely a point of contention, with pressure on both sides, but there is a balance there.

Apple on the other hand is only incentivized to funnel everyone through their App Store, and for some ridiculous reason, app developers use this to justify going all in on native apps, which I think is what this article is addressing.


One really good thing about native apps versus PWAs is that once the user installs a native app and learns the way it works they don't need to learn it again until they upgrade. With anything sourced from the web, the user is at the mercy of the wevdevs, who are at the mercy of the marketing and merchandising wizards who want to shake up the UI to try and goad users into buying more stuff. It's kind of like those round baskets that supermarkets like to clutter the aisles with; somehow they think it prompts you to buy things, but for me it adds one more product to my "no, not buying this ever again" list.


not my experience. Apps update automatically for most people so they are no different than web pages. You can turn off the updating and then in 2-3 months you'll get a message the app no longer works with whatever service it's tied to and you're required to upgrade.

On my desktop there might be a few apps that don't need to upgrade but on my phone, 90% of all apps are tied to a service. Uber/Lift, bank apps, apartment apps, hotel apps, bike rental apps, social media apps, dating apps, streaming music apps, video apps, etc.


Yes and no.

Yes because for example I'm sticking to K9 mail 5.6 because of the UI change in the next versions. I picked K9 exactly because of the original UI so I'm not using the new one, which is like every other mail client. I saved the APK and I'm installing on any device of mine, also when my fingers slip on the update button. Uninstall and install 5.6 from the file manager.

And no, because if the company behind the app wants to force people to upgrade they'll make the backend incompatible with the old app. Also no, because I don't think that many normal people invest time not upgrading an app because of the UI.


Google is the one pushing them. Apple has the incentive to keep people on the device though because they don't have an advertising business

https://fugu-tracker.web.app/


Right. Google is incentivized to push PWAs and other forms of cross-platform mobile app development (hence Flutter).

How often will the hot new app from some SV startup launch for iOS first with no Android app? Resource strapped companies that have to prioritize one platform will tend to pick iOS and that hurts Android (but is obviously good for Apple)


Apple has a giant advertising business, but yes, it's not on the web like Google's is. It's on their own app properties like Apple News and the App Store.


Apple does not have a giant advertising business.

And it's so minor compared to what Google does it's ridiculous to even compare the two.


Google and Apple should be regulated to offer the same functionality and performance to the web. Their grip on the most important technology of the century is astounding and harmful.

Honestly first-class web mobile installs without hoops and scare walls would be the thing to strive for.


Google and Apple, both of whom make web browsers as well as OSes and could therefore cheat loads with anything like that. Of all the places to find someone conflating the companies with the operating systems Android and iOS.

But even then…

> same functionality

> Honestly first-class web mobile installs without hoops and scare walls would be the thing to strive for.

Coming to a future near you: npm install rm_minus_rf_slash

What's the old quote?

"""

Tech Enthusiasts: Everything in my house is wired to the Internet of Things! I control it all from my smartphone! My smart-house is bluetooth enabled and I can give it voice commands via alexa! I love the future!

Programmers / Engineers: The most recent piece of technology I own is a printer from 2004 and I keep a loaded gun ready to shoot it if it makes a strange noise.

"""

Except all the banks and railways require me to have a smartphone these days whether I want it or not.


One word: sandboxing.


Is one of the ways they make browsers and app store apps more secure, that that is dissimilar to old school installation.


I'm not aware of any scare walls on iOS. On Android is a site is installable a little banner is supposed to pop up and ask if you want to install it. On iOS one has to open the site's share sheet and pick an install option nestled in there somewhere. I suppose that counts as a hoop, but how else would you surface the functionality without it being invasive and annoying for most users?

I think a more pertinent problem is that most devs don't want to distribute their apps as PWAs because Apple deletes saved data at unpredictable intervals and PWAs can't push engagement notifications as effectively as native apps.

When I switched from the Uber PWA to their native app I suddenly started getting bombarded with ads from them in my notifications.


> devs don't want to distribute their apps as PWAs because Apple deletes saved data at unpredictable intervals

Does anybody know what the current situation in iOS looks like? I researched this recently and the information is conflicting. The OPFS data (Origin Private File System, which is the new storage API for PWAs and is supported in Safari) is supposed to not be deleted without explicit user confirmation, but what this confirmation looks like is unknown (is it just the usual delete Safari history button?) and I didn't run any experiments. However I've seen someone claiming Apple separates a website and it's installed PWA's storages. This is reinforced by the fact that I can see the storage space each PWA takes in Settings (which was oddly not updated when a PWA using OPFS used some more storage). However I just deleted that PWA but there were no special prompts, just the usual native app deletion prompt, absent of the usual phrase "Deleting this app will delete its data.", only the phrase "Do you want to delete this bookmark." was present.


Those are downloads though the app stores. The links merely funnel you though the stores.

Native web downloads of apps are impossible on iPhone/iOS. You have to go through the app store.

Native downloads of apks are possible on Android, but not until you navigate to the hidden settings and enable them. And even then, Google scares users from installing apps this way. Nobody in practice does this. It's effectively not permitted.


> but not until you navigate to the hidden settings and enable them

This used to be the case for older Android versions, but isn't anymore. Currently any attempt to install an APK from an app without permission to do so will pop up a missing permission warning with a deep link into the relevant settings page with a switch you can flip. Flipping the switch will initiate the installation of the APK. I can't imagine sideloading being any easier without removing the permission barrier entirely, which seems ill-advised.


> Google and Apple should be regulated to offer the same functionality and performance to the web

And who is going to determine which exact functionality they both must implement?


Why invest time fad-of-the-month technology at all?

Invest your time into foundational pieces of the technology stack instead.


So tired of junk apps cluttering up my phone and tablet. Examples: There's a parking station near me that has an app, the library photocopier has an app. Could all be done on the web.


I also don't understand why a parking meter needs an app, it should have a QR code>web>stripe payment (or a text to pay), rather than 2 buggy apps on iPhone and Android, which require data to download


I’ve heard stories of people putting fake QR codes linking to fake payment portals for parking. I don’t think an app solves this problem though.

https://www.schneier.com/blog/archives/2022/01/fake-qr-codes...


There are many reasons to have a parking app.

You can extend your parking time, find closest parking meters, download tax invoices for businesses etc.

All of these are much faster to do on a native app than a clunky mobile web site.


it is "surveillance capitalism" -- they want names and contact info for "their customers" .. this is a serious sickness in the modern times IMHO


This comment almost reads like from another dimension. I made the choice to stick to web too.

But everywhere I look, IOS, mac, android, windows on the phone, tablet, tv, cars its all apps. Be it under the guise of security, features or whatever, all of the UI is driven from apps. Some do a better job than others, but sucky or not you're forced to go the app route.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: