← Back to context

Comment by altern8

16 hours ago

What's wrong with React?

It made it so much better to build apps vs. spaghetti jQuery.

I still have nightmares about jeeping track of jQuery callbacks

Complex APIs that require intimacy with internals with their gotchas.

Complex rendering model and hard to tame lifecycle since they ditched the class component. Very hard to get performant websites (but you're free to link me what you've produced with React and prove me wrong).

Also, biggest issue: severely misused for websites that are mostly static content and are nowhere near "app-like" nor have any particular reactivity need. 95%+ of react "applications" would've benefited from being written with a templating language instead.

E.g. Github was miles better under all aspects when it used ruby but of course somebody had to sell to upper management their promotion case.

It's overly verbose, unintuitive and in 2025, having a virtual dom is no longer compulsory to write interactive web apps. If you want to write modern web apps, you can use Svelte. If you want to write web apps truly functionally, you can use Elm. React is the jQuery of our times. It was really helpful in the Angular era but we are living at the dawn of a new era now.

  • Recommending Elm in 2025 is nonsense and I say it as an Elm lover.

    • As a non Elm lover, Why is that? I think you could freeze every JS frontend framework in time right now and use them for the next decade. JS is very backwards compatible.

      It's the ones that do some kind of server connection that introduce vulnerabilities and need active development.

  • How is it overly verbose?

    I find it very intuitive, with the exception of useEffect.

  • Svelte looks good at first until you realize that to get the best support and features you're basically required to use the meta framework SvelteKit which sucks.

The problem with React is that it solved frontend.

So the options are to 1. Code React all day and be happy with it. 2. Come up with reasons why it's bad.

There are many talented and intellectually curious people in the field which lean towards 2.

  • It didn't solve frontend, it sold developers one lie (i.e. ui = f(state) ) and managers another (developers are interchangeable gears).

    Problems are only truly solved by the folks who dedicate themselves to understanding the problem, that is: the folks working on web standards and the other folks implementing them.

  • The problem with React IMHO is it’s so dominant and so annoyingly over-engineered for many problems. I use Mithril and find it much less fuss.

    • When they started adding new hooks just to work around their own broken component/rendering lifecycle, I knew React was doomed to become a bloated mess.

      Nobody in their right mind is remembering to use `useDeferredValue` or `useEffectEvent` for their very niche uses.

      These are a direct result of React's poor component lifecycle design. Compare to Vue's granular lifecycle hooks which give you all the control you need without workarounds, and they're named in a way that make sense. [1]

      And don't get me started on React's sad excuse for global state management with Contexts. A performance nightmare full of entire tree rerenders on every state change, even if components aren't subscribing to that state. Want subscriptions? Gotta hand-roll everything or use a 3rd party state library which don't support initialization before your components render if your global state depends on other state/data in React-land.

      1. https://vuejs.org/api/composition-api-lifecycle.html

      3 replies →