| ▲ | digitaltrees 7 hours ago |
| But why over vue? My biggest frustration has been how vue ends up moving in the direction of react. The original component architecture with the html template, JavaScript state and css styles in vue was so nice. Even the data fetching a url in the component was so intuitive. |
|
| ▲ | robocat 4 hours ago | parent | next [-] |
| A bit out of date, but I like the point-of-view of "The single most important factor that differentiates front-end frameworks" : https://mjswensen.com/blog/the-single-most-important-factor-... |
| |
| ▲ | Lammy 2 hours ago | parent | next [-] | | > A bit out of date > article just about to turn three years old JavaScript community never beating the allegations lol | | |
| ▲ | TonyStr an hour ago | parent [-] | | I skimmed through it, and I think the only thing that is out of date is the section on `zone` in Angular. In october 2025, they changed to `zoneless` by default, which uses signals just like Vue. This was a long time coming imo, as the major criticism of Angular was how poorly update management was handled. Also Svelte runes aren't mentioned, as that came out three months after this post. Runes are essentially also signals. Basically every framework now has a concept of
* State - change this and the framework automatically updates UI and triggers effects
* Effects - functions that run when parts of state change (or triggered by signals) And almost everyone solves this with signals except for React. |
| |
| ▲ | rao-v 3 hours ago | parent | prev [-] | | Terrific read thanks for digging it up |
|
|
| ▲ | patates 5 minutes ago | parent | prev | next [-] |
| I was deep in Vue 5-6 years ago, so much that I offered internal training for it and had sessions with more than 20 people attending. IMHO, React wins because you can just treat templates as variables. You don't need "slots" or other special stuff. It's simply more composable. |
|
| ▲ | hajile 5 hours ago | parent | prev | next [-] |
| Vue doesn't solve problems better than React (and solves them worse if you have to learn all their proprietary files and DSLs instead of JSX), so there's not much of a reason to switch. The real discussion would be between React's vdom and something like Solid's signals. |
| |
| ▲ | mmis1000 5 minutes ago | parent | next [-] | | Vue solve single source of truth much better than react though. The shape of derived data amd source data are the same and interchangeable. So you can write an api that works with both without handling implementation quirks at all. The words borrowed from someone else:
The react is more about view.
While vue is more about reactivity | |
| ▲ | lwansbrough 5 hours ago | parent | prev | next [-] | | It does, if you care about ergonomics. The reactivity model is simpler and arguably less error prone. It does have its own templating syntax, which is trivial to learn. No more cumbersome to learn than JSX, which is a templating language designed by the React team. Not sure why you chose to make the distinction between JSX and Vue’s DSL as if JSX wasn’t developed for the sole purpose of facilitating React’s virtual DOM. | | |
| ▲ | hajile 5 hours ago | parent | next [-] | | JSX is <div>abc</div> turns into createElement('div', null, 'abc') and you can use that instead of JSX if you like or you can use something like hyperscript. Everything else like mapping or if statements is pure JS and works just like JS anywhere else in your app. Vue templates mean learning Vue's custom syntax for if statements, loops, dynamic attribute syntax (with its own gotcha), binding dot modifiers, data binding, and whatever else. It requires learning its entire custom directive system. It uses custom syntax for stuff like events too. I don't see this as remotely comparable with Vue being much closer to something like my time working with Angular 1 (a time I'd rather not repeat). | | |
| ▲ | lwansbrough 4 hours ago | parent | next [-] | | It’s a distinction without a difference. Both need to be transpiled, what happens under the hood is of little concern to anyone. Please explain React’s reactive data binding since it’s apparently much simpler than v-model= ;) | | |
| ▲ | incrudible 3 hours ago | parent [-] | | It is a massive difference. I do not like magic compilers. The JSX transform is trivial and not even necessary, just create a factory function and React.createElement becomes arguably more readable, just not HTML like. | | |
| ▲ | lwansbrough 19 minutes ago | parent [-] | | Is it a massive difference, or is it a small difference? At the end of the day 99% of React projects have a transpilation step and utilize some form of “magic compiler” somewhere along the line. The simplicity of JSX is overvalued. It just means more code, and typically uglier code, to achieve the same behaviour as Vue. Which is basically the theme of React when you compare the two libraries. |
|
| |
| ▲ | Semaphor 4 hours ago | parent | prev [-] | | Vue supports JSX, though to be fair, it’s not idiomatic and hence never shows up in any docs. |
| |
| ▲ | snemvalts 2 hours ago | parent | prev [-] | | JSX is a very thin layer of templating logic inside JS. Meaning you have all the language features available while templating. Some arbitrary JS can result in templating. Vue's DSL is whatever language the developer implemented. Which is probably not enough, depends how much effort they put into it and how good they are in language design. Given that they cargo cult HTML tags to organize components in a pseudo-familiar but not-valid-HTML way, I don't have much confidence in their language design skills. I'd take the former any day. | | |
| ▲ | Lukas_Skywalker an hour ago | parent [-] | | While I understand the advantage of using the built-in language features (and I know why it is required to be done that way), I still think using {enable && <Form />}
for conditional rendering, or {collection.map(x => <Item x={x} /> }
for looping are not the most obvious choices. If you ask people how conditionals and loops are written in JS, you will get 'if' and 'for' or variants of 'while'. So I get where the v-if and v-for are coming from. |
|
| |
| ▲ | lthi747 41 minutes ago | parent | prev [-] | | So JSX is not proprietary? |
|
|
| ▲ | lwansbrough 5 hours ago | parent | prev | next [-] |
| I definitely sympathize with the feelings about the Composition API. Though I’ve moved past it because looking at React’s visible complexity (useMemo, useEffect - which apparently have changed names again since I last looked) - Vue has clearly chosen a superior API design. |
| |
| ▲ | stefanfisk 5 hours ago | parent [-] | | Unless I’m completely missing something, those hooks still have the same names and semantics as always? | | |
| ▲ | lwansbrough 5 hours ago | parent [-] | | Yeah you’re actually right I was looking at the API section instead of the Hooks section. Perhaps another demonstration of React’s verbose API surface. |
|
|
|
| ▲ | synergy20 6 hours ago | parent | prev [-] |
| I'm using Vue and do not feel it's becoming react |
| |
| ▲ | lwansbrough 5 hours ago | parent [-] | | This sentiment only really applies if you’re coming from
Vue 1/2 to Vue 3. The Composition API is definitely more like React but makes some better design decisions that make it easier to work with than React. Such as implicit reactivity. | | |
| ▲ | 9dev 3 hours ago | parent [-] | | If anything, composition API has taken the good parts from React. Once you get the hang of it, it’s amazing. Everything clicks together, is easily composable, and fully typed-safe. | | |
| ▲ | sevenzero 2 hours ago | parent [-] | | Yup I'd sign this. We use Vue2 in a old codebase with options API and composition API in new projects. Both feel way better than anything I ever had to do with React (how many Hooks do you have to learn by now? 13?) Vue just has a very simple lifecycle and combined with a simple store like Pinia it's just really fun to work with. |
|
|
|