use() — read promises and contexts inline
React 19 introduced use(): a hook that reads a promise (suspending if it's pending) or a context (just like useContext). Unlike useContext, you can call use() conditionally and inside loops. That's the breakthrough — it stops being a special-case 'rules of hooks' violation.
Actions — form submissions that just work
Actions are async functions you bind to forms. React handles the pending state, errors, and optimistic updates for you. useActionState gives you the latest result + a pending flag without any of the setLoading(true); try { ... } finally { setLoading(false); } ritual.
The compiler — automatic memoization
The React Compiler (still in beta during cwkPippa's build, but landing soon) auto-memoizes components and hooks at compile time. The era of manually wrapping everything in useMemo and useCallback is ending. Your code stays clean, performance stays good.
useMemo on something the compiler will memoize for free, you're adding noise. Profile first. Optimize only the things that show up hot.