React has evolved significantly from its 2013 origins — the component model that developers learned 5 years ago still works, but the ecosystem and best practices have shifted. Here is what matters now and what you can safely ignore.
Server Components: The Paradigm Shift
React Server Components (RSC), now stable in Next.js 13+ and becoming the norm in modern React apps, change where components run. Server components render on the server, can fetch data directly (no useEffect, no loading states), never ship JavaScript to the client, and can access backend resources directly. Client components (marked with ‘use client’) retain the interactivity model you know. The architectural implication: stop thinking of React as a client-side framework with server APIs for data — think of it as a full-stack framework where you choose per component where it runs.
What’s Still True
The component composition model, useState and useEffect for client-side state and side effects, Context for simple global state, and the JSX rendering model are all stable and unlikely to change. The fundamentals are sound; the complexity is in the ecosystem choices layered on top. If you understand core React well, navigating framework-level changes is straightforward.
What to Ignore
Redux in new projects (Zustand and Jotai are simpler alternatives for most use cases). Class components (hooks have replaced them in every meaningful way). Most third-party UI component libraries (Radix UI primitives + Tailwind CSS + shadcn/ui is the new default stack that most alternatives are built on top of anyway). The “React is dying” discourse — React remains the dominant frontend framework by employment market and package downloads.
The Current Best Stack
Next.js 14+ (App Router) for full-stack applications. Tanstack Query for client-side data fetching and caching when RSC is insufficient. Zustand for client-side global state beyond what useState covers. Tailwind CSS for styling. TypeScript as the default (not optional). Vitest for unit tests. Playwright for end-to-end tests. This stack is opinionated but represents the current industry consensus for production React applications.


