News for hackers. Stuff that matters.
Re:React Won by Default – and It's Killing Front End Innovation by 827a on Monday September 15, 2025 @05:12PM (#45254981)
React is winning because its really good. Even if the cost is an extra few milliseconds of render time and few extra hours of dev time figuring out things like hook dependencies.

If React starts taking a backseat, it'll be because its no longer really good. And, to be fair: I've started to see this happen. Next & Vercel have totally taken over the React world, and they've proven to make quite poor architectural decisions. All great empires are destroyed from the inside, not out, and I think its possible Vercel could do this to React. But, also, even as Next seppukus itself, people will likely just fall back to React on Vite (or, there's Remix 3 that's I think still under development, but might end up being big).

Re:React Won by Default – and It's Killing Front End Innovation by apsurd on Monday September 15, 2025 @05:22PM (#45255083)
+1 React DX is really great. It started really great and it got weird and bloated but it's still really great relative to the JS landscape hell.

But, also yes, it's a pain in the ass and a frustrating kind of necessary evil. So there is room for improvements.

Nextjs is a living hell. The ironic thing is AI makes it dramatically more tolerable to the point it's actually pretty good. But that can't be a good thing in terms of architectural design can it? We're in odd times.

Of course, it's easy to be a hater on the sidelines. I am guilty. Nextjs likely just does too much in it's own made-from-scratch clever way. use-client vs server is just out-of-the gate ridiculous. But then I suppose the real question is "well if you want isomorphic environment, how else are you going to do it?". My answers is "I wouldn't!" but then vercel and the powers that be seem to have won the mindshare of the product crowd. At least for now.

Re:React Won by Default – and It's Killing Front End Innovation by thomaslord on Monday September 15, 2025 @05:42PM (#45255292)
Honestly I think React DX kinda sucks, at least in some areas. Performance is one of the worst (`useMemo` and `componentShouldUpdate` are way to easy to ignore, constant re-renders are the norm and writing performant React code requires conscious effort to avoid footguns) but it's also just less self-explanatory than the alternatives I've tried.

I started doing web dev before reactivity frameworks were a thing, and I found Vue to be the most intuitive of the frameworks available when I first needed reactivity. To me, Vue feels like HTML with superpowers while React feels like a whole new way of thinking about webapps. I'm honestly a bit surprised that the article doesn't mention Vue, since Vue is (and has been for a while) the most popular "not React or Angular" framework option. Newer versions of Vue even support the "disappearing framework" feature Svelte was built for, which I'm excited to take advantage of when my biggest work project finally moves to Vue 3.

Re:React Won by Default – and It's Killing Front End Innovation by apsurd on Monday September 15, 2025 @06:00PM (#45255492)
I think you've nailed it. It does come down to user preference.

React _is_ a whole new way of thinking. Back in the days of jQuery it was very painful to stitch together web experience across HTML+CSS+JS. jquery provided much needed DX around utilities to navigate across these pieces. But it was still way too easy to treat HTML like your database and model user-state across a Frankenstein of server, json, html, and javascript.

React was a paradigm shift. "Screw it, everything is javascript." The web depends on js runtime, we know we're going to need it. It starts to makes the best future-forward sense to use the only full programming runtime available. From DX pov this was spectacular to speed up prototyping. And you can finally truly model state purely from data.

What followed was a huge a mess (redux), but I always say, what do we expect? The web is a mess, and it's great because it's useful. Humans are a mess!

--- VUE: similar to angular I just don't align with "super-powered html attributes". It just doesn't make sense as a mental model. Because it's _not_ HTML spec and HTML is not a programming language. The more powerful the framework gets the more we reinvent a pseudo-programming language _through_ HTML. Angular was full-stop a no-go when I first saw it's for-loops in HTML.

Re:React Won by Default – and It's Killing Front End Innovation by recursive on Monday September 15, 2025 @07:39PM (#45256281)
Neither react's JSX nor vue's template language are HTML. But rejecting vue's template on grounds that it's not HTML seems odd. React's JSX deviates from HTML in many ways. Like class vs className. XML self-closing vs HTML self-closing. onchange vs oninput. On purely aesthetic grounds, I can't understand how the react idiom of array.map() would ever be preferable to an affordance in the (non-HTML) template language for handling this normal standard thing that always happens.
Re:React Won by Default – and It's Killing Front End Innovation by apsurd on Monday September 15, 2025 @07:47PM (#45256328)
it's not about feigning html purity it's the opposite. Why pretend we're using HTML when it's not? so with react it becomes a js flavor, jsx, which some people hate but it's very clear that it's a made up language IN real javascript.

edit: the mental model is instant: it's just javascript for reals. do anything you want in javascript using real js primitives. it's not about looking pretty, jsx doesn't. it's about not relearning basic programming primitives in a made up _markup_ language.

my issue with angular is it's neither real html nor any programming language. its made up pseudo-programming language for no other reason than it fools people into thinking "it's just HTML". that's my gripe.

