Do modern JS libraries with virtual DOM and JSX add unnecessary complexity?

I’ve been developing web applications for several years now. Recently I started questioning whether current popular libraries that use virtual DOM and JSX syntax are making things more complicated than they need to be.

I decided to experiment with simpler approaches using reactive state management and regular functions instead of component-based architectures. No JSX compilation step, no virtual DOM diffing, just plain JavaScript with reactive data binding. The code feels more straightforward and easier to understand.

Has anyone else experimented with lightweight reactive approaches? Do you think the added layers of abstraction in mainstream frameworks justify their benefits, or are we overengineering our frontend solutions?

I’ve used both extensively, and it really comes down to your project size and team setup. Virtual DOM frameworks shine with complex state management and bigger teams where you need consistency over personal coding style. Sure, there’s overhead, but they prevent tons of bugs that used to kill DOM manipulation projects. Your point about reactive approaches hits home though. I’ve had great luck with SolidJS and vanilla reactive patterns on smaller projects. The mental model’s way clearer without all that component lifecycle mess. But once you want time-travel debugging or solid dev tools, those abstraction layers become worth it. It’s not about whether they add complexity - it’s whether that complexity pays off for your specific situation.

The complexity question gets really interesting when you think about long-term maintenance. I worked on a big e-commerce platform for three years that started with vanilla JavaScript and reactive patterns like you’re describing. At first, development was blazing fast - no build steps, no learning curve for new devs, and debugging was simple since you could see exactly what was happening in the DOM. But around 18 months in, we hit a wall. State sync across multiple components became a total nightmare, and we were basically reinventing stuff React already solved. Without standardized component structure, every developer did their own thing, which made code reviews painful and onboarding slow. When we switched to React, productivity tanked initially, but six months later we were shipping features faster than ever. The virtual DOM actually simplified how we thought about things - we could think declaratively instead of manually managing DOM updates. The real win wasn’t the virtual DOM itself but all the ecosystem and patterns that came with it.

depends what ur building. I’ve been using vanilla js with lightweight reactive libs for side projects - its refreshing after wrestling with webpack all day at work. but try explaining ur custom setup to a new dev vs just saying “its react.” learning curve looks steeper, but everyone knows react.

This topic was automatically closed 6 hours after the last reply. New replies are no longer allowed.