React builds interfaces from components — reusable pieces of UI with their own state and markup. Write `<Button label="Save" />` once, use it everywhere. When data changes, React updates only the parts of the page that need it instead of reloading everything.
JSX looks like HTML inside JavaScript. Props pass data down; state holds data that changes. Hooks like `useState` and `useEffect` manage behavior in function components — the modern default over class components most tutorials still mention in passing.
Next.js is a React framework that answers "how do I route, fetch data, and deploy?" File-based routing: `app/about/page.tsx` becomes `/about`. Server components fetch on the server and send HTML faster. API routes give you a backend in the same project for small apps.
Create a project with `npx create-next-app@latest`, pick TypeScript if you want types from day one — many teams do. Run dev server, edit the homepage, deploy to Vercel in minutes. That loop — edit, hot reload, ship — is why startups reach for this stack.
Ecosystem extras come as needed. Tailwind for styling. React Query for server state. Zustand or Redux when global state grows teeth. You do not need all of them on project one.
React is not the only path — Vue, Svelte, and plain HTML still win for many sites. Choose React when component reuse, hiring pool, and library depth matter. Learn JavaScript fundamentals first; frameworks are easier when closures and async/await already make sense.