Re:React Won by Default – and It's Killing Front End Innovation by markmark on Monday September 15, 2025 @08:09PM (#45256501)
Completely agree with you. Every time I see yet another template language adding some clumsy for-each loop syntax I sigh. Just let us use a normal programming language. As an example I give you every template system ever invented. Devops tooling is full of them.
Re:React Won by Default – and It's Killing Front End Innovation by recursive on Tuesday September 16, 2025 @11:27AM (#45263592)
Over the years, I've seen a few posts like this that seem to take it as a given that a loop in a normal programming language is better than foreach capability in a template language. Certainly enough times to believe that a significant group of people actually believe it's superior.

There's not a difference in capability of expression of the two models. It seems to be a purely aesthetic or comfort difference.

I guess different people like different things.

Re:React Won by Default – and It's Killing Front End Innovation by apsurd on Tuesday September 16, 2025 @01:08PM (#45264971)
It's because native programming language will defacto allow you to hack it to its natural limit. A tendency most all programmers have given they even get into programming.

For example with any iterator/loop you may want to filter, or find, or transform. in ruby you have the entire Enumerable API to dig into or Array prototype for js.

a templating language would have to reimplement functionality one by one in an allow list.

it's just fatigue at that point, yet another API i've got to mentally track.

edit: of course if you export the view data "clean" before hand it compels you to not have intense logic in the view. I get that but after a decade+ in product, views are never pure, even just ability to highlight the active tab takes conditional and select logic in a loop.

Re:React Won by Default – and It's Killing Front End Innovation by recursive on Tuesday September 16, 2025 @01:57PM (#45265559)
I see that as a feature.

I would rather that all the developers were "encouraged" to do the filtering and sorting in some kind of logic block rather than having an attractive footgun lying around that makes it easy to cram in one more last data adjustment.

To each their own I suppose.

Re:React Won by Default – and It's Killing Front End Innovation by harry_m on Monday September 15, 2025 @08:46PM (#45256713)
Both the Vue template language and JSX are supersets of HTML. However, when it comes to integrating with CSS, JSX significantly worsens DX.
Re:React Won by Default – and It's Killing Front End Innovation by recursive on Tuesday September 16, 2025 @11:24AM (#45263571)
JSX also fools people into thinking "it's HTML in javascript". I've heard several co-workers say this. JSX is a made up language as well. It's not javascript. That's why you need a build step to parse the syntax.

Angular and vue's template language are no more made up than JSX is.

Re:React Won by Default – and It's Killing Front End Innovation by erikpukinskis on Monday September 15, 2025 @10:45PM (#45257472)
You are correct. JSX is not “just HTML”. It’s “just interleaved HTML and JavaScript”.

`v-bind:id` and `@click.prevent` are something else. There is nothing like this in JSX. It’s not HTML. It’s not JavaScript. It’s some other language.

Re:React Won by Default – and It's Killing Front End Innovation by jjordan on Monday September 15, 2025 @05:57PM (#45255457)
I don't really recommend isomorphic environments, but if it's your cup of tea, Tanstack Start is making a lot of progress. It removes all of the magic and misdirection of Nextjs and just provides a good light alternative.
Re:React Won by Default – and It's Killing Front End Innovation by rustystump on Monday September 15, 2025 @07:48PM (#45256339)
Issue with all things tanstack is they change everything constantly. The Tanner guy really does make decent libs but he drops em pretty quickly for others to take up maintenance on which makes it risky to pull into any production app.

The best library are the complete ones.

Re:React Won by Default – and It's Killing Front End Innovation by koakuma-chan on Monday September 15, 2025 @05:59PM (#45255472)
AFAIK "TanStack" doesn't support RSCs? That's a deal breaker for me. Also the guy named his framework after himself, it can't be good.
Re:React Won by Default – and It's Killing Front End Innovation by Swizec on Monday September 15, 2025 @08:06PM (#45256471)
For the record, the TanStack name comes from the community. Eventually Tanner stopped fighting back and made it official
Re:React Won by Default – and It's Killing Front End Innovation by staminade on Monday September 15, 2025 @06:16PM (#45255633)
Linus named Linux after himself, it can't be good!
Re:React Won by Default – and It's Killing Front End Innovation by presentation on Monday September 15, 2025 @07:21PM (#45256153)
They built a half baked version of it and then haven’t finished it for a while but maybe they’ll get back to it sometime.
Re:React Won by Default – and It's Killing Front End Innovation by collingreen on Monday September 15, 2025 @06:17PM (#45255644)
Linux also sucks for this reason /s
Re:React Won by Default – and It's Killing Front End Innovation by jjordan on Tuesday September 16, 2025 @11:52AM (#45263918)
What do you get from RSCs that you don't get from creating a proper backend?
Re:React Won by Default – and It's Killing Front End Innovation by koakuma-chan on Tuesday September 16, 2025 @03:44PM (#45267003)
Having to glue the front-end and the back-end together.
Re:React Won by Default – and It's Killing Front End Innovation by koakuma-chan on Tuesday September 16, 2025 @09:47PM (#45270605)
*not having
Re:React Won by Default – and It's Killing Front End Innovation by 0xblinq on Saturday September 20, 2025 @03:38PM (#45316616)
You don’t have to. Inertia.js exists.
Re:React Won by Default – and It's Killing Front End Innovation by tombolino on Thursday September 25, 2025 @11:14PM (#45382211)
Inertia.js works based on pages as far as I know, right? We need load the data per page. RSC loads per component so I wouldn't call that comparable.
Re:React Won by Default – and It's Killing Front End Innovation by throw-the-towel on Monday September 15, 2025 @06:52PM (#45255953)
Could you please elaborate on why you don't recommend isomorphic environments?
Re:React Won by Default – and It's Killing Front End Innovation by AlexErrant on Monday September 15, 2025 @05:57PM (#45255464)
React DX is hot garbage. Words cannot express how much I LOATHE hook rules. Coming from a Solid JS background, where reactive primitives are just Javascript functions... I groan every single time I run into (yet another) hook rule.

