React

React Foundation

Learn the foundations of React by building interactive interfaces with components, props, state, events, lists, and forms.

  • Beginner
  • About 8 weeks
  • 9 milestones
  • 57 steps
ReactJavaScriptCSSHTML
What you will have builta small interactive React application that uses reusable components, state, user interactions, lists, and forms.Start this journey

What this asks of you

Every figure below is read from the journey itself, not written about it.

BeginnerNo prior experience needed
About 8 weeksAn estimate, not a deadline
9 milestonesEach one claims a capability
57 stepsShort, and every one is built

What you will be able to do

Every milestone claims one engineering capability. You reach it by building something, not by finishing a chapter.

Understand ReactExplain how React builds user interfaces from components and how React responds when application data changes.You already know how to build web pages with HTML, CSS, and JavaScript. React introduces a different way to organise the interface: instead of treating the page as one large document, you build it from reusable components. Before working with props, state, events, and forms, you need to understand what React is doing and why components are useful. This milestone establishes that foundation so that later React concepts are introduced as solutions to real interface problems rather than as isolated features.
4 steps
Show the 4 steps
  • From Web Pages to React Interfaces

    Understand why React is used to build interfaces and how a React application differs from the HTML, CSS, and JavaScript approach you have already used.

  • Understand React Components

    Understand what a React component is, why interfaces are divided into components, and how a component represents a reusable part of an interface.

  • Create Your First React Component

    Create a simple React component and render it as part of an application.

  • Compose an Interface from Components

    Combine multiple React components to build a complete interface from smaller, meaningful parts.

Build ComponentsBuild reusable React components and organise them into a clear interface structure.React applications are built from components, but useful applications need more than a few functions in one file. You need to learn how to design components around meaningful interface responsibilities and organise them as an application grows. This milestone develops that practical component-building skill before we introduce JSX expressions and passing data with props.
4 steps
Show the 4 steps
  • Identify Component Responsibilities

    Identify the responsibilities of different parts of a React interface and decide which parts should become separate components.

  • Create Components in Separate Files

    Create React components in separate files and import them into the main application so the interface remains organised and easy to maintain.

  • Reuse a Component

    Reuse a React component in multiple places to avoid duplicating interface markup and keep repeated UI consistent.

  • Build a Component-Based Interface

    Build a small React interface by organising meaningful UI sections into separate components and composing them into one application.

Write JSXWrite valid JSX to describe React interfaces and use JavaScript expressions and attributes within JSX.React components use JSX to describe the interfaces they return. After learning to build and organise components, learners need to understand JSX syntax so they can describe UI structures correctly, display dynamic values, and work confidently with React components.
4 steps
Show the 4 steps
  • Understand JSX Syntax

    Understand how JSX describes the structure of a React interface and apply its basic syntax rules when writing a component.

  • Embed JavaScript Expressions in JSX

    Embed JavaScript Expressions in JSX

  • Use Attributes in JSX

    Use JSX attributes to configure elements, apply CSS classes, and provide information required to display images correctly.

  • Work with JSX Elements and Fragments

    Work with JSX Elements and Fragments

Pass Data with PropsPass data from parent components to child components using props and use that data to render reusable React interfaces.Components become more useful when they can display different content without duplicating their implementation. Props provide a way for parent components to pass data to child components. After learning component structure and JSX, learners are ready to use props to build flexible, reusable interfaces.
6 steps
Show the 6 steps
  • Understand Props

    Understand how props allow a parent component to pass data to a child component and influence what the child displays.

  • Pass Props to Components

    Pass multiple values from a parent component to a child component and use those props to display different content in a reusable React interface.

  • Destructure Props

    Use JavaScript object destructuring to access individual props directly in a React component.

  • Pass Different Types of Props

    Pass string, number, and boolean values as props and use those values appropriately inside a React component.

  • Set Default Values for Props

    Provide default values for optional props so a React component can display meaningful content when a parent does not supply those values.

  • Build a Reusable Interface with Props

    Build a reusable React interface by passing and destructuring props, using different value types, and providing default values for optional content.

