The Joy of React

25h 35m 33s
English
Paid
October 31, 2023

The all-new interactive learning experience that teaches you how to build rich, dynamic web apps with React.

So, let’s be real. Learning React is hard.

Over the past few years, React has become a “must-have” skill for front-end developers. Just about every job posting lists it as a pre-requisite!

If you’ve tried to learn React, though, you know it can be confusing and overwhelming. There’s just so much to know, and most of the tutorials out there assume a ton of prior knowledge and context.

Maybe you’ve gotten stuck in tutorial hell, following tutorial after tutorial without ever making tangible progress, like a mouse on a running wheel. You’ve built so many dang “Todo list” apps now, and yet when you try to build your own project, you don’t know where to start.

You want to learn React, but you’ve struggled. 

I want to help.

For the past two years, I’ve been hard at work building the ultimate beginner-friendly React course.

The Joy of React is an interactive course. You won’t just sit and watch me code. There are tons of exercises, real-world-inspired projects, and fun mini-games and activities. It’s not like any other course you’ve taken before (unless you’ve taken my CSS course, in which case, it’s quite a bit like that).

We learn React from the ground up, building a robust mental model we can use to understand React and solve hard problems. I’ll share the dozens of epiphanies I’ve had after almost a decade of professional React experience.

We won’t just learn about React, either; we cover everything you need to know to succeed as a React developer, including modern JavaScript syntax, along with a ton of helpful community tools and packages.

The truth is, React is a joy to use.

Once you get the hang of it, React is a dream. I’ve tried most popular JS frameworks, and nothing else makes me feel as empowered as React.

I care a lot about the user experience, including things like performance, accessibility, polish. Getting this stuff right is not easy. But the React community has stepped up, and there are so many wonderful solutions we can leverage.

We first need to build a rock-solid foundation, to truly understand React conventions and best practices. Then, we’ll see how “secret weapon” community packages extend our reach.

This is a recipe for uninterrupted flow state. It’s pure joy, and I want you to experience it.

Let me tell you how The Joy of React will make it so.

Module 1 React Fundamentals

In this first module, we introduce React, and build a common understanding we'll use throughout the course.

We'll learn all about JSX, components, and props. We'll discover how to do iteration and conditional rendering in React. We'll also cover styling in React.

As someone who has taught React to hundreds of students in-person, I know what all of the common early stumbling blocks are, and we address them head-on in this module.

We go surprisingly deep in this module. By the end of Module 1, you'll understand how JSX differs from a templating language, what a React element is, why keys are necessary… you'll even build your own stateless mini-React from scratch, so you know exactly how it works under-the-hood!

Module 2 Working With State

The real magic starts with state. React state allows us to make dynamic applications that feel alive.

In this module, we learn how to use event handlers and the React  hook to update the UI based on user actions. We'll learn how to wire up forms, how to work with complex state structures, and how to manage state across the application.

We'll also deepen our understanding of how React works. We'll learn why React sometimes feels so much more complicated than other frameworks. We'll discover the crucial role that React component instances play. And we'll learn how to leverage best practices like lifting state up.

There are lots of fun exercises in this module. We build a couple of mini-games, and see how to build a minimal version of my Gradient Generator project.

Module 3 React Hooks

In 2019, React was revolutionized with the addition of hooks. Hooks allow us to “hook into” React internals.

In this module, we go beyond the  hook, and cover things like:

  • Managing side effects with the  hook.
  • Capturing DOM references with the  hook.
  • Optimizing the performance of our applications with  and .
  • Creating our own abstractions with custom hooks.
  • Fetching data from the network with Fetch + the third-party hook.

Stuff gets real in this module. We cover some of the hardest concepts in React, like avoiding stale values in our side effects. To help us make sense of the hard stuff, we double down on our efforts to understand how React ticks, learning why immutability is so important, what exactly a “render” is, and more.

Module 4 Component API Design

At this point in the course, we've covered a good chunk of the React API, but we've been focusing on how everything works. In this module, our focus starts to shift.

The components we create should be a joy to use: they should be easy to understand, composable, and offer the right amount of flexibility. Even more critically, they should offer a wonderful user experience, in terms of accessibility, usability, and performance.

This module is all about refining our thinking around components. I'll teach you the mental models I use every day when deciding how I want to structure my code.

We'll cover a ton of practical tips and tricks in this module, from polymorphism to prop delegation to compound components and slots. You'll also learn about React Context, and see how it can be useful in achieving our goals.

Accessibility is a focus throughout the course, but we really lean into it in this module. We'll build notoriously-tricky components like modals from scratch, with a focus on usability and accessibility, and see why it's probably a better idea to use a library.

