A five-stage path through React that puts state modelling before state libraries, and understanding effects before reaching for one.
5 stages
4-7 months part time
JavaScript first
Realistic timeline
4-7 months at 10-15 hours per week, after solid JavaScript
Stages
5 in order
Mentorship
Details below
Learn React in the order that prevents the classic mistakes: state design, effects, data fetching, then frameworks. Work through the stages in order, finish the milestone for each one before moving on, and treat the project ideas as the evidence that a stage is genuinely complete.
Learning order
The stages, in sequence
Each stage assumes the one before it. Skipping ahead is the most common reason people stall.
1
Prerequisites you cannot skip
2-3 weeks to verify
Confirm the JavaScript underneath is solid, because React errors are JavaScript errors.
Skills
Destructuring, spread and rest syntax
Arrow functions and lexical this
map, filter and reduce on arrays
Modules: import and export
Promises, async/await and error handling
Immutability: copying objects and arrays instead of mutating them
Milestone
Explain why mutating an array in place breaks a React list, in your own words.
Project ideas
Rewrite a small vanilla JavaScript app using only pure functions
2
Components and state
4-6 weeks
Build interfaces from composable pieces and model state so the UI cannot contradict itself.
Skills
JSX, props and children
useState and deriving values instead of duplicating state
Lists, keys and why the index is usually a bad key
Conditional rendering and empty states
Lifting state up and passing handlers down
Controlled form inputs and validation
Milestone
A component tree where every piece of state has exactly one owner.
Project ideas
A filterable product list
A multi-step form
A comment thread with replies
3
Effects and data
5-7 weeks
Talk to the outside world without infinite loops, races or stale data.
Skills
useEffect and its dependency array, including what does not belong in one
Cleanup functions and cancelling in-flight requests
Loading, error and empty states as first-class cases
useRef for values that should not trigger renders
Custom hooks for reusable logic
A data-fetching library such as TanStack Query, and what it removes
Milestone
A search interface with debouncing, cancellation and caching that never shows stale results.
Project ideas
A search UI over a public API
An infinite-scroll list
A dashboard with refresh
4
Applications, not pages
6-8 weeks
Structure something large enough that structure starts to matter.
Skills
Routing, nested routes and URL as shared state
Context for genuinely global concerns, and its performance cost
When a state library is warranted and when it is not
Code splitting and lazy loading
Error boundaries and Suspense
Folder structure that scales past twenty components
Milestone
A multi-route application where a shared link reproduces the exact view.
Project ideas
An admin panel with auth-protected routes
A multi-view data explorer
5
Production React
6-8 weeks
Ship React that is fast, tested and accessible.
Skills
React Testing Library: testing behaviour rather than implementation
Profiling, and using memo, useMemo and useCallback only where measured
A framework such as Next.js, and server versus client components
TypeScript with React once JavaScript is comfortable
Bundle analysis and performance budgets
Milestone
A deployed app with a test suite, a good Lighthouse score and no keyboard traps.
Project ideas
Rebuild your best earlier project in a framework, with tests
Mentorship
Mentorship Details Coming Soon
If you want to connect, please WhatsApp: 3265503569
One-to-one mentorship for the roadmaps on Fox Is Happy is being set up. Sessions will cover code review, project feedback, interview preparation and a learning plan matched to where you actually are - not where a generic curriculum assumes you are.
Pricing will be reasonable and listed clearly before you book - pay per session, with student-friendly rates planned. No subscriptions and no bundles you do not need.
Register interest
3265503569
WhatsApp only. Message on WhatsApp to register interest and be told first when places open.
Mention React Developer Roadmap in your message so the reply matches what you are working on.
Resources
Where to learn each part
References worth keeping open, plus the pages here that go deeper.
React is not a difficult library, but it is easy to learn in an order that produces bad habits. Almost every painful React codebase traces back to three or four decisions made early by someone following a tutorial.
Mistake one: starting before the JavaScript is solid
React errors are JavaScript errors wearing a React hat. If destructuring, closures and array methods are still uncertain, every error message is opaque and the only available strategy is copying something from a search result. Stage one exists to verify the foundation rather than to teach it - if any of those items feels shaky, spend a few weeks on the JavaScript Developer Roadmap first. It is the shortest path, not a detour.
Mistake two: duplicating state instead of deriving it
The most common structural bug in React applications is storing the same information twice. A list of items and a separate count of them will disagree eventually. A selected item stored as both an object and an index will disagree sooner. The rule is to keep the minimum state that cannot be calculated, and to compute everything else during render. Most "why is my UI out of sync" questions dissolve the moment state is modelled this way.
If a value can be computed from another value, compute it - do not store it.
Each piece of state should have exactly one owner component.
Server data is a cache of something you do not own; treat it differently from UI state.
The URL is state too, and it is the only state a user can share.
Mistake three: using effects for everything
useEffect exists to synchronise with systems outside React - network requests, subscriptions, timers, the DOM. It is not a general-purpose "run some code" hook. Effects that transform props into state, or that respond to a user action, almost always belong somewhere else: in the render body as a derived value, or in the event handler that caused the change. The React documentation has a whole section called "You Might Not Need an Effect", and working through it removes a surprising number of bugs before they happen.
Mistake four: reaching for a state library too early
Global state libraries solve a real problem that most applications do not have yet. Component state plus a little prop drilling handles far more than people expect, and prop drilling is a signal about component structure rather than a crisis. When you do need shared state, distinguish between server data - which wants caching, revalidation and request deduplication, and belongs in a data-fetching library - and genuine client state such as theme or a shopping cart draft.
Mistake five: optimising before measuring
memo, useMemo and useCallback all have a cost: they add complexity and they make dependency arrays harder to reason about. Applied everywhere by default, they usually make an application slower to develop and no faster to run. Profile first, find the component that actually re-renders too often, and fix that one. The React DevTools profiler will tell you in minutes what guesswork will not tell you at all.
Where to go next
The Frontend Developer Roadmap places React in the wider skill set, including the CSS and accessibility work that React does not cover. If you want to build the API your React app talks to, see the Backend Developer Roadmap, and the AI Coding Prompts include a review prompt that catches several of the mistakes above.
Frequently asked questions
How long does it take to learn React?
With solid JavaScript already in place, roughly four to seven months part time to reach a professional standard. Without that foundation, expect it to take considerably longer and feel much harder.
Do I need Redux?
Usually not at first. Component state and a data-fetching library cover most applications. Add a global state library when you have a concrete problem it solves, not in advance.