Handle User EventsHandle user interactions in React by attaching event handlers to elements and responding to events such as button clicks.React interfaces need to respond when users click buttons, enter information, or interact with other elements. After learning components, JSX, and props, learners are ready to connect interface elements to event handlers and make their applications respond to user actions.
5 steps
Show the 5 steps
  • Respond to a Button Click

    Handle a button click in React by attaching an event handler that executes when the user interacts with the button.

  • Handle Events with Functions

    Define event handler functions inside a React component and connect different handlers to the appropriate interface elements.

  • Pass Arguments to Event Handlers

    Pass specific values to an event handler when a user interacts with a React element by using an arrow function in the event attribute.

  • Respond to Input Events

    Handle text input events in React and read the current input value from the event object.

  • Combine Events in an Interactive Interface

    Combine button-click and input event handlers to respond to different user interactions within a React interface.

Manage StateManage changing data in React components using state and update the rendered interface in response to user interactions.Event handlers allow an application to respond to user actions, but responding often requires the interface to change. React state provides a way to remember changing information and render the interface again when that information changes. After learning components, JSX, props, and event handling, learners are ready to make interfaces genuinely interactive using state.
10 steps
Show the 10 steps
  • Understand React State

    Understand how React state stores changing information in a component and how updating state causes React to render the interface with the new value.

  • Create and Update State with useState

    Use React's `useState` hook to initialise a state variable and update its value through the setter function.

  • Understand State and Re-rendering

    Explain how updating React state triggers a re-render and how the component uses the updated state value to produce the interface.

  • Update State Based on Its Previous Value

    Update React state using a functional setter that receives the previous state value and returns the next value.

  • Manage More Than One State Value

    Manage multiple independent state values in a React component and update each value through its own state setter.

  • Manage State Without Direct Mutation

    Update React state through its setter function rather than directly assigning a new value to the state variable.

  • Build an Interactive Counter

    Build an interactive React counter that displays state and supports increasing, decreasing, and resetting its value through state updates.

  • Update State from User Input

    Use React state to store text entered by a user and update the interface as the input value changes.

  • Build an Interactive Form with State

    Manage multiple form input values using React state and display the current values in a live profile preview.

  • Build a State-Driven Interface

    Build an interactive React interface that uses state and user events to update displayed information and status messages.

Render Lists and Conditional UIRender collections of data as React elements and display interface content based on conditions.Real interfaces rarely display just one item or remain the same in every situation. A dashboard may show several courses, a task tracker may display multiple tasks, and an interface may show different messages depending on the available data or current state. After learning components, props, events, and state, the learner is ready to use data to control larger parts of the interface. This milestone introduces rendering lists, using keys to identify items, and displaying or hiding UI based on conditions.
10 steps
Show the 10 steps
  • Render a List of Items

    Render an array of data as a list of React elements using JavaScript's `map()` method.

  • Use Keys to Identify List Items

    Assign unique, stable keys to elements rendered from arrays so React can identify individual items when a list changes.

  • Render UI Based on a Condition

    Use JavaScript conditional expressions in JSX to display different interface content based on a value or condition.

  • Show or Hide Elements with Logical AND

    Use JavaScript's logical AND (`&&`) operator in JSX to render an element only when a specified condition is true.

  • Render Different UI with Multiple Conditions

    Use JavaScript conditional logic inside a React component to render different interface messages for multiple possible states.

  • Combine Lists with Conditional UI

    Render a list of data in React and use conditional expressions to display appropriate content when the list contains items or is empty.

  • Render Lists from Objects with Different Properties

    Render a collection of objects in React by accessing multiple properties from each object and displaying them in a structured interface.

  • Build a Data-Driven Interface with Lists and Conditions

    Combine list rendering and conditional expressions to display structured data and show different content according to each item's properties.

  • Review Lists and Conditional UI in a Small Interface

    Build a small React interface that combines array rendering, object properties, stable keys, and conditional UI to display data-driven content.

  • Choose and Apply Conditional UI Patterns

    Choose appropriate conditional expressions and combine them with list rendering to display data-driven interface elements for different item states.

