Angular gives you everything you need to build a complete client-side app, React is just for the view part. You still need other libraries for state management and other things
Car part is a library: tools you choose, you put together. If you choose enough parts you can build a car, but that's not the point. You can attach your windshield wipers to the battery to function, but that won't give you a functioning car, just a feature. Same with React, it gives you rendering, but won't store state. You need Redux for that, another car part.
A barbone car with an engine, a chassis and a steering wheel is a framework. You bring your own wheels, you plug in your own driver seat and then the car runs. That's angular. Angular is built from car parts.
A complete car with everything attached is an engine, you just sit into it and steer it.
You have been so very good at the explanation that my argument feels a little cheap. But still true, you drive the car and it's parts either way, a whole car or a collection of parts bolted to wheels it matters not.
Library is a set of methods/tools you use and you call. A framework is a more complete package, a "frame" around your code, where you write a piece of code that hooks into the framework and the framework itself handles/calls it. The difference is who calls who: with React you call the render method and you setup a lot of things by hand for React to work. Angular is a framework, it comes with a complete package, it tells you what files you should create, it sets up a lot of stuff before it executes your code. And then there are engines which are a complete, self-contained set of code and tools but it gives you the ability to control it with your scripts/code.
Arguably and perhaps subtly I've been saying that when you and your team get hold of a library and make one single integration into your own codebase, one single none conformist non idiomatic usage, react becomes a framework.
Your own code base becomes the framework that uses React as part of its frame. React is still a library. Redux is still a library. Your code base + React + Redux + Other Libraries = Framework.
Yes, React is a library. And yes, to get the same functionality as with a framework like Next.js you need more dependencies. But you can choose what you need. Libraries give you more freedom: for example, you can choose between many different routing libraries for React, or even build your own. Next.js has a built-in router which you have to use.
Libraries are also more flexible for niche use cases. For example, I've successfully used React for a Chrome extension's popup. There's no routing and no server, so a full-stack framework makes no sense. (And by the way, that Chrome extension has exactly 1 runtime dependency, which is React).
13
u/PlasmaFarmer 2d ago
React is not a framework, it's a library. And yeah React is that much kB but how about the gazillion libraries you add to get a functional app?