You are reading an article on a blog that took me about twice as long to deploy compared to what I would be used to: what could be the reason for this, if not React’s intrinsic difficulty?
This is not, of course, a technical article. I don’t claim to have the in-depth expertise needed to analyse it from such a perspective. Instead, this is more of a personal opinion on the current state of web development.
I’ve noticed many discussions lately, especially on X/Twitter, around simplifying as opposite as overengineering. @levelsio, for example, emphasises the importance of shipping faster by using simpler stacks. It’s no secret that his setup consists of plain HTML, CSS, PHP, and Javascript/jQuery, with no fancy frameworks or additional layers.
This is in stark contrast with a different story I came across on the same platform. Not too long ago, software developer @BartoszJarocki shared a CV template on GitHub that consisted of a single page, but was deployed using a much more complex tech stack (React + Next.js via Vercel). While many praised his efforts and the value of the project (especially by those familiar with the stack), he received some heavy criticism.
So this begs the question: is the complexity really necessary?
As with many things in life, I came to the conclusion that the answer is somewhere in the middle. React is indeed a complicated library, and the reasons why many people find it difficult are:
- It requires an advanced knowledge of Javascript;
- It’s not MVC (Model-View-Controller), which is the primary architecture we have been used to;
- If you don’t use frameworks such as Next.js or state management solutions like TanStack Query, you are missing out big time on ways to improve your project — you miss out on routing, on SEO, on properly interacting with asynchronous state (here’s a must-read article about this) and so on, with the risk that in the future, it might be too late to go back.
Comparing this to my previous experience with PHP and Laravel, where I found it a breeze to publish full-fledged applications for my clients, the difference is clear. Laravel, with its built-in MVC architecture, felt just more intuitive. It allowed me to focus on solving problems and building features rather than fighting against the framework.
In contrast, with React, I often find myself dealing with complexities that don’t feel necessary. I think the catch is that only once you push through its steep learning curve, you begin to see the advantages. I can see that the component-based architecture, though challenging at first, can offer a flexible and reusable approach that is difficult to replicate with traditional MVC frameworks.
In conclusion, is React worth the effort? I believe it can be, depending on the project’s scope and your willingness to invest the time.
For smaller projects or those with tighter deadlines, sticking to simpler stacks like HTML/CSS/PHP may make more sense, while for large-scale, dynamic applications that require speed, flexibility, and interactivity, the payoff of React’s complexity might be exactly what’s needed.
In the end, it’s all about trade-offs. The more you simplify, the quicker you ship — but sometimes, complexity can lead to greater innovation. As developers, it’s up to us to decide what balance to strike between simplicity and scalability.