Module 5 Happy Practices

I started working with React in 2015, and I've learned so much along the way. My goal with this module is to help you skip a few years of experimentation, and jump straight to the patterns and practices that are a delight to use.

In the dev community, we talk a lot about “Best Practices”, but really, there's no such thing as a best practice. It depends what you're optimizing for! It's all trade-offs.

In this module, I'll share my favourite “Happy Practices”, the design patterns and habits I've been refining over 8 years, things that just make it enjoyable to work with React.

Here's a few examples of what we'll cover:

  • The Principle of Least Privilege, and why I give components as little knowledge/power as possible.
  • The distinction between parents and owners, and how we can simplify our code and improve performance in one fell swoop.
  • The magic of Immer, and how it makes complex state much less scary.
  • Really getting to understand things like React elements, refs, and keys, and how a deep understanding exposes entirely new patterns we can take advantage of.

Module 6 Full-Stack React

In this module, we go beyond the browser and explore how React works in a full-stack context, using Next.js.

Next.js is a meta-framework, built on top of React. It's been around since 2016, but was recently totally rebuilt from the ground up. In May 2023, Next brought its new “App” router out of beta, and ushered in the start of a new era in React.

In this module, we'll learn how to build performant full-stack applications using the latest version of Next.js. We cover all of the shiny new tech, including:

  • React Server Components
  • Suspense
  • Streaming Server Side Rendering w/ Selective Hydration
  • Next.js App Router

We'll learn how these things work, but also how they fit together to deliver incredible next-level user experiences. This stuff is bleeding-edge, and this course is one of the first in-depth resources to really explore this new world.

This is the module where everything comes together. Using everything we learned over the first 5 modules of the course, we'll build dynamic full-stack React applications, from project initialization to deploy.

Capstone Projects

Everything you learn in the modules will be reinforced and solidified in 3 challenging projects, woven between the modules. You'll use your newfound skills to build:

Project 1 Word Game

One of the best ways to learn React is by building games. In this first project, we build a clone of Wordle, a popular online word-guessing game.

The main focus of this project is to get comfortable with React state, but it also exposes us to some really interesting questions around application structure. You'll need to decide how you want state to move through the application, and consider different tradeoffs!

Project 2Toast Playground

We build a reusable, low-level  component!

This is way harder than it seems. The component we build will adhere to all accessibility guidelines, with a focus on usability and user experience. We'll also put a lot of thought into its API design, making sure it's composable and flexible.

We'll also build a mini app to help us customize and generate toasts.

A few years back, I created a React curriculum for a local coding bootcamp, and it featured a project like this, building a seemingly-straightforward UI component. Students have said that this is a really eye-opening exercise.

Project 3 Interactive MDX-Based Blog

When I created my blog back in 2018, I didn't want to make a boring ol’ static blog. I wanted to create custom, bespoke widgets that would help the reader learn a concept by doing.

In this final project, we'll build the ultimate blog. You'll learn exactly how to set things up so that you have the full power of React available to you within the content.

Bonus Module Layout Animations with Framer Motion

Framer Motion is one of the most incredible tools in the React ecosystem. In this bonus module, you'll learn how to use its “layout projection” engine to do truly remarkable, seemingly-impossible layout animations.

This is honestly one of the best “secret weapon” packages in my arsenal, and I'm psyched to show you how I use it!

Bonus Feature React Technical Interview Prep

When it comes to getting hired as a React developer, one of the trickiest parts is the technical interview.

In this bonus feature, I'll help you prepare by giving you interview-style challenges, and then showing you how I would tackle them.

This bonus feature will be released later in 2023.

Watch Online The Joy of React

