Had it with React when it moved to functional components from class components.
But I convinced myself I have to dive deep enough to understand it since a lot of people seem to like it. And now I like the Composition API more in general.
Apart from one tidbit: I constantly forget where I need to put `.value` after a variable name to extract its... value.
Now that this is the recommended way of writing Vue, I’d be really interested in your opinion on React.
Compare the “ref” in Vue with useState hook in React.
With the useState you get back two items: the value, and a setter.
Now every time you access the value you simply access it like a variable because it is.
Sigh, I wish people put some effort in actually understanding these things before posting opinions.
I’m discussing the ergonomics of the API and its resulting DX.
Sigh, I wish people put some effort into actually reading the thing before posting opinions.
You are supposed to used fancy ide that everyone uses and typescript do yell at you if use guess wrong.
You can argue with it or ignore it however you want, but that's simply true.
I also know as a matter of fact that I am more productive than many of my colleagues when working with non statically compiled languages, and that my code is more robust, partly due to the typing I use everywhere. I have colleagues that write JavaScript functions that takes a parameter that could be 4 different types of objects, completely undocumented, and they don't know what's happening one week after shipping the code. I can't stop them doing stupid things like that. They like wasting their life debugging things and refreshing the browser, what can I do.
If they were going to poorly clone react hooks api then I decided it wasn’t worth my time sticking to the niche framework and went back to react which I now really enjoy.
That and the bad TS support and broken dev tooling for years and the endless deprecated and abandoned tools like Vue CLI replaced by Vite and Vuex replaced by Pinia just highlighted the absurdity of trying to continue using Vue. Also, JSX/TSX is clearly a superior approach with its vast ecosystem of support. Vue can use TSX but good luck with its single docs page and GitHub issues about it open since 2021.
This is how you stir up drama instead of constructive discussions. Clearly the team do care quite a lot about developer experience, but they might have different ideals and goals than you do. So lets discuss those differences as adults.
DX was not a high priority concern for a significant portion of Vue’s existence.
Vite is so great it is getting adopted by other frameworks. (It is not tightly coupled to Vue)
I raised that point more than once and was always given the lamest reason for it.
They believed people would be “too confused” with the breaking changes in the new API.
This was always a dumb explanation. That’s what major versions are for - breaking changes. Of course upgrading from Vuex 4 to 5 would involve refactoring code.
Pinia is of course mush better and has real types. But they did themselves a huge disservice by not making that Vuex 5. That lack of focus on cohesive framework options and senseless deprecation of already established libraries is the major problem.
Oh great projection by the way. Not sure who’s angry here but I can tell I’ve hit a nerve. Guess you work on Vue.
I don’t work on Vue itself and cant speak for that team. I’m a developer who use both Vue and React daily and seem to be an exception in that I rather like both, while recognizing both have different strengths and weaknesses (I have also tried other frameworks like Angular which i didn’t like).
But do you have any basis for beliving the majority disagree with the direction?
I vastly prefer Vue 3 setup, but I have no idea if I’m in the minority.
But also it needs to be said that improving DX (or UX, when we are at that) is not about pleasing the majority. It's about the experience for our target audience, which doesn't have to be the majority.
I can also care about design, while my choices look ugly for most people.
During the transition from 2 -> 3 it was a bit messy and I was even against the CompAPI originally, but after having actually used it in our app, it's miles better IMO. I understand all the pro-Options arguments and don't necessarily disagree with a lot of the criticisms about CompAPI, either.
OptionsAPI still exists, and probably always will, since it's already and always was an extra layer built on top of the underlying CompAPI, which itself was exposed publicly in Vue 3.
Looking into the different trade-offs is interesting.
The tutorial and reasoning about the composition api make sense ... but I never feel I need it in my own apps.
If you haven't found a need for this, great for you. Options APIs will also continue to be available for the foreseeable future. But that doesn't mean it is better in any way.
I will say, with 2.x about 50% of bugs where not using Vue.set(...) in some obscure place or way, and those have all gone away, which I love.
It's taken the team some time to get used to how to do things in the new way, but on balance, we do like it.
It feels like there have been some odd caveats, like the new reactivity system approach not working exactly like we'd expect. But caveats exist in the options API too.
I don't see it as two ways in practice, just the legacy way for old projects (which still has good support), and the newer/better way.
Also proper typescript support without annoying workarounds, that alone would make it worth it.
the `defineProps` macro is much, much better than the old way of declaring prop types, for one.
Asking because my experience is that as soon as you have a large and complex component that needs to have multiple, mostly independent functionalities, you'll find the composition APIs to be a godsend. Not to mention all the IDE support. You won't see that until you have first have experience with it.