I have to conditionally render empty fragments because React can't handle conditional hooks. It's the stupidest thing ever. "Oh hey let me allocate memory for this hook that will almost certainly never be used except under edge conditions! Sure, React can do conditional components, but conditional hooks are just too much for us!"

Re:React Won by Default – and It's Killing Front End Innovation by dgfitz on Monday September 15, 2025 @06:10PM (#45255584)
I read things like this and think “I am so glad I don’t write JavaScript/ web-anything for a living”
Re:React Won by Default – and It's Killing Front End Innovation by collingreen on Monday September 15, 2025 @06:20PM (#45255665)
cries in ts backend, react frontend, react-mobile client
Re:React Won by Default – and It's Killing Front End Innovation by b_e_n_t_o_n on Monday September 15, 2025 @08:36PM (#45256670)
Hooks are also just JavaScript functions...?
Re:React Won by Default – and It's Killing Front End Innovation by slmjkdbtl on Monday September 15, 2025 @09:20PM (#45256925)
Based on how they are run they are completely not just ordinary JavaScript functions, hook era components are also not just JavaScript functions, it's a very complicated system. React calling them "just functions" is untrue, just marketing buzz words, and it leads developers into traps.
Re:React Won by Default – and It's Killing Front End Innovation by b_e_n_t_o_n on Monday September 15, 2025 @10:13PM (#45257274)
Many functions can only be called in a certain context. Calling them "not functions" is misleading imo because it implies those functions are compiled out or something, like `$state()` in Svelte.
Re:React Won by Default – and It's Killing Front End Innovation by slmjkdbtl on Monday September 15, 2025 @10:23PM (#45257348)
Yeah they themselves are functions but how they're called are managed by a complicated system, I think treating them as a separate new concept is less misleading than calling them plain functions
Re:React Won by Default – and It's Killing Front End Innovation by b_e_n_t_o_n on Monday September 15, 2025 @11:46PM (#45257835)
Well they aren't plain functions, they're like lifecycle methods for the component with an implicit `this`. Perhaps that's how they should be described.
Re:React Won by Default – and It's Killing Front End Innovation by Izkata on Tuesday September 16, 2025 @07:59AM (#45261051)
> React calling them "just functions" is untrue

I'm pretty sure this is also untrue. AFAIK React has never used that phrase (and at the very least, I can't find it anywhere official right now), it came from other people convincing newcomers that hooks aren't something more complicated like objects (comparing to class-based components). React has always treated them as special functions, hence always prefixing them with the word "use".

Re:React Won by Default – and It's Killing Front End Innovation by slmjkdbtl on Tuesday September 16, 2025 @10:54AM (#45263147)
> it came from other people convincing newcomers

Yeah I think you're right

Re:React Won by Default – and It's Killing Front End Innovation by thomasfromcdnjs on Monday September 15, 2025 @08:59PM (#45256801)
They kind of are not though, you can't call them out of order and other things which is checked at runtime by the React "engine" and will stop script execution. If they were regular functions you could call them anytime.
Re:React Won by Default – and It's Killing Front End Innovation by b_e_n_t_o_n on Monday September 15, 2025 @10:14PM (#45257276)
Many "regular" functions are context dependent.
Re:React Won by Default – and It's Killing Front End Innovation by DangitBobby on Monday September 15, 2025 @11:18PM (#45257679)
They are context dependent, must execute in the same order every time, and must be called every time the component re-renders (i.e., they do not support conditional calls). They have enough gremlin rules that calling them "just functions" is unhelpful for reasoning about using them.
Re:React Won by Default – and It's Killing Front End Innovation by nosefurhairdo on Monday September 15, 2025 @09:38PM (#45257034)
> I groan every single time I run into (yet another) hook rule.

There are only two rules:

1. Only call Hooks at the top level

2. Only call Hooks from React functions

Per https://react.dev/reference/rules/rules-of-hooks

Not sure I understand the conditional beef, perhaps you can give example? I would assume if you want `if condition, useEffect(...)` you could simply replace with `useEffect(() => if condition...)`, no?

Re:React Won by Default – and It's Killing Front End Innovation by AlexErrant on Monday September 15, 2025 @10:36PM (#45257413)
Fair. My bitching would've been better expressed as "I groan every single time I attempt to violate a hook rule." Which is a lot, because I'm new to React. It's almost certainly a "skill issue", but hooks are NOT just "JavaScript functions", contrary to React marketing PR.

