React feels insane

Introduction and Sponsor Message 00:00

  • The video introduces a blog post critiquing React, with the host sharing initial curiosity and skepticism
  • The host notes a decrease in "React is terrible" takes but is still interested in analyzing new ones
  • Sponsor segment discusses the challenges of implementing authentication and the benefits of Work OS for enterprise-ready auth, including a free tier for up to 1 million users

Early Web Development and Frameworks (Angular, jQuery) 02:27

  • AngularJS was a milestone, providing the first major framework for building web apps from scratch, influencing tools like TypeScript
  • Pre-Angular, web development was dominated by simple libraries and direct DOM manipulation (e.g., jQuery), which didn't scale well for complex apps
  • jQuery was sufficient for blogs or simple sites but became unmanageable for more complex or collaborative apps
  • Introduction of components (called directives in Angular) and two-way binding were key innovations that improved scalability and maintainability

Complexity Spectrum of Web Apps and Framework Choices 07:47

  • Complexity in web apps ranges from static blogs to highly interactive applications like Figma
  • Simple tools (HTMX, Astro) are best for static or low-interactivity sites, while jQuery covers limited interactivity
  • Frameworks like Angular and React are more appropriate for higher-complexity scenarios (e-commerce, social feeds, video calls)
  • The host emphasizes that tools become unnecessarily complicated if used for problems beneath their intended complexity level
  • Team size and project scale increase with app complexity, affecting framework suitability and usefulness

React, Personal Experience, and Industry Adoption 13:05

  • React emerged as a simpler alternative to Angular, focusing on components with fewer built-in conventions, leading to a "bring your own" approach
  • Early criticism included React apps having bespoke frameworks made up of various libraries, each with their own quality and reliability
  • The host recounts a personal transition from backend development to embracing React for frontend, especially at Twitch, citing increased team contribution and maintainability
  • Pushes back against the notion that industry-wide React adoption is due to mass delusion, emphasizing collective expertise and needs for complexity

Critique of the Blog Post: React State, Hooks, and Misuse 18:39

  • The blog post expresses confusion and frustration with React's state management, particularly the perceived lack of enforced architecture
  • Misunderstanding of React's lack of built-in global state; global state management (like Redux) is optional and context-dependent
  • Prop drilling (passing data through multiple layers) is not as problematic as often portrayed, and global variables/state should be used judiciously
  • Criticism extends to React hooks, particularly useEffect, and the misconception that state should be sideloaded everywhere

Misapplication of React Patterns and State Management 23:08

  • The author of the blog post conflates problems of complexity and maintainability with React itself, rather than poor code structure or misunderstanding
  • Host emphasizes the power and flexibility of hooks for reusable stateful behaviors, and the importance of state-driven, not component-driven, design
  • useEffect is often misused; effects should synchronize with external systems, not be used for user-triggered API calls or local state mutations
  • Host demonstrates proper data fetching using Tanstack Query (React Query) as a modern alternative to useEffect-driven data fetching, improving clarity and reducing errors
  • Misuse of hooks and effects often stems from lack of knowledge, yet React enables even developers with limited understanding to ship working products

Outdated Patterns, Documentation, and Learning Curve 45:02

  • The blog post references outdated React patterns (higher order components, render props) that have largely been replaced by hooks
  • Documentation and ecosystem evolution have addressed many of the issues cited, but some remain misinformed due to not keeping up-to-date
  • Host encourages learning from current best practices and ecosystem libraries (React Query, SWR, modern routing and data libraries)

Reflections on Complexity, Web App Needs, and "Insanity" 49:01

  • Perception of insanity or over-complexity in frameworks often comes from limited perspective or experience—more complex apps naturally require more powerful tooling
  • Most simple websites don't need React, but the majority of time spent on the web is within complex applications that do require such frameworks
  • Arguments based on "most websites are simple" misunderstand where developer effort and user engagement are concentrated
  • Misunderstanding technical complexity is not an inherent flaw in the framework; it's often a result of insufficient learning or inappropriate use

Closing Thoughts and Advice 55:31

  • Host suggests foundational improvements such as reducing unnecessary features (inputs/outputs) and complexity in codebases
  • Encourages readers and viewers to study documentation and seek to understand modern frameworks before dismissing them as insane
  • Warns against conflating lack of understanding with inherent platform flaws and advocates for continuous learning and humility
  • Video ends with the host expressing frustration at the prevalence of outdated critiques and the importance of good practices when using React