React in one evening

React is a UI library with one idea: the interface is a function of state. A component holds state with useState, receives data through props, and re-renders itself when either changes. Everything else — hooks, context, routers — is convenience around that loop.

Do not start new static sites with React: server-rendered pages or plain HTML load faster and break less. Reach for React when the page holds real interactive state — editors, dashboards, wizards — and pair it with Vite instead of the retired create-react-app.

State without tears

Local state lives in useState, shared state in context — and that covers most apps. Reach for an external store only when unrelated components truly share changing data; prop drilling through two levels is not a problem that needs a library. When renders feel slow, the profiler (not memo sprinkled everywhere) tells you which component actually re-renders too often.

Effects are for syncing, not logic

If your effect computes something for rendering, it belongs in the render body or a memo instead — effects run after paint and cause the exact flicker people blame on React. Reserve effects for the outside world: subscriptions, timers, manual DOM work. Fetch-on-mount effects grow into waterfalls; a data library with caching replaces a dozen of them on day one.

Next steps
Vite: instant dev server
Vue for React developers
Node.js