My conditional beef: in my app, users can choose between using the built-in mic for speech recognition or a 3rd party service (LiveKit). If the user chooses the built-in mic, I still must allocate memory for LiveKit's services because it's exposed as a hook, even if the user will never use it. This problem compounds - every option that I expose that uses a hook requires that I allocate memory for an option that may never be used. Also TTS - users can choose to use the phone's TTS, or a remote service, etc. Every option I offer, if the library exposes it as a hook (and they virtually always do), if I naively implement the feature, allocates memory for a hook that might never be used.

Fuck. React. Hooks.

My workaround is to conditionally render empty fragments. These fragments wrap hooks, which I then inject into the context. This makes it so I can conditionally run hooks. This is why I complained that React can handle conditional components, but not hooks. Concretely: https://pastebin.com/sjc3vXTd I'm using Zustand because god I need a lifecycle outside of React.

Y'know how people complain about how Async "colors" functions? Hooks are also a type of function coloring. And they don't compose with Async.

Re:React Won by Default – and It's Killing Front End Innovation by DangitBobby on Monday September 15, 2025 @11:15PM (#45257664)
Yeah, this is a really annoying thing about how hooks work. For whatever reason (I'm sure they have a great reason) React can't do hook state book-keeping correctly without tying it to a function component lifecycle.

I think you actually can conditionally render a hook but that choice has to last for the entire rendered lifetime of the component. But that doesn't really help you when your user can switch between them.

Re:React Won by Default – and It's Killing Front End Innovation by Izkata on Tuesday September 16, 2025 @07:47AM (#45260931)
Hooks can call other hooks, and all the built-in hooks rely on setState at the bottom. setState is state for the individual component. It keeps track of state across multiple calls with an indexed array - the first call is index 0, second call is index 1, and so on - that's why no key is needed to identify which setState call is which.

All the oddness about hooks fall out of that implementation. They can only be used inside components because they rely on component state management, and having to be called at the top level is a simplification of "hooks must always be called in the same order the same number of times" (no conditionals or loops) because otherwise the setState index gets messed up and you're getting the wrong state back when it's called.

Re:React Won by Default – and It's Killing Front End Innovation by nosefurhairdo on Tuesday September 16, 2025 @01:18AM (#45258282)
You don't have to use their hooks! Looking at your pastebin link, I would probably opt for something like a factory pattern instead: https://pastebin.com/PbnBqX4a

Just because you're in React land doesn't mean you can't still write regular old js/ts and hook in only when you need it. I imagine you'd do something quite similar in any other framework.

Re:React Won by Default – and It's Killing Front End Innovation by AlexErrant on Tuesday September 16, 2025 @12:14PM (#45264236)
I appreciate your example.

Some libs do not expose "vanilla" js/ts functions that I can call - e.g. `LiveKitRoom` https://github.com/livekit/client-sdk-react-native

It only takes 1 hook to pollute your entire factory pattern; the comparison to colored async functions wasn't spurious. Hook-only options seem especially prevalent in the React Native ecosystem (ironically, given the memory constraints of phones).

Of course, I could fork/go down to the native layer, but this just proves my point that React DX is hot garbage.

Re:React Won by Default – and It's Killing Front End Innovation by nosefurhairdo on Tuesday September 16, 2025 @03:12PM (#45266573)
You can't use their js sdk? https://github.com/livekit/client-sdk-js
Re:React Won by Default – and It's Killing Front End Innovation by AlexErrant on Tuesday September 16, 2025 @06:02PM (#45268767)
No, sadly. I use some features that require the usage of native code, e.g. native echo cancellation, foreground service to keep the audio running when the screen is off, etc. The sdk-js is meant for browsers.
Re:React Won by Default – and It's Killing Front End Innovation by nosefurhairdo on Tuesday September 16, 2025 @07:55PM (#45269868)
Gotcha. I'm unfamiliar with LiveKit and React native so appreciate your clarifications. You've convinced me that your grievances are legit haha.
Re:React Won by Default – and It's Killing Front End Innovation by 827a on Monday September 15, 2025 @06:10PM (#45255588)
Next initially jumped the shark when they went all-in on server-side rendering. The reason why Vercel did this is clear: client-side rendered apps can be hosted basically for free on Firebase, Cloudflare, or S3, so the only way they can raise their Vercel cloud revenue is by forcing their users into a dynamic-first world, pushing so much complexity and dynamism into the framework that only Vercel could disentangle how to host it effectively. The less-dystopic reasons they communicated as to why customers might want SSR; improved time-to-first-byte and a more PHP/Rails-like programming model; while well-intentioned, ultimately became of questionable value to customers given their choices during implementation.

I do actually believe a more PHP/Rails-like programming model would be beneficial for React; Vercel just missed the extremely important detail in how Rails is so dang productive. Its not their decisions when it comes to HTML templating; its Active Record.

Re:React Won by Default – and It's Killing Front End Innovation by Seattle3503 on Tuesday September 16, 2025 @03:04PM (#45266453)
I had a friend rave to me about Next because, to him, page load times were absolutely essential for good search engine placement. I wonder LLMs will make this sort of SEO less important.
Re:React Won by Default – and It's Killing Front End Innovation by Nathanba on Monday September 15, 2025 @11:00PM (#45257585)
React DX is probably the worst DX of all frontend frameworks I've ever seen. All kinds of confusing concepts (hooks, memo, props passing, class style vs function style, an entire new "language" like JSX which you then first need to install an IDE extension for) and you cant even begin a react project most of the time without using some kind of react starter template because building this thing is so hugely complex that people just give up. Then you constantly run into issues of double rendering with reactjs which is quite hard to debug. I was hoping for something tiny like https://www.arrow-js.com/ taking off but the creator doesn't really work on it.
Re:React Won by Default – and It's Killing Front End Innovation by ricardobeat on Monday September 15, 2025 @06:23PM (#45255699)
> if the cost is an extra few milliseconds of render time and few extra hours of dev time

That is very optimistic. Most React projects never get to the optimization stage, and end up with seconds of rendering and transition delays that significantly harm UX. And the amount of time spent battling hooks, re-renders, compatibility issues, etc amounts to hundreds of hours over the course of a medium-sized project, thousands for larger companies.

Re:React Won by Default – and It's Killing Front End Innovation by alpinisme on Monday September 15, 2025 @07:59PM (#45256417)
“Most” react apps needing “seconds” definitely needs some citation or evidence. Even in fairly heavy and laggy react apps, it’s still usually network latency, waterfall requests, ad/tracking bloatware, large asset sizes, and the usual old classics that cause perceptible slowness in my experience.
Re:React Won by Default – and It's Killing Front End Innovation by nazgul17 on Monday September 15, 2025 @08:27PM (#45256621)
In my humble (backender) opinion, if it's hard to use a tool right, that counts as a cons, and that must be accounted for when choosing which tool to use.
Re:React Won by Default – and It's Killing Front End Innovation by nosefurhairdo on Monday September 15, 2025 @09:51PM (#45257135)
It's hard to build non-trivial web UI with any technology—React is just what's familiar. If Angular had won (god forbid) we'd be seeing all the same articles written about how bad Angular is.
Re:React Won by Default – and It's Killing Front End Innovation by mmis1000 on Monday September 15, 2025 @10:17PM (#45257293)
You probably never see what reddit like after it just get rewrite. https://www.reddit.com/r/bugs/comments/rj0u77/reddit_redesig...

I won't say most react apps performs like this. But it's what you will get if you ship a big react app without optimization at all.

Other framework mostly have a much saner default (for example, component without argument change does not re-render). So it will work well (not best though) even in large scale. But in react they are all opt-in.

Re:React Won by Default – and It's Killing Front End Innovation by rtpg on Monday September 15, 2025 @08:12PM (#45256515)
My main complaint about React is the sort of lackluster quality of loads of React-adjacent libraries, by people who seem obsessed with "we're doing Yet Another Rewrite and a major version bump".

It's not that hard to maintain API stability folks! Try a bit harder!

Re:React Won by Default – and It's Killing Front End Innovation by thinkxl on Monday September 15, 2025 @06:12PM (#45255600)
If React implodes because of bad architectural decisions, Vite should fork it.

It's crazy that the best React DX is provided through Vue's community projects.

Re:React Won by Default – and It's Killing Front End Innovation by rTX5CMRXIfFG on Monday September 15, 2025 @08:58PM (#45256786)
Why don’t we just switch over to Vue? If DX is such a driver for deciding to use a web framework, Vue kicks React’s ass, and that’s just objectively speaking.
Re:React Won by Default – and It's Killing Front End Innovation by mythrwy on Monday September 15, 2025 @09:07PM (#45256842)
I did switch over to Vue.

Well not technically switch, I never learned React properly because I didn't like it when it first came out and by the time I gave it a second look there were already a gazillion React devs so I just stuck with Vue.

Vue just seems much more intuitive and sane to me. Sane is relative for front end frameworks of course. Don't get me started on Angular I got PTSD and couldn't code for a couple of months from a large Angular project with an offshore team.

I do get the benefit of using these framework for teams, and they are nifty once you get what is happening, but I still scratch my head when I see all the steps and files to do simple things I used to bang out in a few dozen lines of jQuery.

Re:React Won by Default – and It's Killing Front End Innovation by thinkxl on Tuesday September 16, 2025 @08:48AM (#45261511)
One of the greatest things of the Vue community is that they are not dogmatic about a technology choice. They welcome everyone, and proof of that is that they are building tooling that benefit everyone not only their community. So, we can switch over to Vue whenever we want. I personally prefer React and I'm super grateful of Vite and their ecosystem.
Re:React Won by Default – and It's Killing Front End Innovation by sarchertech on Monday September 15, 2025 @06:42PM (#45255864)
If react adds extra render time and extra dev time, what is it saving?
Re:React Won by Default – and It's Killing Front End Innovation by ummonk on Monday September 15, 2025 @08:08PM (#45256487)
Time spent implementing features / components that don’t exist for the alternative framework of choice, or trying to figure out a framework bug in your own because there aren’t enough other developers using the framework to have surfaced and resolved all the bugs.
Re:React Won by Default – and It's Killing Front End Innovation by s1mplicissimus on Monday September 15, 2025 @05:54PM (#45255424)
funny you should mention react on vite - i migrated a web-app to that setup ~3 years ago and never even considered looking back. react is still a trusty workhorse that assists me in getting things done, the ecosystem is rich (i'll take the varying quality as a given for one this size). I've been toying around with next a couple years ago, followed their development for some time, then decided they are not doing what I need. Isometric rendering turns out to sound way better than it actually is. The pain doesn't come from different programming languages on front- and backend, it comes from the difficulty of reconciling client state, server state, security etc. I actually find it helpful to have specialized languages for each side, rather than having to figure out for each piece of code wether its supposed to run on my server or in the browser.
Re:React Won by Default – and It's Killing Front End Innovation by LAC-Tech on Monday September 15, 2025 @07:21PM (#45256154)
A front end web framework with global state management should be a last resort for a website. Coming out of the gate with it is just ridiculous IMO. Most peoples websites are just not that complex.

There's like an escalation ladder in my mind:

- just write HTML

- statically generate the HTML

- dynamically generate the HTML

- dynamically generate the HTML at a smaller granularity (HTMX et all)

- augment your HTML with custom web components that have client side behaviour.

Only if you've exhausted that should you bother with something like React. And even then SolidJS does a much better job of it than react itself does.

So yeah, I am just not seeing it. Former (and perhaps future!) React.JS dev btw.

Re:React Won by Default – and It's Killing Front End Innovation by e_y_ on Monday September 15, 2025 @08:51PM (#45256745)
To be nitpicky, React itself does not specify that state management must be global. It was a popular pattern, starting with Facebook's blog post on Flux and made popular by Redux. And certain newer features like hydration/SSR and suspense more or less require a global store because their data can't be kept in the tree. But in many cases you can keep state local with useState and Recoil/Jotai and frameworks that keep global state/caches abstracted away like TanStack Query.

For progressive enhancement, I like the island approach used by Astro. I do think that most developers are not just building static sites though. And if you're generating HTML on the server side and then updating it dynamically on the client, having two different languages (Java/Go/Python on the backend, JS on the frontend) becomes messy pretty quick.

There are times where you should build the simplest solution that meets your needs, and times when you should think ahead to future use cases so you don't box yourself into a corner. And picking a framework is a big part of that process.

Re:React Won by Default – and It's Killing Front End Innovation by apsurd on Monday September 15, 2025 @08:54PM (#45256768)
fwiw i've never experienced the drawback of separate languages for server and client. nor did i ever experience the benefit of single language across server and client.

being forced to use javascript on the server sounds like a cruel joke vs a benefit. I mean just simply from "i can literally pick anything for my controlled server env" vs "no we're a js shop cuz web"

edit to add: is it one repo? or maybe shared types. typescript is probably the strongest argument. can enforce integrity truly across the stack. but i don't think that's worth being forced into js environment and packages. community is forced to reimplement everything in js. no good.

Re:React Won by Default – and It's Killing Front End Innovation by marcosdumay on Monday September 15, 2025 @09:12PM (#45256873)
HTML templates and the shadow DOM solved the only problem of separated languages that I have ever actually seen.

So yeah, once there was a benefit for using the same language. IMO, it never was worth the cost. But it doesn't exist anymore anyway.

Re:React Won by Default – and It's Killing Front End Innovation by apsurd on Monday September 15, 2025 @08:51PM (#45256748)
i'm bookmarking this comment. great cascading list!

agree as a 10+ year customer facing product person doing tons of react.

Re:React Won by Default – and It's Killing Front End Innovation by LAC-Tech on Tuesday September 16, 2025 @03:30AM (#45259159)
Thank you for your kind words :) I used to be very anti-react, but I realised my real issue is it was just too high an escalation for simple problems.
Re:React Won by Default – and It's Killing Front End Innovation by npn on Monday September 15, 2025 @09:14PM (#45256885)
I just use svelte. It works with raw html.
Re:React Won by Default – and It's Killing Front End Innovation by giveita on Monday September 15, 2025 @05:56PM (#45255451)
Maybe us backenders help. If I need to do front end I learn as little as possible. React does the job. It could have been Angular that ended up being in the boring throne, and I would have said just use Angular. Just use what the world uses!
Re:React Won by Default – and It's Killing Front End Innovation by dylan604 on Monday September 15, 2025 @07:36PM (#45256260)
I'm a backender that writes UI PoCs to test the backend where the PoC gets pushed to prod. I just write custom JS updating HTML/CSS elements directly. No frameworks. I've been told it's a nightmare to deal with later, but it makes perfect sense to me. Not once have I ever claimed to be a UI person. That's just way too close to the user for my liking.
Re:React Won by Default – and It's Killing Front End Innovation by ForHackernews on Monday September 15, 2025 @06:00PM (#45255486)
Angular is so much nicer and more batteries-included than React. React somehow manages to be massively yet incomplete: add a router, add state management, add react-hook-form...
Re:React Won by Default – and It's Killing Front End Innovation by ChromaticPanic on Monday September 15, 2025 @07:06PM (#45256067)
That's why it's so good. You can pick what you want instead of being told what to do.
Re:React Won by Default – and It's Killing Front End Innovation by jiggawatts on Monday September 15, 2025 @08:25PM (#45256606)
https://en.wikipedia.org/wiki/The_Paradox_of_Choice

In practice, at scale, in an ecosystem instead of a toy project, excessive choice is counterintuitively a bad thing.

It's hugely beneficial to have common ground and shared interfaces when integrating code from third parties, or collaborating across multiple teams.

> You can pick

A golden rule of large enterprise is that there is no "you".

As soon as there are two people working independently, not to mention different business units or teams, different choices will be made. Incompatible choices.

Re:React Won by Default – and It's Killing Front End Innovation by cheesekunator on Monday September 15, 2025 @06:36PM (#45255803)
This is very true and almost nobody sees it...
Re:React Won by Default – and It's Killing Front End Innovation by spartanatreyu on Monday September 15, 2025 @08:25PM (#45256603)
Angular is used a lot in enterprise apps/services when they need a low risk one-way to do things (e.g. Apple's App Store developer portal).

React is used in enterprise when teams need to move fast and break things (e.g. Microsoft Edge's UI after switching from Trident/Spartan/EdgeHTML to Chromium) and tend to be replaced with something else when dev teams / managers realise that they need to rebuild it anyway just to keep it maintained and/or gain more performance. (e.g. Edge "WebUI 2.0" moving their browser UI from react to web components)

Vue is used a lot in Asian enterprise markets.

Re:React Won by Default – and It's Killing Front End Innovation by sapiogram on Monday September 15, 2025 @05:32PM (#45255177)
What is Vercel doing to React? I just know them as a simple hosting solution.
Re:React Won by Default – and It's Killing Front End Innovation by latchkey on Monday September 15, 2025 @05:38PM (#45255242)
At least in my own experience, I tried building a relatively simple static SPA NextJS React app with their router, and wanted to host it on CloudFlare Pages.

It ran locally in dev mode just fine. Once I deployed it on CFP, the router broke. No errors in the console, it just didn't work.

If I'm forced to use Vercel to make a simple SPA work, which then forced me into paying for their service, that's the problem.

Re:React Won by Default – and It's Killing Front End Innovation by byteCoder on Monday September 15, 2025 @06:11PM (#45255594)
OpenNext on Cloudflare is the only way I've successfully gotten NextJS to work in a Cloudflare Worker.

https://opennext.js.org/cloudflare

Re:React Won by Default – and It's Killing Front End Innovation by latchkey on Monday September 15, 2025 @07:54PM (#45256378)
Interesting. Yea, I didn't want a worker, just a static html page with my javascript.
Re:React Won by Default – and It's Killing Front End Innovation by kcrwfrd_ on Monday September 15, 2025 @08:22PM (#45256588)
You need to configure it for static export if that’s what you want: https://nextjs.org/docs/app/guides/static-exports

But this won’t support all framework features. The default expectation for Next.js is with a server runtime for SSR.

Re:React Won by Default – and It's Killing Front End Innovation by CBLT on Monday September 15, 2025 @05:37PM (#45255225)
Vercel is anything but simple. Easy? Sure.
Re:React Won by Default – and It's Killing Front End Innovation by postalrat on Monday September 15, 2025 @05:37PM (#45255227)
They developed next.js
Re:React Won by Default – and It's Killing Front End Innovation by sapiogram on Tuesday September 16, 2025 @05:06AM (#45259847)
Thank you, that's really all the context I needed.
Re:React Won by Default – and It's Killing Front End Innovation by c-hendricks on Monday September 15, 2025 @08:56PM (#45256781)
For one they're shifting React to require a hosting solution.

/snark

Re:React Won by Default – and It's Killing Front End Innovation by willsmith72 on Monday September 15, 2025 @06:41PM (#45255849)
Remix v3 isn't react though, the alternative is react router 7

React router have completely bungled their marketing and PR, but they still make the best web framework out there

Re:React Won by Default – and It's Killing Front End Innovation by ern on Monday September 15, 2025 @07:02PM (#45256047)
Maybe I'm stupid, but as I recall, React hooks were quite complicated. It's been a few years since I wrote production front-end code, but it felt like some kind of high IQ/elitist barrier.
Re:React Won by Default – and It's Killing Front End Innovation by timeon on Monday September 15, 2025 @05:45PM (#45255334)
> Even if the cost is an extra few milliseconds of render time

These things are adding up. Web would be much more pleasant without React. There are many better options out there.

Re:React Won by Default – and It's Killing Front End Innovation by 827a on Monday September 15, 2025 @06:16PM (#45255636)
Maybe it would be, but I would also make a significant bet that the web would be noticeably less sophisticated without React. React is complicated, and builds complicated apps, and has its performance pitfalls, but it is also a driving force for how the web has been able to achieve native-class user experiences. Its the right programming model for building complicated things.
Re:React Won by Default – and It's Killing Front End Innovation by ricardobeat on Monday September 15, 2025 @06:26PM (#45255715)
Websites were much more varied and creative in the jQuery era, and even more so in the Flash era that came before. Different interaction paradigms, wild animations, full-screen effects, etc etc. Not necessarily "better", but React didn't really enable anything we couldn't have before - even today when real performance is required you will resort to canvas/webgl, alternative rendering approaches and skipping react's render cycle.

React was never [1] fast [2] - that is one of the biggest misconceptions in frontend development in the last decade.

[2] https://css-tricks.com/radeventlistener-a-tale-of-client-sid...

[1] https://www.zachleat.com/web/react-criticism/

Re:React Won by Default – and It's Killing Front End Innovation by scrollaway on Monday September 15, 2025 @07:17PM (#45256138)
I wrote websites in the jquery era. I wrote web apps back then. Gaming tools, databases, tons of dynamic stuff.

When I used react for the first time I cried with “where has this been all my life? It would have saved me years of work”.

Whenever I see claims like yours I always have hardcore doubts. React may not have “enabled” new things just like ai coding doesn’t “enable” new things … as long as you consider time to be in infinite supply. If you care about getting shit done, there is no comparison.

Re:React Won by Default – and It's Killing Front End Innovation by ForHackernews on Monday September 15, 2025 @05:58PM (#45255468)
How is it good? I've only had the misfortune of working on two React apps, but they were both a nightmare. It seems like React is great if you have multiple teams that hate each other all working on the same giant frontend app.

https://medium.com/@fulalas/web-crap-has-taken-control-71c45...

Re:React Won by Default – and It's Killing Front End Innovation by the_gipsy on Monday September 15, 2025 @07:32PM (#45256231)
It's good because it's popular, which doesn't really mean it's good. See Java. It works and rakes in billions, but it still may be utter shit from an engineering viewpoint.
Re:React Won by Default – and It's Killing Front End Innovation by hardwaregeek on Monday September 15, 2025 @08:33PM (#45256653)
Remix 3 appears to not be based on React. The React Router/Remix people write great libraries. The problem is that they're constantly chasing the next great library. By the time you use their latest creation, they've already started making a new library that they'll tweet about
Re:React Won by Default – and It's Killing Front End Innovation by zachwill on Monday September 15, 2025 @08:41PM (#45256688)
Super insightful. I hadn’t been able to articulate the same feelings.

    Even as Next seppukus itself,
    people will likely just fall back 
    to React on Vite…
This is my exact read on the situation, as well. I’m not sure if anything can meaningful affect React’s domination in the short-term or medium-term, even with the accumulation of poor choices.
Re:React Won by Default – and It's Killing Front End Innovation by chamomeal on Monday September 15, 2025 @09:18PM (#45256905)
I haven’t tried tanstack-start, but I wouldn’t be surprised it becomes the defacto react framework instead of next. Everything by Tanner Linsley is just so well thought out and the DX is amazing. If his framework is the same level of quality, without any major gaps compared to next, it will probably blow next out of the water.

And Tanner is already a huge name in the typescript/react world, so I think there is actually a chance.

Re:React Won by Default – and It's Killing Front End Innovation by tannerlinsley on Monday September 15, 2025 @10:02PM (#45257205)
Thank you for your kind words and support!
Re:React Won by Default – and It's Killing Front End Innovation by AcquiescentWolf on Monday September 15, 2025 @09:37PM (#45257031)
React is popular in the modern days only because, well, it's popular. Developers use it because companies use it, and companies use it because developers use it. It's not popular because it's better than all the alternatives, it's just that it has reached critical mass, and it's now "too big to fail". It takes constant effort to avoid React's many footguns. Supporters often call this a “skill issue,” but even if that’s true, why wouldn’t you prefer a framework that does the same things with less code, faster, and with far less mental overhead?
Re:React Won by Default – and It's Killing Front End Innovation by overgard on Monday September 15, 2025 @09:49PM (#45257116)
I'm not sure I'd say that React's DX is actually that great. I've watched C++ developers come over from using QT and the learning curve is massive. Plus almost all the bugs come from dealing with React's renders.

I think React by default is weird because most things don't actually need that degree of reactivity. Like, if most of the time only one thing is displaying or updating a value React just adds a lot of headache. And the amount of useEffect I see? (By necessity mind you) with the need for linters in order to figure out if you missed something in a dependency list.. I just think it's the wrong model for most projects

Re:React Won by Default – and It's Killing Front End Innovation by iammrpayments on Monday September 15, 2025 @11:10PM (#45257651)
Mcdonalds is really good. Even if the cost is an extra few pounds and increased chance of getting cancer.

If Mcdonalds starts taking a backseat, it’ll because its no longer really good. And, to be fair: I’ve started to see this happen. Mcdonalds & Coca-Cola have totally taken over the food industry world, and they’ve proven to make quite poor nutritional decisions. All great empires are destroyed from the inside, not out, and I think its possible Coca cola could do this to Mcdonalds. But also even as Coca-Cola seppukus itself, people will likely just fallback to Mcdonalds on Pepsi (or, there’s Pepsi Zero Sugar that’s I think still under development, but might end up being big).