I vastly prefer plain JS over React, but I will admit that React probably was instrumental in helping create frontend frameworks that are actually good, like Svelte. So I will give Facebook credit for that.
Svelte is awesome. Svelte 5's runes are especially powerful because they let reactivity escape the component boundary. The same reactive model works everywhere, whether you're updating the DOM or building plain application logic.
Rich Harris makes the point that React isn't actually reactive: "React doesn’t have any understanding of the values running through your app. It is not Reactive."
>Modern JavaScript frameworks are all about reactivity. Change your application's state, and the view updates automatically. But there's a catch — tracking state changes at runtime adds overhead that eats into your bundle size and performance budgets. In this talk, we'll discover an alternative approach: moving reactivity into the language itself. Your apps have never been smaller or faster than they're about to become.
He starts with spreadsheets as the archetypal reactive system.
Defines reactivity as values automatically updating according to dependency relationships.
Contrasts that with React's model of rerunning component functions and diffing virtual DOM trees.
Argues that React "doesn't understand the values flowing through your application" and therefore isn't reactive in the traditional sense.
Svelte is awesome. Svelte 5's runes are especially powerful because they let reactivity escape the component boundary. The same reactive model works everywhere, whether you're updating the DOM or building plain application logic.
Rich Harris makes the point that React isn't actually reactive: "React doesn’t have any understanding of the values running through your app. It is not Reactive."
Rich Harris - Rethinking reactivity:
https://www.youtube.com/watch?v=AdNJ3fydeao
>Modern JavaScript frameworks are all about reactivity. Change your application's state, and the view updates automatically. But there's a catch — tracking state changes at runtime adds overhead that eats into your bundle size and performance budgets. In this talk, we'll discover an alternative approach: moving reactivity into the language itself. Your apps have never been smaller or faster than they're about to become.
He starts with spreadsheets as the archetypal reactive system.
Defines reactivity as values automatically updating according to dependency relationships.
Contrasts that with React's model of rerunning component functions and diffing virtual DOM trees.
Argues that React "doesn't understand the values flowing through your application" and therefore isn't reactive in the traditional sense.
Virtual DOM is pure overhead:
https://svelte.dev/blog/virtual-dom-is-pure-overhead
>But it turns out that we can achieve a similar programming model without using virtual DOM — and that's where Svelte comes in.
React tracks component renders; reactive systems track data dependencies. React doesn't react, it repeats.
I think React should have been called "Repeat", "Re-Run", "Regurgitate", or "Retch".