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.
| Vite: instant dev server | |
| Vue for React developers | |
| Node.js |