React 19 Breaks Async Composability
React’s evolving patterns (classes, hooks, compiler)
- Frequent “best practice” shifts lead to large refactors of working code; many see this as wasteful churn.
- Some argue class components were React’s last “good” idea; others find function components much cleaner and hooks a major improvement in composing side effects and logic.
- Critics of hooks see them as “magic” that’s hard to debug in large, aging apps, fearing the upcoming compiler will push more behavior into opaque internals and reduce developer understanding.
- There is debate over calling them “functional components”: they are functions but not truly functional in the FP sense, since they rely on shared mutable state.
Async composability and React 19
- The change is framed as degrading async composability: parallel lazy-loading patterns are pushed toward waterfall loading to improve rendering consistency and loading states.
- Some say “nothing functional breaks,” but UX worsens for patterns that previously did parallel fetches.
- Others emphasize that Suspense and related patterns were always awkward for dependent queries and complex data flows; hooks don’t compose well with promises.
- Proposed mitigations (e.g., in routing libraries) help simple cases but are seen as insufficient for multi-step or dependent data fetching.
Ecosystem churn and maintenance pain
- Many describe JavaScript/React tooling as fragile: projects can stop building after months due to dependency, bundler, or Node changes.
- Comparisons are made to PHP and some other stacks where decade-old code often still runs with minimal changes, though this is noted as not universally true.
- Package manager churn (npm → yarn → pnpm → bun) is cited as emblematic; some report relief using tools like pnpm, but others see it as more flavor-of-the-week complexity.
SSR, SPAs, and framework direction (Next.js/Vercel)
- There’s frustration that client-side apps that just talk to JSON APIs are being pushed toward SSR/“app router” paradigms optimized for content-heavy sites.
- Some view Next.js-driven features and React “server components” as aligning React with Vercel’s priorities, eroding framework-agnostic usage.
- Concern extends to Svelte/SvelteKit because many core maintainers are also employed by the same company.
Overuse of React and alternatives
- Several argue React is used in ~“95%” of cases where simpler tech (plain HTML, small JS, htmx, Rails/Phoenix, Lit, vanilla JS + web components) would suffice and be easier to maintain.
- Others counter that teams choose React for hiring, familiarity, and a shared mental model, even when technically “overpowered” for the problem.
- Vue is praised for simpler reactivity and event-driven patterns, though some find its Composition API harder than React hooks. Angular is widely criticized for churn and complexity.