
Join Dima as he guides you toward mastering the React library in a professional web application development course, with AI, Redux, Router, and Tailwind CSS.
Set up your development environment by installing Node.js and Visual Studio Code, and using Google Chrome. Access and organize the course materials and the handbook for hands-on practice.
Configure vscode with custom React snippets and essential plugins, including prettier, eslint, material icons, autocomplete, and live server, plus autosave on focus change and format on save.
Explore a live React course with watch-and-repeat lessons, three completion levels, practical tasks and tests, an interactive manual, and daily author support for maximum results.
Master object and array destructuring to extract data directly into variables, rename outputs, set defaults, and handle nested structures, all with concise one-line assignments used in React interfaces.
Explore template literals and backticks to embed JavaScript expressions in strings, access object properties like title and rating, and manipulate dates with methods such as split to extract year.
Explore how if/else and the ternary operator work, using age and voting examples to compare outcomes, and learn why simpler, readable expressions trump nested conditionals.
Learn how the and, or, and nullish coalescing operators work in JavaScript, including short-circuiting and conditional rendering in React with practical examples.
Explore optional chaining and the double question mark operator to safely access movie ratings, prevent undefined errors, and sum IBM and Rotten Tomatoes scores with defaults.
Explore how the map method transforms each array element with a callback to create a new array, compare it to forEach, and demonstrate arrow functions for mapping titles.
Discover how to use the filter method to select movies with a rating above nine, returning a new array and enabling chaining with map and forEach.
Master the sort method to arrange arrays of numbers and strings in ascending or descending order. Learn how to copy the original array with spread or slice to avoid mutation.
Replace promise chains with async/await to write cleaner, non-blocking JavaScript and fetch movie data from the Omdb API, including posters and details.
Create a new React project with Vite, learn terminal basics, configure ESLint, install packages, and start the dev server.
Open the final project, clean the starter react setup, and write hello world to show the basic structure. Install npm dependencies, run the dev server, and troubleshoot vite.
Create and compose modular react components by using capitalized function names, returning a single element, and composing header, catalog, product, and footer in the app.
Explore how JSX enables combining JavaScript, HTML, and CSS to create React elements, and reveal how the compiler translates components, including using React.createElement for a header.
Explore how JSX works and its syntax. Learn to create variables and render product data—images, headings, and text—inside JSX with proper scope.
Learn how relative and absolute paths work in vite and react projects. Understand how to access the public folder and export and import modules using default and named exports.
Master JSX rules: blend HTML with JavaScript using curly braces, distinguish JSX from HTML, and render with the ternary operator; capitalize component names and style with camelCase.
Explore how props make React components reusable by creating multiple copies with distinct data—name, image, price, and description—while keeping the same structure.
Learn how props pass data from parent to child components to make React elements reusable and predictable. Explore one-way data flow and the role of props in pure function components.
Render all products from data array with the map method, mapping each item to a product component via props for loading six items with images, names, descriptions, and prices.
Learn how to use destructuring in props to extract the product object from props, remove extra prop references, and apply destructuring in function parameters for cleaner components.
Learn how to replace an unnecessary div wrapper with a react fragment to return multiple elements from a functional component, keeping header, main, and footer intact.
Explains three types of conditional rendering in React, including the ternary operator, the logical and operator, and conditional returns with if outside JSX, with a practical inventory example.
Practice conditional rendering with a ternary operator to highlight sold-out cards and swap text between 'sold out' and price, using JavaScript mode and backticks.
Learn to render dynamic cards from an array using map, pass data through card props, destructure props, render tag arrays, and conditionally hide archived items.
Learn how to handle events in a React app with onClick and callbacks, trigger ui changes, and understand why to pass a function without parentheses and use camelCase event names.
discover how the useState hook enables dynamic state management in React, creating a count variable with setCount, onClick updates, and automatic UI rerendering.
Master updating a count in React using a previous-value callback with useState, ensuring correct increments, proper rerenders, and immutable state via setCount.
Use useState to toggle isOpen and switch between a start button and the app with a cross; reveal image color via a ternary expression and show love at count three.
Install and explore React DevTools to inspect components, view real-time state, and debug with live value changes in the Chrome dev console for React applications.
Create and synchronize a multi-tab interface in React by managing state with useState, rendering tab content, implementing next and previous navigation, and highlighting the active tab.
Practice building a real calculator in React, with multiply, divide, and two extra buttons, using an input state and a universal handleClick function that uses eval.
Build a multi-level React project featuring a task list app with a form to add tasks by priority and due date, and a color-coded, sortable table of tasks.
Lay out a basic project structure with three containers for form, tasks, and completed tasks, including headers, a form component, a task list, buttons, sorting controls, and a footer.
Understand how to control three sections with one use state by building an open sections object, a toggle function, and dynamic keys to open or close each container.
Create a tasks array by capturing form data with React states and onChange handlers. Submit data to build objects with title, priority, and deadline and render them as task cards.
Filter the tasks array into active and completed, then render active tasks with map, pass each task as a prop, destructure its fields, and style by priority.
Finish implementing delete and complete task functionality by wiring buttons to update tasks and completed tasks via ids, using filter and map, and conditionally render the complete button when needed.
Create a two-button sorting system that toggles between date and priority with ascending/descending order, applying the sorted results to the task list using a safe copy and sort logic.
Learn how to structure a large real-world React project by creating separate folders for components, building header, main, footer, and utilities, and refactoring them into independent files.
Create a universal, reusable button component in React by defining props like text, icon, size, variant, full width, and onClick, then render and reuse it across files.
Learn how to add prop types in a React component using the PropTypes library to enforce string, boolean, and function props, including isRequired and defaultProps, with examples of oneOf validations.
Learn how the children prop enables rendering content between opening and closing tags for reusable components. See how to place this content to flexibly add icons and text inside buttons.
Explore prop drilling by tracing how a top-level onClick function passes down to a deeply nested button. Learn the two prop rules: downward flow and optional skipping intermediates.
Explore component composition to reduce prop drilling by using app-level sections and children. Build reusable section and button components with props for a concise, maintainable interface.
Finish the UI library by duplicating button components, passing props like title and variants, sizes, and states, and wiring onClick to demonstrate a real library in a web app.
Explore explicit component passing as an alternative to the children prop, comparing a flexible, wrapper-based approach with direct prop-based composition, and learn when each method enhances readability and maintainability.
Export and import components to organize code, and define reusable props like title and button options. Use the children prop to render nested content and enable component composition.
Register for a weather API to access global weather data and obtain your API key. Learn to use key and q parameters to fetch current conditions, forecasts, and historical data.
Explore how useState updates trigger rerenders and why calling a setter inside render logic causes an infinite loop; learn to place setters in event handlers or JSX instead.
Explore how useEffect works with useState to fetch API data using async/await, prevent infinite rerenders, and control data loading with a dependency array.
Explore more useEffect logic for fetching API data with useState, handling asynchronous data safely, and rendering dynamic city and country information with optional chaining.
Learn how try/catch handles errors in asynchronous fetch requests, validate server responses, and display informative messages in the UI using an error state.
Learn how the useEffect dependency array controls when data fetches run as you type an input city, updating API requests on each change and distinguishing empty versus populated dependencies.
Explore useEffect behavior without a dependency array by running multiple effects, observing render timing, and noting it fires after every rerender unless a dependency array controls it.
Add a loading state and indicator to show data status, and implement render functions for error, loading, and weather data to manage conditional rendering with finally in the async flow.
Enable geolocation-based weather by using browser geolocation API with useEffect to fetch latitude and longitude. Reset state for empty input and refresh the widget when coordinates or city input changes.
Explore how side effects extend beyond a function into the outside world, and how useEffect manages actions such as fetching data, dom title changes, timers, cleanup, local storage, and geolocation.
Discover how the useEffect cleanup function prevents lingering timers and subscriptions on unmount. Identify nine common cases, including timers, event listeners, data subscriptions, and animations, guided by dependency arrays.
Race conditions occur when earlier requests finish after later ones, yielding wrong results from a remote server. Abort controller cancels prior fetches in useEffect to prevent these issues.
Explore using onChange events to trigger asynchronous server requests as an alternative to useEffect for handling side effects in React.
Demonstrate a simple currency exchange tool in React using useEffect to fetch rates from the Frankfurter API, converting an input amount between from and to currencies and displaying the result.
Build a dynamic currency converter widget in a React project that uses useEffect to load currencies from the Frankfurter API, performs async conversions, and handles loading and errors with validations.
Fetch currency data from the frankfurter api, populate from and to currency selects with object.keys, and manage amount and selections using react state and useeffect.
Delve into the theory of how react works under the hood, learn to optimize your code for efficiency, and prepare for interviews by understanding the program's execution sequence.
Explore how React evolved from class components to functional components, with hooks like useState and useEffect, highlighting lighter, faster rendering and the presence of legacy code.
Explore the differences between components, instances, and elements in React, including functional components, props, and JSX returns, and learn how a component becomes an element on screen.
Explain rendering in React as under-the-hood process that creates a virtual dom from a component, compares it to the previous version, and updates the real dom in the commit phase.
Explore the fiber tree, the core engine of React, mutating between renders and connecting the virtual dom with the real dom, diffing changes and guiding the commit phase.
Explore how React renders via the render and commit phases, leveraging the virtual DOM and fiber tree. Learn how diffing guides updates so only changed elements are rerendered.
explore memoization to improve react performance by preventing unnecessary rerenders of child components when props stay the same, using react memo strategically for selected functional components.
Discover how the commit phase applies render results to the real dom, updates elements, and runs useeffect with a dependency array after rendering, distinguishing it from the synchronous render phase.
Explore how the diffing mechanism in React compares previous and new trees, why the key prop matters, and how unique keys prevent stale state in tab content and selective updates.
Learn how batching state updates in React reduces renders, and how React 18 extends this to timers, with callbacks based on previous state for correctness.
Explore the mounting and unmounting of components and the component lifecycle. Learn how rerendering occurs from state or props changes and how useEffect cleanup handles timers and unsubscriptions.
Clarify the differences between frameworks and libraries with real-life renovation analogies, showing how frameworks like Angular or Django control the process, while libraries like React provide ready-made packages you orchestrate.
Explore the useRef hook, preserving values between renders without triggering a rerender, and compare it to variables and useState.
Learn how to use useRef for accessing dom elements in React, preserving element references between renders, focusing inputs via inputRef.current, and comparing declarative React patterns with imperative vanilla approaches.
Compare useRef, regular variables, and useState to understand rerenders and value persistence. Learn practical uses for dom elements, such as scroll values, element dimensions, and video player control.
Learn to build reusable custom hooks in React, including data fetching with useState and useEffect, error handling, loading indicators, and proper hook naming conventions.
Welcome!
I’m excited to welcome you to the complete course on the most popular and in-demand library for Front-End web development — React JS.
Inside the course, you will find:
The entire native React — from the very basics to advanced concepts, step by step together with the instructor.
A complete study of the key libraries of the React ecosystem — React Redux and React Router, including the latest syntax and modern development standards.
Over 200 video lessons covering all the nuances of building web applications with React.
More than 13 hands-on assignments for self-practice on each course topic.
Over 100 self-check quizzes to help reinforce your knowledge.
An author’s interactive workbook — a textbook with more than 270 pages.
A bonus module on development with neural networks.
Instructor support and daily answers to all your questions.
Full understanding of React JS / React Redux / React Router
In this course, we will dive into how React works under the hood, so that you understand its logic and philosophy, not just memorize methods and functions.
A Modern React JS Course
Unlike many courses based on outdated versions of React, this course introduces you to the most modern development standards, the new syntax including React 19 (December 5, 2024), and the latest updates of React Redux and React Router, including Redux Toolkit and React Router 6.4+.
Free Workbook — Course Companion
To support your learning, I’ve created a detailed interactive workbook of more than 270 pages, which brings together all the methods and techniques of React JS and its ecosystem libraries.
This workbook is my special pride. It contains hundreds of examples explaining all the nuances of working with React and its libraries in a clear and accessible way.
Full Tailwind CSS Course
Additionally, as a bonus, we will study the most modern and in-demand framework for styling web applications — Tailwind CSS, which will allow you to bring any design solutions in your projects to life.
Practice, Practice, and More Practice
This course is fully practice-based. Every topic is learned in the process of developing multiple projects — from tabs, toggles, and modal windows to task planners, currency converters, and even an online store.
JavaScript Essentials Included
To take this course, you need basic knowledge of HTML, CSS, and JavaScript.
If you are not confident in your JavaScript skills, the course includes a dedicated module for revising everything you need from native JavaScript.
Daily Answers from the Instructor
And of course, if you have questions, you can always ask me. I answer all students every day, without exceptions.
All practical assignments come with answers and detailed explanations.
Neural Networks Module as a Gift
We will also cover modern development methods, including building applications with neural networks.
So, what is the Foundation School?
Foundation is a unique teaching methodology — from simple to complex.
Thousands of students around the world have already appreciated our approach. The average course rating from more than 9,000 students is 4.82 out of 5, which is among the best results across all online courses.
Try the modern learning format with Foundation, and you won’t want to study any other way.
See you in class!