- Babel transpilation aspect (time it takes to build, difficulties associated with ad-hoc debugging in production)
- Bundling/packaging aspect (same reasons as above; time it takes to build, debugging difficulties).
- Huge number of unnecessary dependencies which adds risks/vulnerabilities to projects.
You could argue that it's not React's fault, that it's more about the tooling but I think that it's React's stance on inlining HTML with JavaScript (JSX) which had paved the way for all that bulkiness. From the beginning the project wrongly assumed that:
- Transpilation and bundling doesn't have any costs.
- Dependencies (those needed to do all that fancy transpilation and essentially re-implementing the way the DOM works) don't carry any additional risk and are not a threat to application security, maintenance...