The Ultimate React Course 2025: React, Next.js, Redux & More
Master modern React from beginner to advanced! Next.js, Context API, React Query, Redux, Tailwind, advanced patterns
Master modern React from beginner to advanced! Next.js, Context API, React Query, Redux, Tailwind, advanced patterns
** 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 area empty
Section Overview
39Why Do Front-End Frameworks Exist?
627React vs. Vanilla JavaScript
428 Xem trướcWhat is React?
557Setting Up Our Development Environment
527 Xem trướcPure React
889A Quick Look at React's Official Documentation
196Setting Up a New React Project: The Options
461Setting Up a Project With Create-React-App
768Section Overview
55Destructuring Objects and Arrays
658Rest/Spread Operator
593Template Literals
290Ternaries Instead of if/else Statements
349Arrow Functions
299Short-Circuiting And Logical Operators: &&, ||, ??
632Optional Chaining
390The Array map Method
515The Array filter Method
516The Array reduce Method
440The Array sort Method
398Working With Immutable Arrays
666Asynchronous JavaScript: Promises
491Asynchronous JavaScript: Async/Await
450Section Overview
54Rendering the Root Component and Strict Mode
445Before We Start Coding: Debugging
586Components as Building Blocks
274Creating And Reusing a Component
580What is JSX?
385Creating More Components
487JavaScript Logic in Components
266Separation of Concerns
357Styling React Applications
737Passing and Receiving Props
548Props, Immutability, and One-Way Data Flow
429CHALLENGE #1: Profile Card (v1)
1045The Rules of JSX
217Rendering Lists
684Conditional Rendering With &&
556Conditional Rendering With Ternaries
285Conditional Rendering With Multiple Returns
303Extracting JSX Into a New Component
272Destructuring Props
292React Fragments
336Setting Classes and Text Conditionally
480Section Summary
333CHALLENGE #2: Profile Card (v2)
495Section Overview
62Let's Build a Steps Component
888Handling Events the React Way
441What is State in React?
368Creating a State Variable With useState
547Don't Set State Manually!
317The Mechanics of State
291Adding Another Piece of State
516React Developer Tools
369Updating State Based on Current State
316More Thoughts About State + State Guidelines
393A Vanilla JavaScript Implementation
394CHALLENGE #1: Date Counter (v1)
789Starting a New Project: The "Far Away" Travel List
248Building the Layout
534Rendering the Items List
522Building a Form and Handling Submissions
715Controlled Elements
1106State vs. Props
210EXERCISE #1: Flashcards
836CHALLENGE #2: Date Counter (v2)
631Section Overview
58What is "Thinking in React"?
299Fundamentals of State Management
564Thinking About State and Lifting State Up
881Reviewing "Lifting Up State"
385Deleting an Item: More Child-to-Parent Communication!
494Updating an Item: Complex Immutable Data Operation
463Derived State
183Calculating Statistics as Derived State
643Sorting Items
648Clearing the List
303Moving Components Into Separate Files
533EXERCISE #1: Accordion Component (v1)
855The "children" Prop: Making a Reusable Button
970More Reusability With the "children" Prop
492EXERCISE #2: Accordion Component (v2)
615CHALLENGE #1: Tip Calculator
1329Section Overview
60Setting Up the "usePopcorn" Project
250How to Split a UI Into Components
755Splitting Components in Practice
1437Component Categories
162Prop Drilling
451Component Composition
290Fixing Prop Drilling With Composition (And Building a Layout)
529Using Composition to Make a Reusable Box
390Passing Elements as Props (Alternative to children)
284Building a Reusable Star Rating Component
682Creating the Stars
784Handling Hover Events
463Props as a Component API
268Improving Reusability With Props
1167PropTypes
444CHALLENGE #1: Text Expander Component
1100Section Overview
115Project Setup and Walkthrough
671Components, Instances, and Elements
309Instances and Elements in Practice
473How Rendering Works: Overview
415How Rendering Works: The Render Phase
1108How Rendering Works: The Commit Phase
687How Diffing Works
352Diffing Rules in Practice
313The Key Prop
461Resetting State With the Key Prop
242Using the Key Prop to Fix Our Eat-'N-Split App
247Rules for Render Logic: Pure Components
564State Update Batching
550State Update Batching in Practice
943How Events Work in React
822Libraries vs. Frameworks & The React Ecosystem
592Section Summary: Practical Takeaways
626Section Overview
58The Component Lifecycle
271How NOT to Fetch Data in React
588UseEffect to the Rescue
280A First Look at Effects
383Using an async Function
340Adding a Loading State
227Handling Errors
782The useEffect Dependency Array
737Synchronizing Queries With Movie Data
908Selecting a Movie
799Loading Movie Details
1063Adding a Watched Movie
1571Adding a New Effect: Changing Page Title
524The useEffect Cleanup Function
260Cleaning Up the Title
322Cleaning Up Data Fetching
616One More Effect: Listening to a Keypress
846CHALLENGE #1: Currency Converter
1003Section Overview
57React Hooks and Their Rules
655The Rules of Hooks in Practice
516More Details of useState
750Initializing State With a Callback (Lazy Initial State)
810UseState Summary
194How NOT to Select DOM Elements in React
218Introducing Another Hook: useRef
336Refs to Select DOM Elements
609Refs to Persist Data Between Renders
615What are Custom Hooks? When to Create One?
262Creating our First Custom Hook: useMovies
782Creating useLocalStorageState
546Creating useKey
499CHALLENGE #1: useGeolocate
447Section Overview
76Our First Class Component
572Working With Event Handlers
624Class Components vs. Function Components
337Starting the "Classy Weather" App
465Fetching Weather Data
579Displaying the Weather
850Removing Boilerplate Code With Class Fields
245Child to Parent Communication
259Lifecycle Methods
936Section Overview
63Yet Another Hook: useReducer
1078Managing Related Pieces of State
743Managing State With useReducer
853The "React Quiz" App
477Loading Questions from a Fake API
1111Handling Loading, Error, and Ready Status
545Starting a New Quiz
294Displaying Questions
465Handling New Answers
1002Moving to the Next Question
382Displaying Progress
537Finishing a Quiz
907Restarting a Quiz
425Setting Up a Timer With useEffect
1256Section Summary: useState vs. useReducer
353CHALLENGE #1: Creating a Bank Account With useReducer
1190Section Overview
61Creating Our First App With Vite: "WorldWise"
941Routing and Single-Page Applications (SPAs)
400Implementing Main Pages and Routes
735Linking Between Routes With <Link /> and <NavLink />
597Styling Options For React Applications
350Using CSS Modules
990Building the Pages
1019Building the App Layout
524Nested Routes and Index Route
805Implementing the Cities List
1122Implementing the Countries List
667Storing State in the URL
331Dynamic Routes With URL Parameters
628Reading and Setting a Query String
634Programmatic Navigation with useNavigate
710Programmatic Navigation with <Navigate />
252Section Overview
59CHALLENGE #1: Understand "The Atomic Blog" App
262What is the Context API?
316Creating and Providing a Context
566Consuming the Context
653Advanced Pattern: A Custom Provider and Hook
975Thinking In React: Advanced State Management
698Back to "WorldWise": Creating a CitiesContext
512Consuming the CitiesContext
266Finishing the City View
1078Including a Map With the Leaflet Library
565Displaying City Markers on Map
358Interacting With the Map
818Setting Map Position With Geolocation
693Fetching City Data in the Form
1062Creating a New City
1407Deleting a City
337Advanced State Management System: Context + useReducer
1358Adding Fake Authentication: Setting Up Context
662Adding Fake Authentication: Implementing "Login"
984Adding Fake Authentication: Protecting a Route
681CHALLENGE #2: Refactoring "React Quiz" to Context API
502Section Overview
63Performance Optimization and Wasted Renders
366The Profiler Developer Tool
501A Surprising Optimization Trick With children
709Understanding memo
329Memo in Practice
797Understanding useMemo and useCallback
399UseMemo in Practice
522UseCallback in Practice
609Optimizing Context Re-Renders
887Back to The "WorldWise" App
757Optimizing Bundle Size With Code Splitting
952Don't Optimize Prematurely!
179UseEffect Rules and Best Practices
601CHALLENGE #1: Fix Performance Issues in "Workout Timer"
735Setting State Based on Other State Updates
715Using Helper Functions In Effects
904Closures in Effects
592Section Overview
67Introduction to Redux
733Creating a Reducer: Bank Account
647Creating a Redux Store
586Working With Action Creators
388Adding More State: Customer
750Professional Redux File Structure: State Slices
707Back to React! Connecting our Redux App With React
346Dispatching Actions from Our React App
1041The Legacy Way of Connecting Components to Redux
290Redux Middleware and Thunks
268Making an API Call With Redux Thunks
1070The Redux DevTools
621What is Redux Toolkit (RTK)?
220Creating the Store With RTK
277Creating the Account Slice
1303Back to Thunks
302Creating the Customer Slice
554Redux vs. Context API
463Section Overview
51Setting Up a New Project: "Fast React Pizza Co."
493Application Planning
1284Setting Up a Professional File Structure
500A New Way Of Implementing Routes
630Building the App Layout
678Fetching Data With React Router "Loaders": Pizza Menu
710Displaying a Loading Indicator
360Handling Errors With Error Elements
384Fetching Orders
760Writing Data With React Router "Actions"
1143Error Handling in Form Actions
626Section Overview
59What is Tailwind CSS?
476Setting Up Tailwind CSS
723Working With Color
539Styling Text
600The Box Model: Spacing, Borders, and Display
677Responsive Design
648Using Flexbox
391Using CSS Grid
740Styling Buttons: Element States and Transitions
731Styling Form Elements
622Reusing Styles With @apply
268Reusing Styles With React Components
747Absolute Positioning, z-index, and More
390Configuring Tailwind: Custom Font Family
653Styling the Menu
1107Styling the Cart
706Styling the Order Form
801Styling the Order Overview
833Section Overview
39Modeling the "User" State With Redux Toolkit
803Reading and Updating the User State
637Modeling the "Cart" State
860Adding Menu Items to the Cart
426Building the Cart Overview With Redux Selectors
539Building the Cart Page
425Deleting Cart Items
884Updating Cart Quantities
812Using the Cart for New Orders
870Redux Thunks With createAsyncThunk
964Integrating Geolocation
964Fetching Data Without Navigation: useFetcher
764Updating Data Without Navigation
877Section Overview
54Application Planning
1109Help Isabelle to Plan an App
0Setting Up the Project: "The Wild Oasis"
491Introduction to Styled Components
742Global Styles With Styled Components
876Styled Component Props and the "css" Function
625Building More Reusable Styled Components
662Setting Up Pages and Routes
387Building the App Layout
861Building the Sidebar and Main Navigation
789Section Overview
46What is React Query?
380Setting Up React Query
439Make Sure to Use React Query v4!
Fetching Cabin Data
1301Mutations: Deleting a Cabin
1041Displaying Toasts (Notifications)
521Introducing Another Library: React Hook Form
677Creating a New Cabin
733Handling Form Errors
1362Uploading Images to Supabase
881Editing a Cabin
1839Abstracting React Query Into Custom Hooks
1046Duplicating Cabins
409Fetching Applications Settings
527Updating Application Settings
687Section Overview
73An Overview of Reusability in React
344Setting Up an Example
379The Render Props Pattern
462A Look at Higher-Order Components (HOC)
486The Compound Component Pattern
1097Building a Modal Window Using a React Portal
1194Converting the Modal to a Compound Component
1305Detecting a Click Outside the Modal
816Confirming Cabin Deletions
521Building a Reusable Table
705Applying the Render Props Pattern
278Building a Reusable Context Menu
1955Section Overview
76Client-Side Filtering: Filtering Cabins
1129Client-Side Sorting: Sorting Cabins
1225Building the Bookings Table
1079Uploading Sample Data
375API-Side Filtering: Filtering Bookings
1030API-Side Sorting: Sorting Bookings
413Building a Reusable Pagination Component
952API-Side Pagination: Paginating Bookings
639Prefetching With React Query
478Building the Single Booking Page
917Checking In a Booking
1698Adding Optional Breakfast
844Checking Out a Booking (+ Fixing a Small Bug)
590Deleting a Booking
813Authentication: User Login With Supabase
1326Authorization: Protecting Routes
1403User Logout
540Fixing an Important Bug
335Building the Sign Up Form
659User Sign Up
901Authorization on Supabase: Protecting Database (RLS)
280Building The App Header
618Updating User Data and Password
1706Implementing Dark Mode With CSS Variables
1289Building the Dashboard Layout
265Computing Recent Bookings and Stays
920Displaying Statistics
722Displaying a Line Chart With the Recharts Library
1375Displaying a Pie Chart
952Displaying Stays for Current Day
1241Error Boundaries
584Final Touches + Fixing Bugs
878Section Overview
46Download Fresh Starter Files + Slides!
An Overview of Server-Side Rendering (SSR)
945Experiment: Manual SSR With React DOM + Node.js
1592The Missing Piece: Hydration
393Implementing Hydration
904What is Next.js?
723Setting Up a Next.js Project
611Frequent Next.js Updates + Documentation
Defining Routes and Pages
578Navigating Between Pages
565Creating a Layout
733What are React Server Components? (RSC – Part 1)
1924Fetching Data in a Page
396Adding Interactivity With Client Components
482Displaying a Loading Indicator
388How RSC Works Behind the Scenes (RSC – Part 2)
1115RSC vs. SSR: How are They Related? (RSC – Part 3)
735Section Overview
51Project Planning: "The Wild Oasis" Customer Website
789Project Organization
661Styling With Tailwind CSS
564Adding Page Metadata and Favicon
625Loading and Optimizing Fonts
384Improving the Navigation and Root Layout
422Optimizing Images With Next.js <Image /> Component
519Building the Home Page
587Building the About Page With Responsive Images
809Adding Nested Routes and Pages
415Adding a Nested Layout
733Section Overview
63Setting Up Supabase
703Fetching and Displaying Cabin List
673Streaming Route Segments With loading.js File
435What is React Suspense?
738Streaming UI With Suspense: Cabin List
629Dynamic Route Segments: Building the Cabin Page
625Generating Dynamic Metadata
219Error Handling: Setting Up Error Boundaries
543Error Handling: "Not Found" Errors
345Different Types of SSR: Static vs. Dynamic Rendering
854Analyzing Rendering in Our App
287Making Dynamic Pages Static With generateStaticParams
513Static Site Generation (SSG)
551Partial Pre-Rendering
417How Next.js Caches Data
1108Experimenting With Caching and ISR
1239CHALLENGE #1: Fetching the Number of Cabins
226Section Overview
73Blurring the Boundary Between Server and Client (RSC – Part 4)
905Client Components in Server Components
494Highlighting Current Side Navigation Link
465Sharing State Between Client and Server: The URL
2068Advanced: Server Components in Client Components
639Data Fetching Strategies for the Reservation Section
1620Using the Context API for State Management
1546Creating an API Endpoint With Route Handlers
695Section Overview
67What are Server Actions?
721Updating the Profile Using a Server Action
1843Manual Cache Revalidation
352Displaying a Loading Indicator: The useFormStatus Hook
475Building the Guest's Reservations Page
627Deleting a Reservation
1170Another Loading Indicator: The useTransition Hook
447CHALLENGE #1: Updating a Reservation
1824Removing Reservations Immediately: The useOptimistic Hook
1342Back to the Cabin Page: Finishing the Date Selector
729Creating a New Reservation
1948Section Overview
67Setting Up Another Project
532Routes, Pages, and Navigation
456Dynamic Routes
213Creating a Layout With a Custom _App
397Creating Pages
148Defining Page Title and Favicon
363Fetching Data With getStaticProps (SSG)
492Fetching Data With getServerSideProps (SSR)
650API Routes
715Handling Form Submissions
941NO 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
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