React Labs: What We've Been Working On – February 2024
React’s latest roadmap, including an optimizing compiler and features like auto-memoization and server actions, is prompting mixed reactions among frontend developers. Many see the advances as powerful but worry React has become overly complex and “magical,” especially with hooks, React Server Components, and the growing influence of Next.js and Vercel, making code harder to reason about and build pipelines more fragile. Others argue React’s ecosystem, backward compatibility, and suitability for large, long-lived apps still justify choosing it, even as alternatives like Vue, Svelte, Preact, MobX, htmx, and server-side frameworks gain interest for their simplicity.
Create React App and Tooling
- CRA is seen as effectively abandoned and was never heavily resourced; it was meant as a starter, not the “best” production tool.
- Commenters note that modern tools (especially Vite) are simpler, faster, and easier to debug than CRA’s opaque Webpack setup.
- Some still use CRA for small apps but acknowledge future issues due to poor maintenance.
Hooks, Complexity, and “Magic”
- Many feel React has become too complex, especially with hooks, hydration, and server/client directives.
- Hooks are described as an embedded language with its own rules that diverge from normal JS intuition; easy cases are easier, but debugging complex code is harder.
- Others argue hooks increase explicitness, better match React’s concurrent architecture, and are not inherently confusing once the mental model is learned.
- There is frustration that React’s explanations and guidance around hooks (e.g.,
useEffect) have shifted over time, causing confusion.
Optimizing Compiler / Auto‑memoization
- The new compiler (React Forget) aims to auto‑memoize and remove many manual
useMemo/useCallbackpatterns. - Some are impressed but uneasy about the “magic” of changing behavior based on semantic value analysis at compile time, especially when it alters perceived language semantics.
- Concerns are raised about yet another compiler layer in already complex build pipelines.
State Management Debates
- Debate over whether
useReducer+useContextcan replace Redux; one side claims it can, the other stresses performance and subscription differences. - Redux Toolkit is cited as having reduced boilerplate, but some still perceive Redux/RTK as verbose.
- MobX gets praise for straightforward reactivity and domain/UI separation, but critics say observer‑style push reactivity leads to spaghetti and surprising recomputations.
React vs Alternatives
- Multiple commenters advocate Vue, Svelte, Preact, htmx, Rails/Hotwire, or traditional server‑side rendering as simpler and more intuitive.
- Others counter that React’s immediate‑mode model, massive ecosystem, hiring pool, and strong backward compatibility still make it the pragmatic choice, especially for complex web apps and React Native.
- Some see modern React as effectively a new, more convoluted system riding on the original library’s popularity.