Join premium to watch
Go to premium
# Title Duration
1 001 - Welcome! 03:00
2 002 - Hello React 03:43
3 003 - Build Your Own React 05:14
4 004 - Expression Slots 05:02
5 005 - Fix The Converter - 01:55
6 006 - The Whitespace Gotcha 03:18
7 007 - Exercises 03:20
8 008 - Exercises 05:18
9 009 - Thinking in Components 04:11
10 010 - Props 06:29
11 011 - Exercises 02:21
12 012 - Exercises 06:29
13 013 - Fragments 02:35
14 014 - Mapping Over Data 04:21
15 015 - Keys 05:09
16 016 - Exercises 03:56
17 017 - Exercises 05:17
18 018 - Exercises 01:53
19 019 - Exercises 04:56
20 020 - Exercises 03:04
21 021 - Exercises 04:09
22 022 - Styling In React 04:09
23 023 - CSS Modules 05:17
24 024 - Exercises 03:40
25 025 - Exercises 03:37
26 026 - Exercises 02:15
27 027 - Exercises 02:16
28 028 - Asynchronous Updates 03:41
29 029 - Exercises 04:49
30 030 - Exercises 04:23
31 031 - Why the Dance 09:32
32 032 - Data Binding 08:28
33 033 - Exercises 08:10
34 034 - Exercises 02:40
35 035 - Exercises 08:37
36 036 - Props Vs. State 04:05
37 037 - Mutation Bugs 07:27
38 038 - Exercises 09:08
39 039 - Exercises 04:12
40 040 - Dynamic Key Generation 08:36
41 041 - Key Gotchas 12:05
42 042 - Lifting State Up 09:28
43 043 - Exercises 01:42
44 044 - Exercises 08:22
45 045 - Component Instances 08:42
46 046 - About This Project 03:15
47 047 - Getting Started 04:32
48 048 - Solution 10:46
49 049 - Solution 14:03
50 050 - hhdfnang 09:07
51 051 - ogfbmgeg 09:09
52 052 - fgfcikbp 16:04
53 053 - - 1920x1080 3305K 06:02
54 054 - - 1920x1080 3066K 07:00
55 055 - Rules of Hooks 06:00
56 056 - Exercises 03:12
57 057 - Exercises 03:50
58 058 - Immutability Revisited 09:10
59 059 - Refs 06:09
60 060 - Exercises 02:20
61 061 - Exercises 04:24
62 062 - Side Effects 04:09
63 063 - The useEffect hook 07:44
64 064 - Exercises 02:59
65 065 - Exercises 05:23
66 066 - Effect Lint Rules 04:34
67 067 - Running on Mount 03:43
68 068 - Running on Mount 04:48
69 069 - Exercises 01:19
70 070 - Exercises 02:15
71 071 - Exercises 03:58
72 072 - Exercises 05:51
73 073 - Cleanup 06:55
74 074 - Cleanup 07:14
75 075 - Cleanup Exercises 00:56
76 076 - Cleanup Exercises 01:31
77 077 - Cleanup Exercises 02:40
78 078 - Cleanup Exercises 05:33
79 079 - Stale Values 11:33
80 080 - Stale Values 03:16
81 081 - Exercises 04:27
82 082 - Strict Mode 06:39
83 083 - Strict Mode 04:08
84 084 - Custom Hooks 04:35
85 085 - Exercises 02:31
86 086 - Exercises 08:18
87 087 - Exercises 05:19
88 088 - Fetching on Event 03:55
89 089 - Fetching on Event 07:20
90 090 - Fetching on Mount 05:30
91 091 - Exercises 11:28
92 092 - Exercises 04:54
93 093 - Exercises 01:10
94 094 - Exercises 03:16
95 095 - Exercises 10:10
96 096 - Alternatives 07:00
97 097 - Introduction 04:24
98 098 - The Spectrum of Components 08:39
99 099 - Exercises 05:41
100 100 - Exercises 07:09
101 101 - Prop Delegation 03:35
102 102 - Exercises 03:09
103 103 - Exercises 05:28
104 104 - Delegating Styles 03:19
105 105 - Forwarding Refs 09:10
106 106 - Exercises 01:45
107 107 - Exercises 01:24
108 108 - Polymorphism 07:27
109 109 - Exercises 06:55
110 110 - Exercises 04:13
111 111 - Slots 10:18
112 112 - Exercises 03:05
113 113 - Exercises 05:58
114 114 - The Problem 09:26
115 115 - Exercises 02:44
116 116 - Exercises 02:41
117 117 - Provider Components 06:49
118 118 - Performance 05:16
119 119 - Performance 05:52
120 120 - Modals 15:17
121 121 - Exercises 11:10
122 122 - Converting Our Modal 10:29
123 123 - Exercises 04:56
124 124 - Exercises 03:01
125 125 - Exercises 05:40
126 126 - Solution 05:33
127 127 - Solution 05:49
128 128 - Solution 10:37
129 129 - Solution 07:30
130 130 - edfhjakg 14:04
131 131 - fpooaoln 07:40
132 132 - Leveraging Keys 04:01
133 133 - Leveraging Keys 05:53
134 134 - Leveraging Keys 06:55
135 135 - Exercises 01:28
136 136 - Exercises 04:49
137 137 - Exercises 03:42
138 138 - Elements Revisited 02:02
139 139 - Elements Revisited 12:00
140 140 - Deriving State 13:35
141 141 - Exercises 02:20
142 142 - Exercises 01:54
143 143 - Exercises 07:36
144 144 - Lifting Content Up 04:19
145 145 - Lifting Content Up 04:17
146 146 - Exercises 06:29
147 147 - Single Source of Truth 08:01
148 148 - Exercises 03:57
149 149 - Exercises 04:03
150 150 - Principle of Least Privilege 05:26
151 151 - Exercises 04:21
152 152 - useReducer 10:02
153 153 - Exercises 01:51
154 154 - Exercises 07:07
155 155 - Exercises 06:51
156 156 - Exercises 04:17
157 157 - Exercises 04:28
158 158 - Exercises 15:21
159 159 - Portals 11:03
160 160 - Exercise 04:05
161 161 - Exercise 05:17
162 162 - Refs Revisited 09:22
163 163 - Error Boundaries 06:01
164 164 - - 1920x1080 10:03
165 165 - React Server Components 12:02
166 166 - Hello Next! 08:35
167 167 - Exercises 02:46
168 168 - Exercises 03:54
169 169 - Client Components 17:16
170 170 - Exercises 03:55
171 171 - Exercises 05:03
172 172 - Exercises 04:30
173 173 - Exercises 09:16
174 174 - SSR Gotchas 07:51
175 175 - SSR Exercises 06:20
176 176 - SSR Exercises 07:46
177 177 - SSR Exercises 04:16
178 178 - Page Transitions 09:39
179 179 - Dynamic Segments 05:42
180 180 - Exercises 02:36
181 181 - Exercises 06:05
182 182 - Next's Metadata API 03:59
183 183 - Starting a New Project - 1952x1080 03:49
184 184 - Building for Production 06:11
185 185 - Building for Production 04:38
186 186 - Exercises 03:02
187 187 - React Cache 06:46
188 188 - An Exciting New World 16:15
189 189 - Graphing It Out 07:52
190 190 - Suspense Exercises 04:23
191 191 - Suspense Exercises 04:15
192 192 - jbjdnpaj 07:13
193 193 - Dark Mode 15:12
194 194 - Getting Started 06:57
195 195 - Exercises 02:49
196 196 - Exercises 06:35
197 197 - Layout Animations 11:06
198 198 - Layout Exercises 02:06
199 199 - Layout Exercises 02:57
200 200 - Shared Layout 09:22
201 201 - Working With Groups 13:43
202 202 - Working With Groups 03:56
203 203 - Shared Layout Exercises 01:31
204 204 - Shared Layout Exercises 06:45
205 205 - Shared Layout Exercises 05:23
206 206 - One Last Exercise 07:05
207 207 - One Last Exercise 09:26
208 208 - - 1920x1080 03:47
209 209 - - 1920x1080 05:23
210 210 - Solution 05:06
211 211 - Solution 05:33
212 212 - Solution 06:42
213 213 - Solution 02:57
214 214 - ccobbnfj 09:05
215 215 - pbjemcph 10:33
216 216 - egfjagcc 09:06
217 217 - nkfhacjj 09:53
218 218 - jcppdheb 11:35
219 219 - Suspense Investigations 05:52
220 220 - Navigation 03:13
221 221 - Tips N’ Tricks 02:03
222 222 - Webpack 05:32
223 001 - Cover Letters 04:05
224 002 - Cover Letters 02:37
225 003 - Cover Letters 02:13
226 004 - Technical Interviews 05:30
227 005 - FizzBuzz 04:17
228 006 - Scroll Position 06:34
229 007 - Todo App 11:02
230 008 - Project Euler 10:19
231 009 - Starfield Button 22:48
232 010 - Multi-Step Signup 36:27
233 011 - Trello Clone 24:56
234 012 - Clicking Outside 14:18
235 013 - Multi Checkbox 21:41
236 014 - Fetch Race Condition 01:27
237 015 - Fetch Race Condition 11:05
238 016 - Fetch Race Condition 04:33
239 017 - useEffectSkipMount 12:19

Similar courses to The Joy of React

React & TypeScript - The Practical Guide

React & TypeScript - The Practical Guide

Duration 7 hours 22 minutes 54 seconds
Data fetching with React Server Components

Data fetching with React Server Components

Duration 1 hour 15 minutes 56 seconds
Crack the Frontend Interview with React

Crack the Frontend Interview with React

Duration 1 hour 6 minutes 53 seconds
NextJS E-Com Masterclass: Learn The All New Next JS

NextJS E-Com Masterclass: Learn The All New Next JS

Duration 19 hours 17 minutes 40 seconds
Zero to Full Stack Hero

Zero to Full Stack Hero

Duration 101 hours 29 minutes 59 seconds
Ultimate Next.js 13 Course + eBook

Ultimate Next.js 13 Course + eBook

Duration 51 hours 35 minutes 4 seconds