I agree with points about openness and gate keeping. But from my point of view, the web is the worst platform to run apps.
I worked on microcontrollers, system software, desktop software, mobile apps, games and now I am a full stack web developer who mostly does backend and defers most of the front-end tasks to colleagues.
I don't like JS frameworks and it was far more enjoyable for me to use QT, Borland C++Builder, Windows Forms XCode and Android Studio than to use Angular and React and even Vue.
Aside from Web front-end to being a less enjoyable experience for me, the Web was designed for websites, not for apps. Web as an app platform means subpar experience for the users, too.
We tried with Flash and Java applets running in the browser. Those died and now we have the Javascript mess.
When, if ever, Wasm will have full access to browser DOM, maybe we can get rid of the Javascript mess. But then, again, why bother running a binary app in the browser when you can run it on the desktop or phone?
And even if web as an app platform is said to promote openness and impede gatekeeping it still has a terrible downside for the end user: it makes the user rent the software instead of owning it.
The issue with renting software, is that it will happen even in native apps, because it is the only way most companies can get some money out of their products.
Piracy doesn't bring any money, and forever licenses don't scale to keep a steady income per month after the user base is settled, and everyone likes to get a steady income for their work.
Businesses worth billions of dollars were built by selling forever licenses. Pretty much every big B2C software company that is older than 15 years got that big selling forever licenses. Microsoft got big selling forever licenses to Windows and Office. Adobe got big selling forever licenses to Photoshop. Every games company, etc.
We know with certainty that selling forever licenses scales because we have concrete examples of it happening with some of the largest software companies in history.
SaaS is only a recent trend, it’s not the only feasible way to make money with software.
Only to the point PC market was still growing, and continuous OS updates required paying for new versions of the same stuff.
I was there, leaving piracy aside, buying new versions were only when going from MS-DOS to Windows 3.x, to OS/2, to Window 95, to Atari, to Amiga, and so forth.
That market has plateaued, there are no exponential growth curves any longer, to keep everyone on their job, and the shareholders happy.
True, but it's much easier for web apps to alter the deal than native apps, given most of their local state is ephemeral and hard to access, and much of the useful data, and potentially even software, is on the server. How many emulators are there for web apps, compared with emulators for nearly every popular OS/platform in the last 40 years?
We're talking about mobile apps here, that's where the web is losing.
They're already almost all subscription-only. They break after a few OS releases unless they're updated (true for both iOS and Android). Local state is "hard to access"? Check. (though it's easier on Android, for now) They "alter the deal" all the time, and there's nothing you can do about it.
And native apps will always exist for any appropriate use cases, but tons of the "apps" people use on mobile are nothing but websites that you can't use adblock on (DNS excepted). Many don't have true local content, just caching.
It is just as easy with native apps distributed via app stores, which is why most companies aren't that bothered with gatekeeping, as folks in sites like HN.
Emulators for Web apps doesn't make sense, that is a browser.
It naturally depends on the app (e.g. an app that simply calls out to an API naturally has the same issues whether it is native or not), but native apps tend to work offline, and you have the binary in a somewhat self-contained form, so you can (with the level of effort varying on platform, and the state of the available emulators) run the app with your data on a different machine/system.
For local-first web apps, which would be the easiest web apps to do this with, you have to fight the browser to do this, and I'm not sure how you would be able to dump out the state and code of a web app on Android Chrome and load it in Desktop Firefox. That and being able to update/modify the app locally permanently (and maybe even control updates) would I think make the equivalent of a web app emulator.
> Piracy doesn't bring any money, and forever licenses don't scale to keep a steady income per month after the user base is settled, and everyone likes to get a steady income for their work.
How about selling a new version with more features? That used to work in the past. Or sell a new software. That used to work, too.
Because as I clearly pointed out " forever licenses don't scale to keep a steady income per month after the user base is settled".
After a tipping point no one is buying new versions in an amount that can keep the salaries of the building rent, employees salaries, company taxes and whatever else is required monthly in a continuous flow that can keep the company going, without starting to cut down business costs.
The only new feature most will care about is that the version they own doesn't run on the new OS.
It is exactly the same thing as people stuck in Java 8, Python 2, .NET Framework, C99, C++11,... it works for the purposes of their employeer, and the costs to upgrade doesn't justify the outcome, unless forced by external factors.
Subscriptions started exactly because that model doesn't scale.
Anyone that starts a business quickly discovers how "easy" these things are in practice.
Right, so you build a business out around forcing people to buy something they don't need (updates). That seems... fragile. It will work for products I need and have no good alternatives for, but.
Then again, when apps require subscriptions I avoid them, 100% of the time.
The founder of Leptos makes a pretty good argument [1] that the bottleneck for WASM isn't really the DOM and that they are already faster than some popular JS frameworks even with the current constraints.
Just tried the site, and already the first problem is isn't as interactive as the Websites for any JavaScript framework, because naturally there is a whole contraption to make the code run into the browser.
That's odd. I have been following along here [1] and it seems just as interactive as Svelte, Angular or any of the others I've tried. There might be a few more tools that have to be installed, but that's a one time step.
Where editing the code, immediately shows the GUI related changes on the neighbouring frame.
While what I see on https://leptos.dev/ is just screenshots, and there is nothing on that documentation you linked that provides the same interactive experience, one has to explicitly start a developer sandbox to host the whole machinery, and even requires a codebox account for editing.
I have experience in all listed categories as well. I hold the inverse opinion. I hold the inverse opinion only for a select few web stacks, and outside of that niche, pull hard back into sharing your opinion. Would love to expand if anyone is interested in the dialogue!
Sure. Please name some fronted frameworks that provide a pleasurable experience to both developers and end-users.
For the developers it should be easy to learn, it should be stable without lots of changes, backward compatible with no breaking changes from version to version, have very good tooling, have very good package management, have a default way to accomplish things, have batteries included, be easy to debug and deploy.
For users it should be at least fast, responsive, have minimal to no latency, easy to interact with, easy on the eyes, have a coherent design language, be ergonomic, not be a memory or CPU hog.
> For the developers it should be easy to learn, it should be stable without lots of changes, backward compatible with no breaking changes from version to version, have very good tooling, have very good package management, have a default way to accomplish things, have batteries included, be easy to debug and deploy.
You described modern HTML/CSS/JavaScript and the Web APIs. If only people started learning it in place of React.
I'm looking at the list of top websites and thinking "when have I ever wanted to install the mobile app?" The only one I see that I use is Spotify. Maybe the time spent on mobile is in other apps?
But I'm probably an outlier because I spend most of my time on websites, even on phone and tablet.
It would be nice to see this broken down by market segment. I don't see any banks in the list. I use my bank's app for certain reasons like depositing checks and Zelle.
>But I'm probably an outlier because I spend most of my time on websites, even on phone and tablet.
Meanwhile our users are clamoring for app version of our web app, even though it's just a web wrapper. I guess some people just have a "there's an app for that" mentality.
because western especially people got to tech has more chance to comfortable being on the web than the app
example of Gen Z and alpha social media addict that used to use Tiktok,Snaps etc
You cant deny that the use of web is dying and I still not mentioning Asia market where mobile is the first choice
This seems like the revenge of TV. People used to spend many hours watching TV and now video is back, with algorithms that try to give you more stimulating things to watch.
Other entertainment (like video games) have to compete with that. But I’m not sure that websites have to compete with that if they have more practical purposes. What will people do when not watching TV?
The metric of “hours spent on entertainment” doesn’t seem like the right one to use. It doesn’t measure the value you get from an activity or how much you’re willing to spend on it.
For example, does a banking app need to try to compete with video games for hours spent on them? Something seems wrong with that comparison.
The article refers to the JS-industrial-complex but only has stats for NextJS[1]. Maybe other frameworks are better? I would love to see a similar chart for the showcases of other frameworks.
This is a very good article and I agree with most of it. I never really understood why React and Angular became big for the general web. They have a lot of usage in enterprise applications, where you typically access them from a “pc”, but even then they suck on the tablets your employees drive around with. At least for the most part they don’t suck that much worse than the terrible native clients that came before (and still do in the rare case that a supplier actually build a native mobile app). Why that spread to the wider web is beyond me though. I get why you would use it for personal projects if it’s your day time job anyway, but a page reload never hurt anyone.
I personally think that the most responsible “father” is finance. The article states that there is more money with the web, but in my experience it’s far easier to lock down payments through apps. I agree that part of this is because native apps are better on mobile, but they are also much easier to work with and consume. It’s not easy to make payments function well on the web while in a native app it’s just a click with well powered api behind it. Serving both users and developers. Now, it probably could be easier on the web, but who would deliver it? The article calls out Apple and to some degree Google as guilty of not making browsers competitive with mobile apps, but why would they? If anything it’s in their best interest to keep the web shitty on mobile.
>I never really understood why React and Angular became big for the general web.
As opposed to what? Server side rendered pages with random jquery snippets sprinkled around for interactivity? I prefer the reactive model far more than manually trying to update the page myself.
Apparently SSR is quite hot in JS frameworks, after a new generation rediscovered how we oldies do Web development in .NET, Java, Ruby, Python, Go, PHP....
You could just do page reloads. Of course if you don’t really need very advanced authentication with role-based access control there is also HTMX which is around 10kb.
They became big because those companies paid for tech evangelism. People got excited and adopted, which in turn created more evangelists (unpaid) for those frameworks.
Compare them to HTMX that only has unpaid evangelists, each time it is brought up on HN, people compare it to React because of the strong base around React, creates a lens of how people see the world. Even though HTMX is a completely different framework with different intents.
Pretty solid take on a roiling shitstorm that's been brewing for at least the last 15 years. One thing I strongly disagree with the author about is wanting the web to win. Of all possible outcomes the web coming out on top of the platform wars is the worst available. Simple fact of the matter is the web wasn't built for any of this shit as our bloated and still wildly insecure browsers demonstrate rather vividly. The web defaulting back to a largely static information display medium would free up so much client budget and development hours it's hard to imagine that multi-OS support for native apps wouldn't be a net savings over the long haul. Hell, just imagine the kinds of resources that would free up if forced migration of highly dynamic websites was a thing of the past (yeah I'm looking at you Drupal).
Most would get migrated into the void where they belong. A small handful that have real use cases would have their interactive services ported to native app. Solutions already exist for commerce and donations features, remote data entry and retrieval would need a rethink I'm guessing. As with any massive paradigm shift there'd be a cull. I strongly doubt much of value would be lost.
sigh I've contributed to core and several of the most used modules in the contrib space, have built over a thousand sites with it ranging in complexity from state level nonprofits to Unicef and the ACLU, and once ran testbot for a week. I know a little about what it's for, and yes I can absolutely imagine migrating to native. 1. You'd only have to do it once. 2. The overwhelming majority of sites platformed on Drupal could easily be replaced by pure static HTML and other than a handful of back office staff bitching about social media integration nothing of note would be impacted. If you've spent any time at all in the industry you know as well as I do what the client says they need and what they actually need are orthogonal.
I have some sympathy for this viewpoint. And I think Alex’s heart is in the right place—Nextjs is a dumpster fire and react server components are when react finally jumped the shark for me.
Maybe if we had HTML6 we wouldn’t be in this scenario. HTML5 was great but form building on the web (without JS) is a second-rate experience. And it’s even more miserable once JS is in the mix, but hey developers can provide a much better UX for end users than HTML and CSS alone could possibly provide.
Sorry Alex, but without JS the web would have died a decade ago as phones took over. It’s only JS that keeps us in the ring.
HTML can never be improved, that is at the very foundation of its current form. We are 20 years into the takeover from the W3C and still can't even do a PUT request without JS, nevermind anything approaching even one tenth of the functionality of XForms.
The web of semantic documents died years ago, it's an application platform now and that means JS. HTML is naught but a payload carrier.
All true, but an error doesn't become a mistake until you refuse to correct it. Perhaps it is finally time to let the web-as-an-application-layer paradigm die?
I wish them luck, but the last time this was attempted it was rejected as it apparently doesn't make sense that you would even want to do it in the first place.
The founding members of the WHATWG really are the Thomas Midgley's of the software world. The world will spend the next century of software development trying to repair their screwups.
The author actually links to the NextJS page for server components as "a tacit acknowledgement that their shit stinks". I guess this is how you acknowledge progress if you want to write an article in the tone that is expected on HN and mastodon now.
He's not opposed to JS entirely (he specifically praises a handful of JS-based tech like ServiceWorkers), more so the all-JS single page type of app. To be fair he definitely could have been more clear about what he's talking about and what lines he's drawing.
Because their performance falls below acceptable levels specifically on (relatively slower) mobile devices. It takes a looong time for him to get around to it, but performance (specifically UI latency) is the crux of the whole article, as I read it at least.
Yeah, I read this (and some of his linked articles) as pointing out that Apple are specifically killing browser performance and features so that PWAs cannot compete with apps on iOS.
Specifically because they can't claim 30% of revenue from web apps.
It’s wishful thinking. Apple is being used as a scapegoat for the web’s failings here. PWAs would be so successful if it weren’t for Apple! is the easy but wrong answer.
It’s possible to deploy a PWA to Google Play so that it’s installed on Android just like a native Android app. If PWAs were as good as native apps, why would anybody build web + iOS + Android instead of just building web + iOS? Even if opening a PWA made an iPhone explode into flames, it would still be worth deploying the PWA to Google Play to eliminate Android development effort. But plenty of native Android apps are still being built every day. That’s not because of Apple. That’s because users prefer native.
I am a huge fan of the architecture of the WWW. I think it’s the most successful API and platform in history for a reason. But there are a lot of reasons why people genuinely prefer native apps, and it doesn’t just boil down to mean old Apple refusing to support things or users being brainwashed. People still choose native over web when Apple is not a factor at all. Every single native Android app is a testament to that. So when people also choose native over web on iOS, why should we think that this is down to Apple and not for the same reasons they choose native over web on Android?
It doesn’t help that the web platform veered off into web components either. When front-end developers were jumping on board React, Vue, Angular, etc., architecture astronauts working on the web platform spat out an unholy mess full of footguns. I prefer to work as close to the web platform as possible, so every so often I try again with web components before remembering how painful they are.
The people working on web components should take a long hard look at why front-end developers keep choosing frameworks that either eschew web components altogether or abstract them so far away the user doesn’t have to think about them. Telling quote from the Svelte 5 announcement last week:
> Equally, component composition is more awkward in Svelte 4 than it should be […] This is because in 2019 it seemed likely that web components would become the primary distribution mechanism for components, and we wanted to align with the platform. This was a mistake.
I really hope the web does better, but in order for it to do so we need to be more honest about its failings. If you are a front-end developer and you feel optimistic about the future of web development, I invite you to try writing something reasonably complex using web components instead of your normal framework.
> Specifically because they can't claim 30% of revenue from web apps.
This feels true, but it’s just one horn of the dilemma. The other is where websites wreck their own UX intentionally to herd users towards apps, presumably because pushing ads isn’t as lucrative as grabbing location data, contact lists, or whatever else can be legally exfiltrated and sold.
It’s weird to frame this problem as if it were all the fault of whatever trends in js development or browser development (even though I agree those trends often seem foolish and messy, at least to the outsider). The whole situation the author bemoans just looks like another symptom of surveillance capitalism, enshittification, etc, call it what you will. Even with a perfect web, users will still get pushed towards apps if apps are the best way to exploit the user. There’s no other calculus of platform aesthetics or excellence going on here
Agree. I think it's entirely possible that both Apple and other businesses are pushing people to apps (by destroying their website productivity), for different reasons.
I doubt he's opposed to JS, given the number of new JS APIs he pushed Chrome to implement as part of Project Fugu, he seems more opposed to specific frameworks.
>Sorry Alex, but without JS the web would have died a decade ago as phones took over. It’s only JS that keeps us in the ring.
Not really. Web would still be there but for websites not web apps. The web was designed for hypertext, a medium that is just supposed to deliver information not build apps upon.
I personally think ReST APIs accessed over HTTP + TCP/IP have a lot of utility but I think we can do better on the UI front. Maybe we need an alternative to the web browser that can run a different (or variety of) languages other than Javascript, with a better presentation option than the DOM.
No other successful platform provides all of these today and others that could are too small to matter.
Platforms like Android and Flutter deliver subsets of these properties but capitulate to capture by the host OS agenda, allowing their developers to be taxed through app stores and proprietary API lock-in. Most treat user mediation like a bug to be fixed.
</quote>
The DOM seems critical to the user mediation goal, and user mediation is IMO a critical differentiator with other platforms.
E.g. the web would be way less cool if I couldn't have "reader mode".
Maybe the root problems are HTML and its browsers. Or more exactly: the fact HTML is about documents. Everything done to make apps from it are hacks.
What would be really needed is an open application format standard and a protocol to share it and maybe interact with it. And open source clients able to run those applications.
I worked on microcontrollers, system software, desktop software, mobile apps, games and now I am a full stack web developer who mostly does backend and defers most of the front-end tasks to colleagues.
I don't like JS frameworks and it was far more enjoyable for me to use QT, Borland C++Builder, Windows Forms XCode and Android Studio than to use Angular and React and even Vue.
Aside from Web front-end to being a less enjoyable experience for me, the Web was designed for websites, not for apps. Web as an app platform means subpar experience for the users, too.
We tried with Flash and Java applets running in the browser. Those died and now we have the Javascript mess.
When, if ever, Wasm will have full access to browser DOM, maybe we can get rid of the Javascript mess. But then, again, why bother running a binary app in the browser when you can run it on the desktop or phone?
And even if web as an app platform is said to promote openness and impede gatekeeping it still has a terrible downside for the end user: it makes the user rent the software instead of owning it.