Build FormsBuild React forms that capture user input, manage field values using state, handle submission, and display basic validation feedback.Forms allow users to provide information to an application through text fields, selection controls, and submission actions. They are used for registration, login, search, feedback, and many other everyday interactions. After learning React events, state, and conditional UI, the learner is ready to combine these concepts to build forms that respond to user input. This milestone introduces controlled inputs, managing multiple field values, handling form submission, and providing basic validation feedback before the learner builds a complete form.
6 steps
Show the 6 steps
  • Understand Forms in React

    Explain how HTML forms collect user input and how React can handle form submission to respond to user-provided information.

  • Handle Form Input with State

    Use React state to store a form input's value and update the interface as the user types.

  • Manage Multiple Form Fields

    Manage multiple controlled form inputs using React state and display their current values together in a live preview.

  • Handle Form Submission

    Handle React form submission by reading the current input values, preventing the browser's default submission behaviour, and displaying the submitted information.

  • Validate Input and Display Feedback

    Validate required form fields during submission and display appropriate feedback when input is missing or the form is submitted successfully.

  • Build an Interactive Form

    Build a complete React form that combines controlled inputs, state management, submission handling, basic validation, and conditional feedback.

Compose a Small React InterfaceBuild a small interactive React application by composing reusable components, passing data through props, managing state, handling user interactions, rendering lists and conditional UI, and applying CSS styling.The learner has practised the core building blocks of React, including components, JSX, props, events, state, lists, conditional rendering, and forms. The next step is to bring these skills together in one small application. This milestone focuses on how the pieces work together: breaking an interface into components, passing data between them, connecting user interactions to state, and displaying changing information. The learner will also apply CSS to make the interface clear, usable, and visually organised.
8 steps
Show the 8 steps
  • Plan the Interface and Identify Components

    Identify the main parts of a small React application and decide how to divide its interface into components based on their responsibilities.

  • Compose the Interface from Components

    Compose a React interface by rendering multiple function components inside a parent component and organising them into a meaningful page structure.

  • Pass Data Through Props

    Pass data from a parent component to child components through props so that the same component can display different content based on the data it receives.

  • Connect User Interactions and State

    Use React state and event handlers to capture a user interaction, update application data, and display the updated interface.

  • Render Dynamic Lists and Status Messages

    Render a collection of learning goals from an array of objects and display appropriate status messages based on the current collection data.

  • Changing the array data changes the rendered list and summary without rewriting the JSX for each item.

    Build a controlled React form that validates user input and adds a new learning goal to a state-managed collection, updating the list and summary automatically.

  • Style the Interface with CSS

    Apply CSS to a React application using `className`, an imported stylesheet, and basic layout, spacing, typography, and colour rules to create a clear and usable interface.

  • Build and Review the Complete Interface

    Build and verify a complete interactive React application by integrating reusable components, props, state, event handling, dynamic lists, form validation, conditional UI, and CSS styling.

How the work is verified

  1. ReadThe context you need for this step, and why it matters. Never more than that.
  2. BuildYou produce something real. The work is yours, in your own repository.
  3. SubmitYou send it, with a note on what you chose and what you were unsure about.
  4. ReviewA senior engineer reads it and responds. They may ask for changes — that is the normal path through engineering review, not a failure.
  5. VerifiedThe capability is confirmed, it goes on your record, and the next step opens.

How you want to work

You choose when you start. Both cover the same journey and the same definition of done.

Mentor guidedReviewed by a person

A senior engineer is assigned to you. They read every submission, respond in writing, and decide when a capability is verified. Expect to be asked for changes.

Self pacedVerified by you

You work through the same journey and verify your own work against the same definition of done. Nothing is submitted to anyone, and nothing waits on anyone.

What you end up with

Counted from this journey, not described in general.

a small interactive React application that uses reusable components, state, user interactions, lists, and forms.Built by you, in your own repository.
9 verified capabilitiesEach one confirmed against its definition of done, with the name of whoever confirmed it. There is no certificate. The work is the credential.

Ready to start React Foundation?

You will choose how you want to work on the next screen. Nothing starts until you confirm it. You can run several journeys at once, and each one is mentor-guided or self-paced on its own.

Start this journey