Comment by brachkow

15 days ago

Here are the things I don't like in React. Keep in mind that React is a framework to draw interactive HTML on screen, not for some crazy programming.

1. Over-reliance on complex concepts and terminology. Let's compare with Vue: `useEffect` vs `watch`, `useMemo` vs `computed`.

2. This useless "clever" stuff also slips beyond terminology: many years ago, Redux was considered the go-to state manager, and it required writing a lot of code across multiple files even for incrementing a number, because its author liked a lot of clever CS concepts. VueX at the same time allowed just to increment that number. Thankfully, nowadays, the React ecosystem is full of sane state managers.

3. React ships without any tools to work with CSS. That said there is no chance you would use React without CSS.

4. React doesn't bother optimizing anything for you. You need to know how and when to properly use or not use these clever `useEffect` and `useMemo`. There is a lot of stuff to know, and there are a lot of folk legends about optimizing React. This is while rerendering is its main purpose. In Vue, the framework makes you always use its tools, and does most of the optimizations inside them. I never thought about manually optimizing a Vue app.

5. The folk legends. React API and the "correct way" to write React radically changed so many times, so it is very hard to understand what is still true today and what is not.

All of that can be summarized into one – React is overly focused on ideas, computer science, and being high-level. And not very focused on actually making drawing interactive HTML on screen simple.

I do write a lot of React, Vue, and Svelte. And when I write React I always need to think about stuff, of which I never would think about with Vue and Svelte, because they already took care about it. And performance wise they are on par.

btw, I wrote a related post some time ago https://www.brachkow.com/notes/what-i-like-in-vue/