Course Overview
** Just launched 16 BONUS hours of Next.js content in May 2024!
** Take this course after taking my #1 bestselling JavaScript course (900,000+ students)
In 2024, React is still the #1 skill to learn if you want to become a successful front-end developer!
But it can be hard. There are so many moving parts, so many different libraries, so many tutorials out there.
That's why you came here... And you came to the right place! This is THE ultimate React course for 2024 and beyond.
A practice-heavy approach to master React by building polished apps, backed up by diagrams, theory, and looks under the hood of React.
The all-in-one package that takes you from zero to truly understanding React and building modern, powerful, and professional web applications.
Real projects. Real explanations. Real React.
[01] Why is this the right React course for you?
This is the most epic React (+ Next.js) course on Udemy, and it's fundamentally different from all the other ones.
Here's why:
Contains the biggest and most professional project, where we implement many common app features (see promo video!)
Super detailed explanations of all important concepts with carefully crafted and animated diagrams
A huge focus on "how to think in React" and modern best practices
A long section that explores how React actually works behind the scenes will give you the confidence to use React effectively on your own
Advanced design patterns like compound components will make you think like a senior React engineer
Many sections (16 hours!) on Next.js with the modern "app" router (with React Server Components and Server Actions)
And these are just the highlights! Check out the full list below (+ the promo video and curriculum).
Also, make no mistake: "React course" actually means "Front-end development with React and modern libraries course".
That's right, besides the React library itself, you will learn and master them all: React Router, Redux, Redux Toolkit, React Query, React Hook Form, Styled Components, Tailwind CSS, Next.js, and more.
This is how we plan, build, and deploy professional projects! We even use industry-standard tools such as Supabase (fully-fledged back-end), GitHub, Netlify, and Vercel.
As you expect, this course is 100% project-based. So throughout the course, you'll start building your portfolio of 10+ beautiful and high-quality React apps, where each one will showcase a few of the new skills you will be learning.
By the end of the course, you will have all the knowledge and confidence that you need to ace your job interviews and become the professional React developer that companies are looking for.
[02] Why am I the right React teacher for you?
My name is Jonas, I'm an experienced web developer and designer, and one of Udemy's top instructors. I've been teaching web development courses since 2015 to over 1,900,000 developers, so I know exactly how students learn and what is needed to master any subject.
With this in mind, I designed the ideal curriculum for this course: a unique blend of real-world projects, deep explanations, and theory lectures, to turn you into a confident React and Next.js developer in just a couple of weeks.
Ready to become a confident and independent React + Next.js developer, highly capable of building your own apps? Then don't wait any longer, and start your React journey today!
[03] Still not sure? Here are all the nerdy details of what we'll cover:
React fundamentals [why we even need React, components, JSX, props, events, forms, state, props vs. state]
How to think about state [where to place state, guidelines, lifting state up, local vs. global state, UI vs. remote state]
How to think about components [how to split components, props as API, how to build reusable and composable components, the children prop]
Deep dive into effects and useEffect [data fetching, lifecycle vs. synchronization, when to use effects, effects vs. event handlers]
Deep dive into hooks [rules of hooks, how hooks work, useRef, building super-reusable custom hooks]
Performance optimization [wasted renders, memoization with memo, useMemo, and useCallback, optimizing Context API, code splitting + Suspense]
Advanced state management [useReducer hook, the Context API, Redux, Redux Toolkit, Thunks, React Query]
Building Single-Page Applications (SPA) [Vite, routing with React Router, URL parameters and query strings for state management, data loaders and actions (v6.4+)]
Building real-world features found in many apps [authentication and authorization, data sorting, filtering and pagination, dark mode, dashboard with charts, etc.]
Creating your own back-end with a DB and API using Supabase [gain the power to build full-stack apps on your own!]
How to style React apps [Tailwind CSS, CSS Modules, and Styled Components]
Advanced React patterns used by senior developers [render props, higher-order components, compound components (to build a modal, a context menu, and more)]
How React works behind the scenes [rendering, virtual DOM, reconciliation, fiber tree, key prop, events, state batching, etc.]
Next.js with the "app" router, React Server Components, and Server Actions [server-side rendering, static vs. dynamic rendering, state management between server and client, data loading strategies, streaming, caching, image and font optimization, authentication with NextAuth, modern React hooks (useFormState and useOptimistic)]
[04] By signing up today, you'll also get:
Up-to-date HD-quality videos, that are easy to search and reference (great for Udemy Business learners)
Downloadable slides PDF for 70+ theory videos (not boring, I promise!)
Professional English captions (not auto-generated)
Downloadable assets and starter and final code for each project
Free and fast support in the course Q&A
10+ challenges and exercises to practice your skills (solutions included)
FAQ
FAQ area empty
Course curriculum
-
Section Overview
39 -
Why Do Front-End Frameworks Exist?
627 -
React vs. Vanilla JavaScript
428 Xem trước -
What is React?
557 -
Setting Up Our Development Environment
527 Xem trước -
Pure React
889 -
A Quick Look at React's Official Documentation
196 -
Setting Up a New React Project: The Options
461 -
Setting Up a Project With Create-React-App
768
-
Section Overview
55 -
Destructuring Objects and Arrays
658 -
Rest/Spread Operator
593 -
Template Literals
290 -
Ternaries Instead of if/else Statements
349 -
Arrow Functions
299 -
Short-Circuiting And Logical Operators: &&, ||, ??
632 -
Optional Chaining
390 -
The Array map Method
515 -
The Array filter Method
516 -
The Array reduce Method
440 -
The Array sort Method
398 -
Working With Immutable Arrays
666 -
Asynchronous JavaScript: Promises
491 -
Asynchronous JavaScript: Async/Await
450
-
Section Overview
54 -
Rendering the Root Component and Strict Mode
445 -
Before We Start Coding: Debugging
586 -
Components as Building Blocks
274 -
Creating And Reusing a Component
580 -
What is JSX?
385 -
Creating More Components
487 -
JavaScript Logic in Components
266 -
Separation of Concerns
357 -
Styling React Applications
737 -
Passing and Receiving Props
548 -
Props, Immutability, and One-Way Data Flow
429 -
CHALLENGE #1: Profile Card (v1)
1045 -
The Rules of JSX
217 -
Rendering Lists
684 -
Conditional Rendering With &&
556 -
Conditional Rendering With Ternaries
285 -
Conditional Rendering With Multiple Returns
303 -
Extracting JSX Into a New Component
272 -
Destructuring Props
292 -
React Fragments
336 -
Setting Classes and Text Conditionally
480 -
Section Summary
333 -
CHALLENGE #2: Profile Card (v2)
495
-
Section Overview
62 -
Let's Build a Steps Component
888 -
Handling Events the React Way
441 -
What is State in React?
368 -
Creating a State Variable With useState
547 -
Don't Set State Manually!
317 -
The Mechanics of State
291 -
Adding Another Piece of State
516 -
React Developer Tools
369 -
Updating State Based on Current State
316 -
More Thoughts About State + State Guidelines
393 -
A Vanilla JavaScript Implementation
394 -
CHALLENGE #1: Date Counter (v1)
789 -
Starting a New Project: The "Far Away" Travel List
248 -
Building the Layout
534 -
Rendering the Items List
522 -
Building a Form and Handling Submissions
715 -
Controlled Elements
1106 -
State vs. Props
210 -
EXERCISE #1: Flashcards
836 -
CHALLENGE #2: Date Counter (v2)
631
-
Section Overview
58 -
What is "Thinking in React"?
299 -
Fundamentals of State Management
564 -
Thinking About State and Lifting State Up
881 -
Reviewing "Lifting Up State"
385 -
Deleting an Item: More Child-to-Parent Communication!
494 -
Updating an Item: Complex Immutable Data Operation
463 -
Derived State
183 -
Calculating Statistics as Derived State
643 -
Sorting Items
648 -
Clearing the List
303 -
Moving Components Into Separate Files
533 -
EXERCISE #1: Accordion Component (v1)
855 -
The "children" Prop: Making a Reusable Button
970 -
More Reusability With the "children" Prop
492 -
EXERCISE #2: Accordion Component (v2)
615 -
CHALLENGE #1: Tip Calculator
1329
-
Section Overview
60 -
Setting Up the "usePopcorn" Project
250 -
How to Split a UI Into Components
755 -
Splitting Components in Practice
1437 -
Component Categories
162 -
Prop Drilling
451 -
Component Composition
290 -
Fixing Prop Drilling With Composition (And Building a Layout)
529 -
Using Composition to Make a Reusable Box
390 -
Passing Elements as Props (Alternative to children)
284 -
Building a Reusable Star Rating Component
682 -
Creating the Stars
784 -
Handling Hover Events
463 -
Props as a Component API
268 -
Improving Reusability With Props
1167 -
PropTypes
444 -
CHALLENGE #1: Text Expander Component
1100
-
Section Overview
115 -
Project Setup and Walkthrough
671 -
Components, Instances, and Elements
309 -
Instances and Elements in Practice
473 -
How Rendering Works: Overview
415 -
How Rendering Works: The Render Phase
1108 -
How Rendering Works: The Commit Phase
687 -
How Diffing Works
352 -
Diffing Rules in Practice
313 -
The Key Prop
461 -
Resetting State With the Key Prop
242 -
Using the Key Prop to Fix Our Eat-'N-Split App
247 -
Rules for Render Logic: Pure Components
564 -
State Update Batching
550 -
State Update Batching in Practice
943 -
How Events Work in React
822 -
Libraries vs. Frameworks & The React Ecosystem
592 -
Section Summary: Practical Takeaways
626
-
Section Overview
58 -
The Component Lifecycle
271 -
How NOT to Fetch Data in React
588 -
UseEffect to the Rescue
280 -
A First Look at Effects
383 -
Using an async Function
340 -
Adding a Loading State
227 -
Handling Errors
782 -
The useEffect Dependency Array
737 -
Synchronizing Queries With Movie Data
908 -
Selecting a Movie
799 -
Loading Movie Details
1063 -
Adding a Watched Movie
1571 -
Adding a New Effect: Changing Page Title
524 -
The useEffect Cleanup Function
260 -
Cleaning Up the Title
322 -
Cleaning Up Data Fetching
616 -
One More Effect: Listening to a Keypress
846 -
CHALLENGE #1: Currency Converter
1003
-
Section Overview
57 -
React Hooks and Their Rules
655 -
The Rules of Hooks in Practice
516 -
More Details of useState
750 -
Initializing State With a Callback (Lazy Initial State)
810 -
UseState Summary
194 -
How NOT to Select DOM Elements in React
218 -
Introducing Another Hook: useRef
336 -
Refs to Select DOM Elements
609 -
Refs to Persist Data Between Renders
615 -
What are Custom Hooks? When to Create One?
262 -
Creating our First Custom Hook: useMovies
782 -
Creating useLocalStorageState
546 -
Creating useKey
499 -
CHALLENGE #1: useGeolocate
447
-
Section Overview
76 -
Our First Class Component
572 -
Working With Event Handlers
624 -
Class Components vs. Function Components
337 -
Starting the "Classy Weather" App
465 -
Fetching Weather Data
579 -
Displaying the Weather
850 -
Removing Boilerplate Code With Class Fields
245 -
Child to Parent Communication
259 -
Lifecycle Methods
936
-
Section Overview
63 -
Yet Another Hook: useReducer
1078 -
Managing Related Pieces of State
743 -
Managing State With useReducer
853 -
The "React Quiz" App
477 -
Loading Questions from a Fake API
1111 -
Handling Loading, Error, and Ready Status
545 -
Starting a New Quiz
294 -
Displaying Questions
465 -
Handling New Answers
1002 -
Moving to the Next Question
382 -
Displaying Progress
537 -
Finishing a Quiz
907 -
Restarting a Quiz
425 -
Setting Up a Timer With useEffect
1256 -
Section Summary: useState vs. useReducer
353 -
CHALLENGE #1: Creating a Bank Account With useReducer
1190
-
Section Overview
61 -
Creating Our First App With Vite: "WorldWise"
941 -
Routing and Single-Page Applications (SPAs)
400 -
Implementing Main Pages and Routes
735 -
Linking Between Routes With <Link /> and <NavLink />
597 -
Styling Options For React Applications
350 -
Using CSS Modules
990 -
Building the Pages
1019 -
Building the App Layout
524 -
Nested Routes and Index Route
805 -
Implementing the Cities List
1122 -
Implementing the Countries List
667 -
Storing State in the URL
331 -
Dynamic Routes With URL Parameters
628 -
Reading and Setting a Query String
634 -
Programmatic Navigation with useNavigate
710 -
Programmatic Navigation with <Navigate />
252
-
Section Overview
59 -
CHALLENGE #1: Understand "The Atomic Blog" App
262 -
What is the Context API?
316 -
Creating and Providing a Context
566 -
Consuming the Context
653 -
Advanced Pattern: A Custom Provider and Hook
975 -
Thinking In React: Advanced State Management
698 -
Back to "WorldWise": Creating a CitiesContext
512 -
Consuming the CitiesContext
266 -
Finishing the City View
1078 -
Including a Map With the Leaflet Library
565 -
Displaying City Markers on Map
358 -
Interacting With the Map
818 -
Setting Map Position With Geolocation
693 -
Fetching City Data in the Form
1062 -
Creating a New City
1407 -
Deleting a City
337 -
Advanced State Management System: Context + useReducer
1358 -
Adding Fake Authentication: Setting Up Context
662 -
Adding Fake Authentication: Implementing "Login"
984 -
Adding Fake Authentication: Protecting a Route
681 -
CHALLENGE #2: Refactoring "React Quiz" to Context API
502
-
Section Overview
63 -
Performance Optimization and Wasted Renders
366 -
The Profiler Developer Tool
501 -
A Surprising Optimization Trick With children
709 -
Understanding memo
329 -
Memo in Practice
797 -
Understanding useMemo and useCallback
399 -
UseMemo in Practice
522 -
UseCallback in Practice
609 -
Optimizing Context Re-Renders
887 -
Back to The "WorldWise" App
757 -
Optimizing Bundle Size With Code Splitting
952 -
Don't Optimize Prematurely!
179 -
UseEffect Rules and Best Practices
601 -
CHALLENGE #1: Fix Performance Issues in "Workout Timer"
735 -
Setting State Based on Other State Updates
715 -
Using Helper Functions In Effects
904 -
Closures in Effects
592
-
Section Overview
67 -
Introduction to Redux
733 -
Creating a Reducer: Bank Account
647 -
Creating a Redux Store
586 -
Working With Action Creators
388 -
Adding More State: Customer
750 -
Professional Redux File Structure: State Slices
707 -
Back to React! Connecting our Redux App With React
346 -
Dispatching Actions from Our React App
1041 -
The Legacy Way of Connecting Components to Redux
290 -
Redux Middleware and Thunks
268 -
Making an API Call With Redux Thunks
1070 -
The Redux DevTools
621 -
What is Redux Toolkit (RTK)?
220 -
Creating the Store With RTK
277 -
Creating the Account Slice
1303 -
Back to Thunks
302 -
Creating the Customer Slice
554 -
Redux vs. Context API
463
-
Section Overview
51 -
Setting Up a New Project: "Fast React Pizza Co."
493 -
Application Planning
1284 -
Setting Up a Professional File Structure
500 -
A New Way Of Implementing Routes
630 -
Building the App Layout
678 -
Fetching Data With React Router "Loaders": Pizza Menu
710 -
Displaying a Loading Indicator
360 -
Handling Errors With Error Elements
384 -
Fetching Orders
760 -
Writing Data With React Router "Actions"
1143 -
Error Handling in Form Actions
626
-
Section Overview
59 -
What is Tailwind CSS?
476 -
Setting Up Tailwind CSS
723 -
Working With Color
539 -
Styling Text
600 -
The Box Model: Spacing, Borders, and Display
677 -
Responsive Design
648 -
Using Flexbox
391 -
Using CSS Grid
740 -
Styling Buttons: Element States and Transitions
731 -
Styling Form Elements
622 -
Reusing Styles With @apply
268 -
Reusing Styles With React Components
747 -
Absolute Positioning, z-index, and More
390 -
Configuring Tailwind: Custom Font Family
653 -
Styling the Menu
1107 -
Styling the Cart
706 -
Styling the Order Form
801 -
Styling the Order Overview
833
-
Section Overview
39 -
Modeling the "User" State With Redux Toolkit
803 -
Reading and Updating the User State
637 -
Modeling the "Cart" State
860 -
Adding Menu Items to the Cart
426 -
Building the Cart Overview With Redux Selectors
539 -
Building the Cart Page
425 -
Deleting Cart Items
884 -
Updating Cart Quantities
812 -
Using the Cart for New Orders
870 -
Redux Thunks With createAsyncThunk
964 -
Integrating Geolocation
964 -
Fetching Data Without Navigation: useFetcher
764 -
Updating Data Without Navigation
877
-
Section Overview
54 -
Application Planning
1109 -
Help Isabelle to Plan an App
0 -
Setting Up the Project: "The Wild Oasis"
491 -
Introduction to Styled Components
742 -
Global Styles With Styled Components
876 -
Styled Component Props and the "css" Function
625 -
Building More Reusable Styled Components
662 -
Setting Up Pages and Routes
387 -
Building the App Layout
861 -
Building the Sidebar and Main Navigation
789
-
Section Overview
46 -
What is React Query?
380 -
Setting Up React Query
439 -
Make Sure to Use React Query v4!
-
Fetching Cabin Data
1301 -
Mutations: Deleting a Cabin
1041 -
Displaying Toasts (Notifications)
521 -
Introducing Another Library: React Hook Form
677 -
Creating a New Cabin
733 -
Handling Form Errors
1362 -
Uploading Images to Supabase
881 -
Editing a Cabin
1839 -
Abstracting React Query Into Custom Hooks
1046 -
Duplicating Cabins
409 -
Fetching Applications Settings
527 -
Updating Application Settings
687
-
Section Overview
73 -
An Overview of Reusability in React
344 -
Setting Up an Example
379 -
The Render Props Pattern
462 -
A Look at Higher-Order Components (HOC)
486 -
The Compound Component Pattern
1097 -
Building a Modal Window Using a React Portal
1194 -
Converting the Modal to a Compound Component
1305 -
Detecting a Click Outside the Modal
816 -
Confirming Cabin Deletions
521 -
Building a Reusable Table
705 -
Applying the Render Props Pattern
278 -
Building a Reusable Context Menu
1955
-
Section Overview
76 -
Client-Side Filtering: Filtering Cabins
1129 -
Client-Side Sorting: Sorting Cabins
1225 -
Building the Bookings Table
1079 -
Uploading Sample Data
375 -
API-Side Filtering: Filtering Bookings
1030 -
API-Side Sorting: Sorting Bookings
413 -
Building a Reusable Pagination Component
952 -
API-Side Pagination: Paginating Bookings
639 -
Prefetching With React Query
478 -
Building the Single Booking Page
917 -
Checking In a Booking
1698 -
Adding Optional Breakfast
844 -
Checking Out a Booking (+ Fixing a Small Bug)
590 -
Deleting a Booking
813 -
Authentication: User Login With Supabase
1326 -
Authorization: Protecting Routes
1403 -
User Logout
540 -
Fixing an Important Bug
335 -
Building the Sign Up Form
659 -
User Sign Up
901 -
Authorization on Supabase: Protecting Database (RLS)
280 -
Building The App Header
618 -
Updating User Data and Password
1706 -
Implementing Dark Mode With CSS Variables
1289 -
Building the Dashboard Layout
265 -
Computing Recent Bookings and Stays
920 -
Displaying Statistics
722 -
Displaying a Line Chart With the Recharts Library
1375 -
Displaying a Pie Chart
952 -
Displaying Stays for Current Day
1241 -
Error Boundaries
584 -
Final Touches + Fixing Bugs
878
-
Section Overview
46 -
Download Fresh Starter Files + Slides!
-
An Overview of Server-Side Rendering (SSR)
945 -
Experiment: Manual SSR With React DOM + Node.js
1592 -
The Missing Piece: Hydration
393 -
Implementing Hydration
904 -
What is Next.js?
723 -
Setting Up a Next.js Project
611 -
Frequent Next.js Updates + Documentation
-
Defining Routes and Pages
578 -
Navigating Between Pages
565 -
Creating a Layout
733 -
What are React Server Components? (RSC – Part 1)
1924 -
Fetching Data in a Page
396 -
Adding Interactivity With Client Components
482 -
Displaying a Loading Indicator
388 -
How RSC Works Behind the Scenes (RSC – Part 2)
1115 -
RSC vs. SSR: How are They Related? (RSC – Part 3)
735
-
Section Overview
51 -
Project Planning: "The Wild Oasis" Customer Website
789 -
Project Organization
661 -
Styling With Tailwind CSS
564 -
Adding Page Metadata and Favicon
625 -
Loading and Optimizing Fonts
384 -
Improving the Navigation and Root Layout
422 -
Optimizing Images With Next.js <Image /> Component
519 -
Building the Home Page
587 -
Building the About Page With Responsive Images
809 -
Adding Nested Routes and Pages
415 -
Adding a Nested Layout
733
-
Section Overview
63 -
Setting Up Supabase
703 -
Fetching and Displaying Cabin List
673 -
Streaming Route Segments With loading.js File
435 -
What is React Suspense?
738 -
Streaming UI With Suspense: Cabin List
629 -
Dynamic Route Segments: Building the Cabin Page
625 -
Generating Dynamic Metadata
219 -
Error Handling: Setting Up Error Boundaries
543 -
Error Handling: "Not Found" Errors
345 -
Different Types of SSR: Static vs. Dynamic Rendering
854 -
Analyzing Rendering in Our App
287 -
Making Dynamic Pages Static With generateStaticParams
513 -
Static Site Generation (SSG)
551 -
Partial Pre-Rendering
417 -
How Next.js Caches Data
1108 -
Experimenting With Caching and ISR
1239 -
CHALLENGE #1: Fetching the Number of Cabins
226
-
Section Overview
73 -
Blurring the Boundary Between Server and Client (RSC – Part 4)
905 -
Client Components in Server Components
494 -
Highlighting Current Side Navigation Link
465 -
Sharing State Between Client and Server: The URL
2068 -
Advanced: Server Components in Client Components
639 -
Data Fetching Strategies for the Reservation Section
1620 -
Using the Context API for State Management
1546 -
Creating an API Endpoint With Route Handlers
695
-
Section Overview
67 -
What are Server Actions?
721 -
Updating the Profile Using a Server Action
1843 -
Manual Cache Revalidation
352 -
Displaying a Loading Indicator: The useFormStatus Hook
475 -
Building the Guest's Reservations Page
627 -
Deleting a Reservation
1170 -
Another Loading Indicator: The useTransition Hook
447 -
CHALLENGE #1: Updating a Reservation
1824 -
Removing Reservations Immediately: The useOptimistic Hook
1342 -
Back to the Cabin Page: Finishing the Date Selector
729 -
Creating a New Reservation
1948
-
Section Overview
67 -
Setting Up Another Project
532 -
Routes, Pages, and Navigation
456 -
Dynamic Routes
213 -
Creating a Layout With a Custom _App
397 -
Creating Pages
148 -
Defining Page Title and Favicon
363 -
Fetching Data With getStaticProps (SSG)
492 -
Fetching Data With getServerSideProps (SSR)
650 -
API Routes
715 -
Handling Form Submissions
941
Requirment
-
NO React experience necessary! I take you from beginner to expert!
-
Basic understanding of JavaScript is required (this course contains a quick JavaScript review section)
-
Any computer and OS will work — Windows, macOS or Linux
Outcomes
-
Become an advanced, confident, and modern React developer from scratch
-
Build 10+ beautiful projects, including two HUGE professional real-world apps
-
Become job-ready by working with libraries and tools used in professional projects
-
Join my other 1,900,000+ happy students on this journey
-
Think like a senior React engineer with advanced design patterns
-
Next..js "App" router with cutting-edge React Server Components + Server Actions
-
State management: thinking about state, where to place, local vs. global, UI vs. remote
-
Build reusable, composable, and versatile components
-
Master the confusing but important useEffect hook once and for all
-
Build many custom hooks, reusable in your future projects
-
Build single-page applications with React Router (including v6.4+ with data loading)
-
Performance optimization with memo, useMemo, useCallback, and code splitting
-
Advanced React features: useReducer, Context API, cloneElement, portals, etc.
-
Advanced state management with Redux, Redux Toolkit, Thunks, React Query
-
Build real-world app features: authentication, data sorting, filtering and pagination, dark mode, charts, etc.
-
Understand how React actually works behind the scenes: virtual DOM, reconciliation, fiber tree, key prop, etc.
-
Style your apps with Tailwind CSS, CSS Modules, Styled Components (CSS-in-JS)
-
Practice your skills with many challenges, exercises, and practice projects
0 Student
3 Courses
0 review