Learn the more advanced React hooks and different patterns to enable great

developer APIs for custom hooks.

We’ll look at some of the more advanced hooks and ways they can be used to

optimize your components and custom hooks. We’ll also look at several

patterns you can follow to make custom hooks that provide great APIs for

developers to be productive building applications.

Learn React from Start to Finish

  • git v2.13 or greater
  • NodeJS 12 || 14 || 15 || 16
  • npm v6 or greater

All of these must be available in your PATH. To verify things are set up

properly, you can run this:

git --version
node --version
npm --version

If you have trouble with any of these, learn more about the PATH environment

variable and how to fix it here for windows or



first and then clone your fork rather than this repo directly.

After you’ve made sure to have the correct things (and versions) installed, you

should be able to just run a few commands to get set up:

git clone https://github.com/kentcdodds/advanced-react-hooks.git
cd advanced-react-hooks
node setup

This may take a few minutes. It will ask you for your email. This is

optional and just automatically adds your email to the links in the project to

make filling out some forms easier.

If you get any errors, please read through them and see if you can find out what

the problem is. If you can’t work it out on your own then please file an

and provide all the output from the commands you ran (even if

it’s a lot).

If you can’t get the setup script to work, then just make sure you have the

right versions of the requirements listed above, and run the following commands:

npm install
npm run validate

If you are still unable to fix issues and you know how to use Docker 🐳 you can

setup the project with the following command:

docker-compose up

It’s recommended you run everything locally in the same environment you work in

every day, but if you’re having issues getting things set up, you can also set

this up using GitHub Codespaces

(video demo) or


react-scripts application.

You can also open

the deployment of the app on Netlify.

Jest in watch mode. Read the output and

play around with it. The tests are there to help you reach the final version,

however sometimes you can accomplish the task and the tests still fail if you

implement things differently than I do in my solution, so don’t look to them as

a complete authority.


specification. Contributions of any kind welcome!



View Github