
useState: Giving Components Memory
useState gives a component its own memory, letting it track information that changes over time. It's used for everything from handling form input to toggling UI. The biggest footgun: state updates are asynchronous and only apply on the next render.

React Fragments: Group Elements Without a Wrapper
React Fragments let you group multiple elements without adding an extra `<div>` to the DOM. Use them when a component needs to return adjacent elements, like table cells (`<td>`).

React Props: Arguments for Your Components
Think of props as arguments for your UI components, letting you pass data from a parent down to a child. You use them to customize a component's appearance or behavior, like passing a user object to a `ProfileCard`.

JSX: Putting HTML Inside Your JavaScript Components
JSX is a syntax extension that lets you write HTML-like markup directly inside your JavaScript files, keeping UI logic and structure together. It's the standard way to define a React component's output. The footgun is that JSX is stricter than HTML.

React Components: Your UI Building Blocks
Think of React Components as custom, reusable HTML tags you create with JavaScript functions. Use them to build everything from buttons to page layouts, speeding up development.
Next.js 16 makes the app router the only router
The pages directory is officially deprecated. Migration codemods cover most apps in under an hour, and the new router gets streaming RSC by default.
Server Components, explained without the jargon
RSC is not SSR. This deep-dive walks through the request lifecycle, why client components serialize their props, and where the network boundary actually sits.
React interview cheatsheet: hooks rules in 60 seconds
An interview favourite: list every Rules-of-Hooks violation, then explain why useEffect dependency arrays are not 'reactive' the way useMemo's are.