One oft-repeated phrase I hear in blog posts, talks, and podcasts is “React is just JavaScript.” I think this catchy truism is good marketing, but also false.
React is so much more than “just JavaScript”. React is an ecosystem. I feel like it’s a disservice to anyone trying to learn to diminish all that React entails. React shows up on the scene with Babel, Webpack, and JSX (which each have their own learning curve) then quickly branches out into technologies like Redux, React-Router, Immutable.js, Axios, Jest, Next.js, Create-React-App, GraphQL, and whatever weird plugin you need for your app.
The ecosystem is constantly evolving and building off itself, composting old best practices into new best practices. It’s thriving. It’s a biome filled with lifecycles, hype cycles, and major API changes.
In my experience, there’s no casual mode within React. You need to be all-in, keeping up with the ecosystem, or else your knowledge evaporates. I sometimes browse React projects and look at the import
blocks to see if I recognize any of the dependencies; I probably average about ~8%.
The original marketing material for React was “Not a framework, just a view library” but as time has progressed this seems ill-fitting. React is now a foundation, a DSL of sorts, upon which you start building your project. When you remove React as a dependency does all this “just JavaScript” still work? Nope. And it would be silly to expect that.
*[DSL]: Domain Specific Language
Maybe what people mean when they say this is that JSX doesn’t have a for
-loop template syntax, so you use a lot of inline map()
functions in your JSX to loop through data. This seems like a low bar for calling things “just JavaScript”. Or maybe they mean after it has been run thru the Rube Goldberg codemod machine, it’s just JavaScript.
jQuery was just JavaScript too (no VBScript whatsoever). I jest, but I think React and jQuery share a lot about what makes a successful project: an intuitive syntactic sugar API and a bubbling ecosystem of plugins and extensions that solve common developer problems. Other largely-adopted technologies like WordPress, Rails, heck even Linux, possess those same characteristics.
React turned 5 years old this week. I marvel that in such a short amount of time it’s become the somewhat defacto expectation for front-end work. I think it speaks to a lot of talented people working hard to build a sophisticated ecosystem of tools that developers enjoy. As for me and React… it’s complicated. I appreciate a lot of what the React component system offers and the reactive nature of the components, but still find it difficult to marry that developer experience to my own experience.