React, The king of front-end frameworks—or should I say "libraries," since React purists will remind you every 10 minutes that it’s not a framework...
For further actions, you may consider blocking this person and/or reporting abuse
It’s crazy how Vue hits all of these points in the complete opposite (positive) way, yet its so far behind react. I’ve been working with both professionally for half a decade and have no idea why anyone chooses react over Vue. And no, the react ecosystem is not bigger nor more mature. No, it’s not easier to learn. I think the only logical conclusion I can come up with is that developers enjoy complexity and making things harder than they should be
YES !
Vue is so much better, in all respects - it really beats me why people don't see that, and are torturing themselves with React "arcana" and ugly band-aid fixes like "useMemo" and so on ...
The reasons given in this article seem largely nonsense (everything stated about React is true for Vue as well, and for other frameworks) - I think the reason why React became more popular than Vue is just timing and "historical accident" - see my comment:
dev.to/leob/comment/2i5f7
As a dev who work on both React and Vue, i second this.
Vue is better, and easier to learn. But, i work more on React now, because thats what's my company use.
Exactly! An "historical accident"... No more! Even React alternatives (like SolidJS or Preact) are far better!!!
Is solidjs even a thing. Its just a copy cat and an excuse in the name of speed. For me i think that solid js is just an excuse for writing bad or slow code in react
Since when is useMemo a bandaid?
useMemo
is really a band-aid if ever I saw one - it's only needed because the framework (React) itself apparently sucks at optimizing rendering, and pushes that kind of "low level" responsibility to the developer ...Also, I'm seeing way too many articles here on dev.to which advocate throwing in
useMemo
whenever there's a performance problem (as in, too many renders), while in many cases it would be better to analyze why there's too much rendering going on, and fix the underlying issue - again,useMemo
used as a "band-aid" to plaster over the real problems :)(of course sprinkling
useMemo
over your code indiscriminately will quickly lead to memory consumption issues)But the deeper issue is that React forces the developer to worry about all kinds of "low level" issues (performance and rendering), which the framework should take care of itself - as other frameworks do ...
P.S. yes I know, with each React release it gets better, because they're putting solutions in place to "fix" what's broken - for instance, they're now introducing a compiler which will "intelligently" apply
useMemo
when needed ...Nice - but all of that is IMO just papering over the cracks of a framework (eh, "library") which is fundamentally "broken" ... well, maybe "broken" is a bit too harsh - the point is just that React has chosen a rendering model which relies on fully rendering the component (then diffing it with the virtual DOM to optimize it), rather than other frameworks which rely more on "signals" to render stuff selectively ... this is a choice they've made, and I can't say it's "wrong" per se, but it does have consequences, and it does result in "limitations" ...
But hey, it's the "900 pound gorilla", and even I am using it when I have to, so there's that ;-)
Actually yes, React is opting into memoizing everything now, which sucks. useMemo was incorrectly advertised as a performance enhancer. It's about controlling state. Passing an object as a value or reference means something completely different. useMemo let's you explicitly pass state by reference, so you only trigger a rerender of the children that use the memoized state, when the values used to create that state have actually changed. Unfortunately a lot developers these days have no idea what the difference is between pass by value and pass by reference, so they felt the need to put memoization in a black box ☹️
I would agree that React.memo is often used as a bandaid instead of fixing the actual performance issue which is usually state that is incorrectly being passed by value 😛
Thanks for this "deep dive" ... that's pretty impressive in my book, because I've never mastered an understanding this deep of React - I understand the basics, but for the rest a lot of it is just opaque to me (probably because I never really bothered to invest in learning what goes on "under the hood") ...
In my opinion this goes to show that (a) the React team isn't even explaining the purpose of their features adequately, and (b) this stuff just makes frontend devs focus too much on low level details - while they should ideally be able to focus on building functionality (UX and "business logic") ...
But yeah, being able to understand the nitty gritty of how all of this works is for sure good "job security" !
Yes you can definitely blame them for poorly explaining memoization, even in the new docs its still a mess ☹️ but yea... In React 19 it wont matter anymore... Basically useMemo and useCallback will be obsolete from React 19 onwards.
They will? Because of this "compiler"?
Incorrect. The compiler comes with its own set of issues and gotchas… In complex setups the compiler leads to slower apps with huge memory footprints. Apart from that it will be years until the rest of the ecosystem adapts. I can’t believe they’ve been working on this thing for 3+ years and still can’t make it work. It’s just sad
Sounds like a proper mess - which supports my thoughts about React and the limitations of its "rendering model" based on "just re-render the whole child component tree, and we'll do the VDOM diffing" ...
(as opposed to, for instance, Vue - which depends to a larger degree on signals/reactivity, allowing much more fine-grained re-rendering ...)
True it's a completely different model. The whole premise of React was/is that javascript is fast and it doesn't matter that the whole tree is recreated. While that is true, it's still bad practice to create intermediate states that are incomplete and should not be rendered to the user. With signals this concept may be a little easier to understand for developers and if there is a problem, it remains more confined instead of being propagated throughout the entire tree. I'm not a big fan of vue tbh, but I'm keeping a close eye on solidjs... Signals might be the future.
Thanks for the response ... why are you "not a big fan of Vue" if I may ask? I'm really curious to hear the reasons ...
Not a fan (anymore) of the angular style of directives inside html tags and I prefer the declarativeness of React/jsx.
You can use JSX with Vue, apparently ... I never did it, but it should be possible.
But, I've read that the separation of "code" and "template" in Vue is exactly what makes certain optimizations (with regards to rendering) possible ... another thing I like about Vue is that it's just more "batteries included" and a bit more opinionated (but still flexible).
I absolutely don't "hate" React (well, what's the point of hating anything or anyone?), but I've always liked Vue.
Well I haven't used vue in a long time, so maybe I'll give it a try again sometime (although I don't see reason to switch at this moment), but that separation of code and template is what I've come to find problematic tbh. Although I used to love that in my angular days, I'm not a fan anymore. It took some time to get used to React, but now I find it much easier to translate business logic into an app. It makes it easier for me to divide the logic into separate components and create clear boundaries and reusable pieces of code. It makes more sense in my brain so to speak...
For me JSX is also fine, I think it's quite elegant actually ... I don't dislike React, actually I've been using way more React than Vue over the last couple of years and generally I'm fine with it - but, we're now onboarding another dev, who is more of a Vue fan, and we're planning to rewrite the frontend using a Vue-based framework, hoping to make a "quantum leap" - so, I'll need to brush up on my Vue!
Yes the new compiler basically wraps every piece of state in useMemo and every callback function in useCallback. It's slightly more intelligent than that, but that's the basic gist.
Well I can of something. Thats that Vue 2 did not support Typescript (/out of the box). But with Vue 3 that issue is gone. But most have learned React know, therefore most jobs require React, therefore people learn it. I prefer Vue over it because the api and docs are better. People that have learned React, have no real reason to learn another thing because the development, the support, and the amount of jobs are plenty.
Fact number 1: most devs don't have or want to have a say on what framework to choose, you probably use to work on smaller companies or have decision power, but, most devs, don't, and they work with whatever the company/architect decided to use.
Fact number 2: switching frameworks is difficult, costly or plain impossible, so, whatever got picked at some point, stays forever (for as long as the project exists), React hit first, and has been able to keep it, which makes change unlikely.
Fact number 3: ease to find devs is an important thing to consider when choosing a framework, it is simply easier to find React devs than it is to find Vue devs, and this is a circle that feeds itself, the more companies think (they could be wrong of course) devs are easier to find, the more they'll lean into that technology, and the more the devs think that's what companies look for, the more they get invested into it.
React would have to secrew it up deeply to get surpassed by Vue in the short term, they just hit first, got everyone invested into it and things will just stay that way for now.
I don't agree with much of your first point. Yeah, people have to defer to what the company they work for uses, but almost everyone I know would love to have more of a say in the stack they're using.
Completely agreed with point two.
Regarding point three, the "ease of finding React devs" argument is one that's always struck me as nonsensical rubbish. In my experience, any reasonably competent React developer can pick up Vue/Svelte/Solid/etc within a couple of weeks (usually less than that). In order to be productive in React, they should already understand the major concepts like component-driven architecture and state management, so what's to say they can't take that knowledge and transfer it to another stack that's even easier to learn in the first place? It's not like a working understanding of React precludes you from ever being able to wrap your head around Vue. It'd be like a delivery company refusing to buy vehicles with automatic transmissions because they're worried that drivers used to manual transmissions wouldn't be able to operate them. That sort of logic might follow for someone who knows nothing about vehicles or transmissions, but in reality it's absolute nonsense.
Anyway, I believe there are other forces at work that have significantly influenced React's popularity. Things like non-technical executives influencing architectural decisions, non-technical employees writing job postings and prescreening applicants, the whole labor arbitrage thing (basically if every company is using React, it drives down the cost of React devs), and a hype cycle that has pressured a lot of developers into feeling like they have to use React for everything.
For the record, I'm not a straight-up React hater or anything. I do believe it's the right tool for some jobs in some circumstances, but these days there are newer tools that make more sense for most projects most of the time. If a company is has been using React for years and already has several products in the market, yeah use React all day long. On the other hand, if a startup is choosing React for a greenfield project in 2024, I take that as a pretty big red flag.
On point 1, I cover 2 trains of thought, there are the ones who do want to have a say on what they want to work with, and those who just don't care, both exist and are valid, but, t the end, it doesn't matter, what got chosen, got chosen, and it is usually React.
Have hope. When I was first exploring various front-end tools I spent a lot of time with React, then with Vue, and immediately took to Vue over React. I appreciated that so much wasn't "hidden behind the curtain" in Vue and I felt like I had much more granular control of what I was building. Others moving into FE dev are bound to find the same.
I couldn't agree more! I find myself using Vue and Nuxt for almost everything I build anymore. It's an absolute delight for developers, can match React is almost everything, and avoids the JSX (unless you elect to be a glutton for punishment).
React gives you more freedom when it comes to dom manipulation. I used Vue and Nuxt, and I can tell you both are nowhere close to React and Next, regarding eco system, libraries availability (react has been around longer), and dom manipulation. If you want to build a prototype or CRUD app and you want to move fast, choose Vue, if your system will grow in complexity choose React (you will find everything out there to build it).
Can you give an example of DOM manipulation you can do with react, that’s not possible with Vue?
Regarding ecosystem, jQuery had been around even longer, so what? Check the state of JavaScript surveys: Best build tool: Vite. Best testing library: Vitest, Best dev tool: Vue Dev extension. Best static generator: Vuepress. And so on.
I work on large React and Vue projects on daily bases. React is literally terrible for large projects due to global and local state management complexity. Unit testing react components is a game of mock, hide and seek. Any table or chart with over 10000 nodes consumes so much memory that you need to add minimum memory requirements to your app. And this is without mentioning the insane amount of useMemo, useCallback and usePrayer you need to deploy to keep your app running without re-rendering because someone whispered they want to click on a white space in your app. React gives developers so many ways to shoot themselves in the foot that code reviews literally take 3 times longer just trying to make sure someone didn’t introduce a regression because added wrong useEffect dependency… Meanwhile updating dependencies is a no mans land because 1. Most third parties publish changes once a year and 2. Half of the react library is experimental features so you never know if suspense will resolve or you need to wait another 3 years until it becomes stable. And no the 3 years of development of React Compiler are not the promised land it was supposed to be, because it somehow (really didn’t think that’s possible) it results in even slower and higher memory app. Anyone who's build a React app for more than 100 domain objects immediately starts talking about micro frameworks, because this sh*t is unmanageable.
To understand the WHY, you have to go back to the beginning. It was originally marketed to Java and C++ devs. It was an attempt to turn something inherently not functional (html,css) into something functional. The original concept was extremely flawed and I never understood quite why so many web devs turned to it. I guess they bought into all of Facebook's hype.
I was following rise of vue very closely in the past, but as soon as they introduced the composition api they lost their momentum, lost the war against react. Their documentation still to this day welcomes new developer with a question rather than a solution. A new comer have to decide which one to choose, composition api or options api. New comer cant find answers easy beacuse solutions/tutorials/blog posts all fragmented over internet rooted by this dilemma. New comer is not happy. He moves away from vue.
Although what you wrote is truth, you could say the same regarding react classes vs hooks. Or angular 1 vs 2. Or any other framework older than 10 years. Progress has to be made and backward compatibility is a bitch. Composition API is superior and the primary solution atm. Vue’s documentation is very easy to navigate with examples for both as well as detailing the differences. Compare that to the alternatives where the comparison and examples of both approaches are completely lacking.
The last line is kinda funny
Vue is not a go-to when it comes to web3 development.
Another great point in favor of Vue! I don't expect people who buy snake oil to understand it's advantages.
LOL, you f'king ignorant bro. I bet you don't even know what web3 is 🤣
The point is React is more popular, and is the go-to for everything frontend. Vue on the other hand might offer a better DX. There's no need for sentiments look up the stats. It's not my fault I prefer React, and it's more popular than Vue for whatever reason.
Oh the irony. I am ignorant because I am not interested in buying a lowHD.png for millions of dollars. I just happened to write my first linked list implementation so long ago that I find it funny how excited the new kids on the block are when they discover how serialization and deserialization works. One day when you have to start paying your own electricity bills you might realize that there are things like efficiency, performance and reliability that matter more than “stats”. In the meantime keep dreaming for imaginary worlds with no vendors and consumers where everyone eats 0s and 1s and lives under the same metaverse roof.
MF, I pay the bills, and take care of my own. Smart ass, you think web3 is about NFTs & some metaverse? You are very far from it.
Bla bla bla serialization & deserialization, man shut the f'up. I am sure you don't know Jack about how blockchain technology works and, decentralization—which is quite in the favor of Vue when you think about the global mind share.
Amazing, I’ve always been curious how Ponzi schemes manage to indoctrinate their members to a level where everyone is confused if the goal is to play nice and recruit more people or defend the promise land at all cost due to the enormous investment they have in it. It’s like a self fulfilling prophecy. But hey, I don’t blame you. Dreaming is free and it sounds like a nice dream. I wonder why do they call it “the dark web”. Sounds like you need a better marketing team. Maybe if they buy some Google Adds? Makes you wonder, if people like me know nothing about it, than is it really a thing? And how do you expect the average Jack to buy it? “Oh we should call it the next big thing, the web is big, right? Right?”
This arrogant article alone would be the reason I'd never even start thinking about using React 👎
I guess the sarcasm is wasted on you.
Your lost :D . But agree that the article sucks
I was laughing throughout the article buddy 😂
I couldn't even swallow the introductory paragraph to get past that point 🤦♂️
@aloisseckar
Yeah, give it another look - the author of being sarcastic about all the bold claims.
I think all of these "reasons" are not "the reason" - because most other frameworks (or "libraries" ;-) also have these features (well, except being backed by FB / Meta) ...
I think the main reason is just "timing" - React came on the scene exactly at the right moment, back when Angular 1.x was (by and large) "king of the frontend frameworks" - and then the Angular team announced:
"Here we have a new version for you - now please simply COMPLETELY rewrite your apps from scratch!"
... and then Angular 2.x looked complex, heavy, clunky ... and right at that moment React came on the scene - simple, fast, lightweight ... and the rest is history ;-)
P.S. I am (and have always been) way more of a Vue fan, I think it's vastly superior in all respects - but yeah, again "timing" - Vue arrived just a little bit later (too late), when React was already more or less "entrenched" ...
History and "accident" determines so many of these things!
Agree with you completely. Vue is a winner for me!
The same goes for Svelte. It lacked popularity, but, like Vue, if you use it after using React, there is no reason to go back.
I've been a web developer for almost 30 years. I started when JavaScript was in its infancy. I've used every language and framework for developing web applications from JavaScript, to Perl, PHP, Python and now React and TypeScript. I'm perfectly capable of developing an application with nothing but HTML, CSS and JavaScript, but doing so on a large complex project would quickly turn chaotic. I depend on React for the baseline of sanity that it provides.
I would agree that React is very complicated to learn. It does not use a programming paradigm that I am used to in my long career. But once you learn it, you really start to appreciate what it does for you. And they keep improving it with each new iteration (check out React Compiler).
I think it's a positive thing that certain things are left out, like routing, for example. What if your app doesn't need routing? Why do you need to use filesystem routing for a SPA?
Also, you are more than welcome to continue using class components if that floats your boat. Not everyone subscribes to the same coding style / paradigm. I personally think the concept of "clean code" is nonsense, but that's my opinion. I personally prefer kind of a hybrid of functional and limited OO programming. So react functional components and hooks work really well for how I code. That doesn't make either you or me wrong, it's just a preference. Sure one way or the other could have a minor impact on performance, but that's usually a matter of just using way too many dependencies.
So even if React does suck, you offer no alternative. To my mind, the only alternative would be to return to pure HTML and JavaScript. I did try Sveltekit but I feel it does the same thing React does and interjects the same level of "convolution" that you accuse React of doing.
Lastly, I disagree with your conclusion: why React won. The real reason that React won is because it has the largest package ecosystem. There are thousands of published NPM packages designed specifically for React. In fact, I've authored 2 of them. I'm not saying this is a good thing. In fact, I think people depend on way too many packages when taking the time to write a simple helper function would suffice, but I digress.
Vue, Svelte, Solid, Marko, ... there are a lot of feasible alternatives.
He already answered that argument. A whole lot of that "largest ecosystem" is deprecated and unmaintained. The ecosystems of other front end frameworks may be smaller, but are still better quality.
The actual reason why React won is because managers believed that it would allow them to get away with less experienced developers and still being able to scale. Unfortunately, the foot guns included in react counter the scalability promises - especially if you hire less experienced devs and expect them to be architect and dev ops combined.
What is your source for this?
Personal experience.
Ah. Opinion discarded
You sound a bit angry. I'm not even sure where to start...
Yes, react is unopinionated. No that's not the reason why people write bad react code. Bad developers write bad code in opinionated frameworks as well. React's component structure actually lends itself really well to apply basic SOLID principles.
The whole framework/library discussion is nonsensical. React is whatever Svelte and Angular and all the other frontend frameworks are. Some of those (like angular) just have a lot more gravy on top, which makes them opinionated and less suited for some use-cases.
You summed it up.
The difference between frameworks like Vue and libraries like React is the opinion factor. I've worked on Angular projects where people misused it like crazy. It's like using a Miter Saw to hammer in a nail.
The one thing I tell people when building out any kind of solution is less is more. Bad code is bad code.
Do you people realize how much boilerplate and nonsense exists in React. I am very experienced with the framework. I use it everyday at a very high level and I hate it. It's one of the most opinionated frameworks that exists right now ( for instance other frameworks don't require you to wrap everything in useMemo, useCallback etc). When it was first released I would have bought the library angle but not since hooks. It is now very much an opinionated framework. Web Components/vanilla JS imho are and the only truly unopinionated ways to build UIs.
Who said you have to wrap everything in useMemo and use callback? You don't have to, but you can if you want to.
If you have a ton of expensive computations happening on the frontend, then maybe you need to re-think how you're handling and perhaps where, as well. Memorizing data (at least in my experience) is usually warranted when you have a large amount of data that you don't want to re-calculate or apply.
I agree that going pure vanilla is as "unopinionated" as it gets, but that's because it's vanilla. :) React is an abstraction that will fire off max call stacks if you use a hook incorrectly, but it won't stop you from rendering 1000 rows all at once. Vue probably will.
Show me in the javascript spec where it describes ngIf. React is as pure as it gets... Its all basic javascript functions... I'm honestly not sure if you're serious or just trolling...
I must agree with the previous comment that React is extremely opinionated. Take hooks for example, it might just be plain JS functions, but they behave nothing like you'd expect in vanilla JS. Your hook must be prefixed with "use", and it can only be called in a component or other hook, and it must be side effect free and deterministic, and by the way, that JS code you are writing could be called an arbitrary amount of time by the engine and you have little to no control over that, in fact, in dev mode only we'll call it twice just because but not in the prod build. There's literally an official rules of React documentation describing how you must abide by React's way of doing things, that's as opinionated as it gets.
Tldr: people are dumb and Facebook exists.
Try Svelte, believe me.
It's a compiler, not a framework 🤣
Because it came out early and was simpler than Angular which was it's main competitor at that time. For me though Solid is a better version of React, Svelte is elegant too.
Yeah that would be it. AngularJS was a leader, a first run at something, interesting but a bit crap. React was better than it at the time. There are better things now, but whether that matters is probably down to what you are building and who is using it.
I love the sarcasm, but I'm missing a few gags:
I have advocated Angular over React forever, and I love the way this article is written. But also, I did want to throw up a little at inevitably. 😜
It's really because of this kind of useless, outdated article, which brings no real argument, which compares things in a childish way and wastes people's time that I've stopped coming to dev.to (sarcasm or not). 99.99% of the articles are of the same level and it's a shame. And yet I've been a React/React-native developer since 2016.
I am prefer React because the core ide is so simple: action -> state -> view; Whole code can write in a JSX/JS files in simple js code, don't need to learn any template languages.
Try my 65 LOC State handling helper jsdoc-duck
Yes I saw a tons of owerenginered React applications. I am agree keep your package.json as low as possible, my other advice is don' need to setup Tailwind instead can use 1 liner html, this is work with or without any framework:
Chat GPT write a feel good React article.
Chat GPT : Meow Meow Meow
React won the front-end race due to its flexibility, performance, and vast ecosystem. Its component-based architecture allows developers to build reusable UI elements, making code easier to maintain and scale. React's virtual DOM improves rendering efficiency, resulting in faster user experiences. Additionally, the strong backing from Facebook and an active developer community have led to a rich ecosystem of libraries, tools, and continuous updates, solidifying React's dominance in the front-end development landscape. This combination of innovation, support, and scalability helped React outpace its competitors.
It won when it comes to getting users. But it didn't win at making developers lives easier. There's so many more choices now that are simultaneously easier to understand/use and more powerful. But we're still stuck with this annoying clunky dinosaur because it's just too big to fail.
Yours truly,
ChatGPT
React community being under influence of an advertising company, Meta, is fooled by lots of lies organized by Meta and its dev-rel team. This article name, reflects one of such much believed lies among React practitioners, which you only understand it's a lie if you are not fooled by Meta.
React is not even popular, it's just evangelized by many paid-to-write populist columnists and regretfully believed by those who lack critical thinking skills, those who believe whatever they read. You need some knowledge about higher order functional programming (type and kind level programming) to understand why functional reactive programming, which is practiced by react is a dead end when principled products like ScalaJS thrive.
And it's not only ScalaJS which is way better than React. Actually whoever knows Elm and it's clean TEA pattern understands React is under a heavy technical debt. And by Tyrian this TEA pattern is included in ScalaJS ecosystem too.
I named ScalaJS because it's the ideal product and hence everything should be compared with ScalaJS to have a fair basis. Then we understand YES React may be a good product when compared to WORST products like Angular. Solutions based on Typescript and even vanilla JS which can easily implement Custom Element are way better than React. And I'm not talking about React projects testing and tools like Jest which are more like a nightmare.
React already wasted many open source human resources. I think open source community should sue Meta for waisting it's resources. Advertising technics has nothing to offer against principled computer science design. Stop using Reacts today for a better future.
WebForms Core technology has entered the game to compete with React.
The new WebForms Core technology was released three months ago and is a serious competitor for Front-End frameworks.
Read more
dev.to/elanatframework/using-webfo...
WebForms Core VS Front-End Development
WebForms Core is a server-dependent technology; usually, client-side scripts or Front-End frameworks request a page, web part, or service from the server using AJAX (or the Fetch method) (it is rare that they do not request from the server). In this section, we describe the advantages of using WebForms Core compared to client-side scripts or Front-End frameworks:
Complexity
Setting up Front-End frameworks can be complex and requires a deep understanding of JavaScript and the framework itself.
In contrast, WebForms Core simplifies web development by allowing developers to focus on server-side interactions and control of HTML elements.
Automated process vs micro scenario
Synchronizing server-side development with Front-End frameworks is challenging because you have to create many server-side APIs for the server to respond to requests from Front-End frameworks.
In WebForms Core, there is no need to create an API, and you provide all the responses in the Controller class or Model class on the server.
Update and maintenance issues
With every update of Front-End frameworks, many problems arise for the compatibility of the current project, and it becomes difficult to maintain the codes.
Meanwhile, WebForms Core is responsible for the compatibility between the WebForms structure on the server side and WebFormsJS on the client side; therefore, the update does not affect the compatibility of the project.
Frequent requests to the server
Creating interactive pages with Front-End frameworks or client-side scripting requires that you make multiple requests to the server to get dynamic data.
However, WebForms Core requests the server only once, and the server sends Action Controls commands, and WebFormsJS executes these commands one after the other.
A different approach than traditional web development
Developing systems with Front-End frameworks requires peripheral tools that are unlike traditional web methods and are hard to learn.
But WebForms Core is an HTML-faithful construct, and based on form tag attributes, it submits data exactly as it would in HTML.
Installing dependencies and complex configuration
The incompatibility of dependencies in different versions and the need for complex configuration make the development of systems with Front-End frameworks challenging.
Meanwhile, to use WebForms Core, just need to add the WebFormsJS script tag to the head part of the HTML page.
Long development
Development with Front-End frameworks requires mastery of JavaScript and internal structures (such as JSX), and the software development process is long.
But development with WebForms Core is done quickly on the server side and there is no need for Front-End development.
or just use htmx?
well there is Vue.. i was tired of constantly changing next and went to learn Vue. and it is a nice framework.. i really do like it. now i am learning laravel and i love it too :D so maybe i will stick to laravel + livewire or vue.. so no react for me.. :D
He's currently learning Flutter after praising React (Native)
So genuinely curious, are people serious when they say that props, state and other basic aspects of developer tools are confusing? If so then the dire state of the job market makes sense, considering that many developers seem to be unqualified for junior roles.
Anyway, nice stab at creative writing OP. Keep trying and I'm sure you'll find your voice.
I think the point is that it shouldn't be confusing at all, like you suggest, but React makes it confusing. In React, passing props is easy but sometimes you need to think about stable references, or using useMemo, or when you should update a state with the updater function vs direct assignment. Or what about context which seems standard, but oh gotta be careful or you'll have too many re-renders, better not use them. Global state management in React is so hard you can't realistically implement it in vanilla React yourself, you must rely on an external library of which there's a dozen, half of which are over engineered.
On the other side, take Vue or Svelte or friends where you create a state with a signal and, that's about it, do whatever you'd like. Pass it as props, store it globally, or in a context, or process it outside the render tree, doesn't matter, it's all good, the framework will likely behave as you'd expect. Which is how it should be.
I see many comments in favor of Vue, and it’s funny. Years and years go by, and programmers keep loving to advocate for their favorite technology.
The author wrote a good article full of ironies, listing reasons why React is what it is, and not necessarily good, certainly far from worshipping React.
And then comes a bunch of people saying that Vue has all of this, and that it’s even better, and that it’s all a great injustice from programmers who prefer React. And they are so committed to defending their beloved tech that they ignore item 1, where normally in a list, the first item has priority. They complain as if the choice of technologies in a project is always a personal motivation, ‘why didn’t the programmer who started this project choose Vue?’
Going back to the first item, who maintains Vue? How many of those who commented here contribute to Vue? And how many can guarantee that the volunteers will keep contributing?
Project decisions are not necessarily made to please hipster programmers who seem unable to think beyond their screen. There are technical issues, there are scalability issues. If tomorrow a new framework comes out, better than Vue, all the Vue advocates will be loving their new JavaScript toy, which is easier to use and 5ms faster to render a Hello World. But what about the company that decided to use Vue and now needs to hire specialized labor?
These are just two points that are not too difficult to understand as to why (which is very different from supporting) React has been used on a large scale.
Won the race? Funny, it seems to fall over at the start compared to Vue..
You only read the title, the article including the title is utter sarcasm about how good react is.
I read it, you just assumed I didn't.
I am not a react fan. It makes things complex than necessary if you don't use it well. It got popularized because the examples are simple enough for any high schooler to get started. There are many compile to js languages that work really well with react like clojurescript, rescript, and so on. This strength helps meta because they can use this and combine it with other rendering libraries specific to the hardware like for android, ios, virtual reality devices, web and many more. Because of this reason, meta continues to invest more into it.
React is unlike other libraries which are more performant than react but are more linked to the hardware or ecosystem. Svelte and vue are more performant in web but they can work only with web technologies like html and css. Meta don't need extreme performance but need some thing that is good enough they can extend to any hardware. React perfects fits their usecase. If you are working on a product with a similar usecase react is your ally.
But for anything else there are better alternatives available in the market.
Use Flutter and forget about React Native.
Like many frameworks and helpers, React Native works amazing and your developer will get a demo up and running in half a day of work, wow! Then you spend months, getting ever closer to shipping, when, at 90% an impossible thing arises; something that just can't be done in React Native.
This is when the framework goes from saving time to wasting your time as you spend all your days working on workarounds for the limitations.
In the past, also, RN would update the version and then everything would break - I imagine / hope they don't do that anymore, it was crazy. "Move fast and break things" indeed.
Flutter is better than RN in every conceivable way - it's equivalent in fast prototyping, but never runs into limitations; it just works. It's the best thought-out mobile development platform there is, better than the native iOS / Android ones, and vastly better than react native.
As a bonus you get a 90% mobile app look and feel, which is good enough that 90% of people will never notice it's not a native app. React Native always looks and feels like a web app - probably because it is at its core, just with native widget rendering.
The other 10% - myself included - will notice it's not as smooth as a native iOS app but it's good enough, and it's just so much easier and faster to write it's worth it.
I completely agree with each point made in this article, considering it isn't sarcasm. And if it was indeed a sarcasm, then I think author needs a serious retrospect of his journey as a frontend developer.
I disagree with you. Because:
"Keep it simple!" which react made it unnecessary complex and sometimes confusing for new learners.
"Don't get religious about technology!" which I found many developers are in favor of react with not enough reasons to back their opinions.
For someone working with Vue and React for about a decade, I can tell that the only reason is the first point : It is backed by Meta!
People should really look into lit. Web components using native browser apis are the future. Vite actually has some great starter repos on their site.
These component libraries and frameworks were developed to solve different browser problems back in the day. Now a lot of them don't need to be solved because the browser can handle them natively!
My favorite part about React is avoiding using React as much as possible and sticking primarily to the simple state functionality it has.
I am working in React but started my journey as an Angular developer in 2014.
I have never used Vue so I don't have an opinion on that.
What I can say is that React has better marketing. That's why React won the race.
As of 2024 and beyond, Angular is a better option for those who need to build well engineered web apps. The only reason anyone would chose React would be because of React Native.
Agreed. Angular all the way. React Native is ok but there's also Capacitor which works with any framework. Flutter is cool too I'm just not into it. Basically Google.
Awesome article.
So react is react today only because it's made and managed by big players and its unnecessary complexity ?
Maybe it's also because there was a lack of batter options when React came ?
Well, as a Hipster it good to see how you position React as the "winner" without any sources or reasons. To many developers and companies have invested in other technologies to let them disabandon their preference and jump on the React wagon, so I'll treat this article as clickbait.
I guess a lot of y'all don't remember, but React coincided with the horrific introduction and backstabbing of Google releasing Angular, which was infinitely more complicated than AngularJs and had zero backwards compatibility. A lot of devs jumped to React, which had licensing issues at the time. (I still don't trust Meta)
The bottom line is that React is created and maintained for Meta. If it's good for Meta, it will be in React. Contrast that with libraries like Vue that are developed for the community.
It's a shame that most frontend codebases are "stuck" with React. There are a few reasons for this:
1) managers are idiots and don't want to update or change things that "work"
2) developers are lazy and don't want to rewrite code that "works", no matter how hard it is to maintain or extend.
3) there are more React jobs on the market than other frontend frameworks.
"but let’s be honest—you don’t have a choice."
Well let's be honest, I worked with angular 2 and react, react was and is better to start and bootstrap the code of application at the start, but the state management and ui update loops in react are slowing you down until the app is too large that it's performance and maintenance is almost identical with angular.
Sure for small apps like hello world, calculator, etc. It's the best; But for large and scalable app I would surely not choose it
Ngl , svelte and vue have all these features and even better performance than react , why not use and praise them? I agree that react us industry standard, but we can also make efforts to make frameworks like svelte and vue also of that level
They say reading comprehension needs to be taught in schools. Reading many of these comments I have no idea why.
I think mostly it's because people have gotten so used to j query that react is just a natural extension of that way of working, personally hate j query and by extension, react. But it's not very hard to see the motivations
ReactJS is only faster than Angular which is at speed level of a turtle.
Try Tay and stay ahead of the curve.
If you have a senior developer on your team, go with Tay and never look back. You will be better at JavaScript and programming thanks to TypeScript.
Absolutely no answer to the question in the title. I thought I would be reading about why the conditions were especially ripe for React to gain market share over other frameworks, maybe about the demands of developers over the past decade and why the pros of React satisfied those demands. This is just a hard to read overview of React's most basic functionality.
React is utter trash there's no other way to say it. Even though Vue is far superior it's not even in comparison - React is trash in its own right. It is to javascript what wordpress is to php. When facebook released React they tried to dominate the sector by pumping money into advertising and conference sessions. So you want to make an app but you've never programmed before? Perfect! You're so clueless you'll never pick up on how backwards our approach is and you won't question our obviously poor system designs. That was their target market and the upshot is a community of noobs sharing un maintainable, broken libraries with no support. And this isn't just a hot air opinion. Check this out:
React routinely releases core updates that ship breaking bugs.
The state management library Redux needs multiple third party packages to get around known limitations.
The implementation of jsx components precludes a lot of base language features particularly in conditionally rendering component parts.
There is no unit testing library that is fully compatible with Reacts single file components due to the update cycle causing render cascades.
Having used React, React-Native, Angular and Vue professionally, React is the laughing stock of the lot.
Fanboying for React is a sure-fire way to tell everyone in the room you have no idea what you are talking about. I will never take another job on a React project and I will never hire a developer that raves about React.
Don't judge a text by its headline! @pranta, can you please write another post about why AI is so great? Thanks for your post, it's much better than any Meme Monday so far!
I'm struggling to understand what's the actual purpose of your article, cause it's not serving either you or React very well.
"and people will assume you’re a genius. Trust me, it works" (when talking about the Virtual DOM) -> you love React but you don't understand one of its main features and you're happy with being confused with a genius ... 👍
"Because who wants a cohesive, opinionated structure when you can have the glorious freedom of picking and choosing your own routing, state management, and project structure?" -> Some of us do and there are plenty of reasons to go with something more opinionated especially if it's something very good, as Angular is (just one example). By the way .. the routing in Angular has so many possible configurations, you don't need 20 packages for routing to choose from, Angular has multiple state management tools and up to some app complexity point you don't even need them due to the beautiful RxJs, and especially since A14+ you can structure your project however you want. So ... again, not the best reasoning on your side ... 👍
"Component-Based Architecture (A Fancy Way of Saying You’ll Be Writing HTML in Your JavaScript)" -> Component-Based Architecture has nothing to do with JSX. Angular has a component based architecture and it does not use JSX ...
"Bonus points if your boss has no idea what’s going on and thinks you’re a genius for making such “sophisticated” applications" -> now you're a genius if you write complicated code (or at least code which seems complicated)? I would say, on the contrary, you might be a "genius" if you would manage to write extremely intuitive, clean, readable, reusable code for a complex functionality, not something which only you could understand just because it's spaghetti code or who knows how ... Dude ... At this point I'm not even sure if your article is a satire on React or yourself or not ...
..
..
..
One of the most arogant and low quality articles I ever read. Congrats!
Every time I contemplate using React I look at the coding patterns and think ... this is a technological step backwards. It would just frustrate me and waste my time to code this way that's more error prone and we now know also produces a slower rendering engine.
Vue 3 with "script setup" and TypeScript is so much cleaner, clearer and simpler to read and maintain and thus more productive to use than the React hooks mess. Vue is also much easier to learn because its cleaner design is conceptually simpler. I've looked at the code of many React projects and estimated the volume of coding required to do the same in Vue and it's a no brainer - just avoid React!
Vue has deep knowledge of state dependencies down to each part of a reactive state object which allows Vue's optimizing compiler to outperform React by minimizing re-rendering at the micro level. In React, you're forced to declare state dependencies while Vue safely deduces them removing a major source of bugs. It can also do dynamic state dependency analysis (needs an article to explain) that this lifts the optimization game another level.
Vue 3's Pinia store also kills it again with a much cleaner and simpler shared state solution all based on Vue's smarter reactive objects, variables and computed functions. The fact that React has so many "store" solutions tells me no one is happy. In Vue 3, there's just Pinia now as its simpler minimalist design "just works".
Do you know of any React UI component library with builders to create a single adaptive app that can be any of: Web/SPA, PWA, SSR, SSR/PWA, Desktop installable, a Browser extension and most importantly support iOS and Android and Web/PWA Mobile/Tablet devices ... all in one kit? I've found a nice SDK packed full of 70 very mature and feature rich components (Don't just count components, look at the feature details of each). The authors of this library have designed them based on input from an open source community for over a decade now, so they cover almost everything you'd ever dream of doing and stuff you'd didn't know you needed until your client asks for it. Why waste your time poking around with shacnd or similar when its already done, optimized, had years of testing and is ready for production use. All UI widgets in this kit support mobile touch events and mobile specific rendering avoiding the need to build a React native app. I wonder how much time React projects have wasted on this duplication. With this kit you can avoid this huge cost.
And the price? It's fully and completely FREE. No not free for 30 days; not free tier and pro tier just fully free with no ads - relying on sponsorship only. This kit has heaps of other tools and utility functions and many other extras packed in. When combined with their builders, this means I can almost totally avoid dependency/upgrade hell as Quasar team maintain and test dependencies for me. I don't know of better documentation with nice working code samples for almost every UI component feature - a major time saver! No you don't need Nuxt either - That's just another set of dependencies to avoid. Yes, Quasar covers you for server side rendering (SSR) too!
Escape React and enjoy Vue 3. Visit Quasar.dev.
I'm just a happy user. I have no vested interests but I do sponsor this worthy open source project.
I love sheep!
Astro is pretty cool, too. Their philosophy seems to be something like "can't we all just get along?" or the "why not both?" meme.
That way you can be equally confused by all of your components which is good, clean fun.
I'll never understand this developer Stockholm syndrome. You either hate it or you don't.
It has won cause masses are blind and have no idea what other tools offer.
React is a naughty mess and I will never select it as a main tool for any project.
No one explained the pains like you did
The best post I've read so far😂😂
Made my day 😂😅🙂
Skill issue.
I work with both Vue and React and this is how I see it:
Vue is cleaner in structure and easier to learn, React offers more flexibility during development.
This article man a lot of arrogance react has won nothing it is just popular.popular doesn't mean better period
Loved the article 💯
Honestly, as a newbie struggling with the decision to go for this or that, this post instead of giving clarity plunges one into more confusion 😀
VueJs looking: 😂 poor guy
This was a very entertaining read. I appreciate it. I did smile a few times.
This is the stupidest article on React ever. Every single line is bullshit.
You will always come back!
It is innevitable
Very informative Share 👌🏻👍🏻
Web standards won the frontend race because we all have to use them, they will remain baked into the web platform, are accessible by default, and are easy to learn.
What an awesome article @pranta let me tell you, really enjoyed reading it.
Reasons react devs would say:
All lies 😂
This is why I use Flutter. :)
I love how funny and informative your write-up is. I wrote an introductory piece like this a while back but for beginners in react. dev.to/avdev/reactjs-the-good-the-...
Looks like we have a winner by looking at comments section.
Vue 1 - React 0
Haters gonna hate...
Looks like the Author hasn't heard about HTMX
React found a foothold in the corporate world, plain and simple.
Great 👍🏻
Developers programming in React are like people commenting on Facebook.
This article was so fun to read didn't bore me at all.
I'm not sure if this guide is to praise or to mock React (I get the impression of praise), but I think it's time I take a look at React or Angular.
Been using plain JS, I guess I am hipster 😅
Loved it.
I had a bite of the cotton candy and lost my teeth.
I don't think so. React is way to complex and high strive learning curve. It take the first place because it's white guys created product no less and no more than that!
all benchmarks tell you, vue won...
See reality...🤔😏
Nice Article. React is 🔥🔥❤️
I'm not from the front-end background. Can someone explain whether he praised the react library (I understand this 100%) or shooting it down?
he destroyed it with truth. React is a facebook propoganda to make their investors happy.
Noob here. Is there a way to add react on a WordPress website from the website's backend?
Sarcasm or not, this is a terrible take and no one should ever consider doing this
Why is that?
Sarcasm is hard to read in text form, but I truly hope I sensed it here.
L article. Death to React!
They might have won the frontend race, but frontends will be obsolete in the future.
It's not russian doll, it's Japan
This article 👌
Added to that, every day more tools based on react come out
I've been unconsciously waiting for one of these reverse click baits on React. Nice to highlight the siloed belief that the complexity React devs experience at scale makes them clever.
Stop crying and start learning, you can say about anything on each program language, so if you are not filling you have a grip it's ok, but don't blame the programm language
React is horrible, moved to Flutter a while ago
Hi there. as a mern stack developer, i launched my first web. Feel free to submit your feedback if it needs improving
codelabs.uz/
Don't like it? Don't use it.
Jeez.
Vue
6th position is winning?
w3techs.com/technologies/overview/...
As a more UI developer, I see my co workers loving React also mostly because everything is in JS. CSS especially. They can't bear CSS. I find it... Horrible 😂. I much prefer Vue's approach.
Well spoken. Unfortunately, most front end devs do not know much about engineering and now we are stuck with this bad technology.
Informative
React is a god you can't help but worship
Simply put, what a great description of react. Kudos for the article and writing style.
Thanks
Good post. Great dichotomic way of writing.