Yesterday, I started looking into React after a colleague’s recommendation. As a dedicated Angular developer (when it comes to front-end — GOD I HATE FRONTEND), I initially approached React with significant skepticism. Now? I’m not so sure where I stand, but my perspective has definitely shifted. Before diving deeper into my experience, I should mention that since Meta maintains React and has integrated some telemetry features, I remain somewhat cautious as a privacy-conscious developer.
Context
For context, I’ve spent years building front-end/cross-platform solutions with Angular. Its comprehensive structure, TypeScript integration, and enterprise-ready tooling have always given me confidence when tackling complex projects. I appreciate frameworks that provide clear guidelines and structured approaches to development, which is why Angular has been my go-to solution.
However, after hearing constant praise for React from colleagues and seeing its dominance in job listings, I decided it was time to honestly evaluate it myself rather than dismissing it based on hearsay or outdated information.
And I do like to break the rules sometimes, and react seems to do it without a sweat (jsx…).
The Good
Component Architecture That Actually Makes Sense
React’s approach to components feels natural and intuitive. Breaking UI elements into self-contained, reusable pieces aligns perfectly with how I mentally model interfaces. While Angular has components too, React’s implementation feels lighter and more focused on this core concept.
JSX: Weird But Strangely Satisfying
I never thought I’d enjoy writring HTML-like syntax directly in my JavaScript, but there’s something oddly satisfying about JSX. The tight coupling brgic creates a coherent development experience that, against all my expectations, I’ve found myself enjorying. Don’t get mad at me for saying it’s weird – it definitely is, but in a good way!
Scrimba and Bob: A Learning Experience Worth Having
Learning resources matter tremendously when picking up a new technology, and I’ve been fortunate to find Scrimba, where Bob’s teaching approach has made this journey significantly more pleasant. His explanations and practical examples have been instrumental in helping me see the value in React’s approach.
Vite Makes Development Feel Modern
The development experience with Vite is nothing short of impressive. Hot module replacement works seamlessly, and the build times make Angular’s compilation feel positively archaic in comparison. This alone might be worth the price of admission for some projects.
Philosophical Alignment With My Own Ideas
Interestingly, React’s core principles align closely with ideas I explored in my own front-end research project (srf-js). This philosophical resonance makes learning React feel like discovering a more polished, community-backed version of concepts I’ve already considered and believed in.
Open Source Community That Feels Alive
Despite Meta’s backing, the vibrant open-source community around React is genuinely impressive. The ecosystem feels alive with constant improvements, innovative patterns, and passionate developers creating everything from utility libraries to comprehensive solutions for common problems.
The Bad
Meta’s Involvement Raises Privacy Red Flags
My primary reservation stems from Meta’s stewardship. Their track record with privacy and data handling leaves much to be desired, and I remain uncomfortable with their involvement in React. While the code is open source, the direction and priorities are still influenced by a company whose business model revolves around data collection.
Asset Management Feels Unnecessarily Complicated
The approach to handling assets in React feels awkward compared to what I’m used to. Having to either use absolute paths or import images directly into the code seems unnecessarily complicated and verbose. Why can’t we have a simpler, more intuitive approach to this fundamental aspect of web development?
Enterprise Readiness Is Questionable
Despite many large companies using React, I question whether it’s truly ready for enterprise-scale applications out of the box. Angular’s comprehensive approach to modularity, dependency injection, and integrated tooling still feels more appropriate for complex organizational needs. React often requires cobbling together various libraries to achieve what comes standard in more opinionated frameworks.
CSS Approach Fragmentation Creates Decision Fatigue
The multiple competing approaches to styling (CSS modules, styled-components, Emotion, Tailwind, etc.) create unnecessary decision fatigue compared to Angular’s more opinionated styling approach. Every React project seems to reinvent the wheel when it comes to styling, leading to inconsistent codebases and onboarding challenges.
Testing Setup Requires Too Much Configuration
Setting up comprehensive testing for React applications often requires more configuration and additional libraries compared to Angular’s integrated testing utilities. What should be a straightforward aspect of development workflow becomes yet another series of decisions and setup steps.
The Ugly
React Native: A Promise That Falls Short
React Native’s “write once, run anywhere” promise seems significantly oversold based on my research and conversations with developers who’ve used it extensively. For cross-platform development, I’d recommend using Capacitor with a standard React app for better flexibility and more predictable behavior. The compromises and workarounds required for React Native often negate its purported advantages.
State Management Gets Messy Quick
For anything beyond trivial applications, state management in React becomes a complex affair requiring additional libraries and patterns. While hooks have improved the situation, comparing the elegance of Angular’s reactive forms and services to the Redux/Context API/MobX ecosystem makes me appreciate Angular’s more integrated approach.
TypeScript Integration Feels Bolted-On
While TypeScript works with React, it doesn’t feel as seamlessly integrated as with Angular, where it’s a core part of the experience. The type definitions, especially for complex state management solutions, can become unwieldy and sometimes feel like they’re fighting against React’s more dynamic nature rather than complementing it.
Final Thoughts
These are my honest opinions after my initial exploration of React. Surprisingly, this experience has moved React up slightly in my personal framework rankings. The component model, development experience, and some of the core principles are genuinely impressive.
Will React replace Angular in my toolkit? Probably not, but I’m now open to using it for specific projects where its strengths align with the requirements. I’m considering trying it for one of my upcoming projects or perhaps rewriting my static blog with React to gain more hands-on experience.
What’s clear is that dismissing technologies without proper exploration is limiting. While I still have reservations about React, particularly regarding Meta’s involvement, I’m glad I took the time to form a more nuanced opinion based on actual experience rather than preconceptions.
Leave a Reply