Cheatsheet Intermediate React useState container for state within component (instance props). Use a store for data. useEffect Update render callback; update when something happens - async events. It's scheduled and you don't know when its going to run useContext globall application state (globals) and make it available specifically useRef container for state reference outside of the application scope (modals, subscriptions) aka static class properties exists across class instances. Referring to dom elements within react application useReducer similar to filter, pass in state run it through reducer and return state. Good for testing. Decoupling state from display layer Redux good for managing global state. Use useState for inner-component state. Object.assign differential updating useMemo caching expensive computation preventing re-render only on change. For specific use cases. Have performance problems before using this useCallback implemented with useMemo. Takes in a function and a dependency, returns the same function so does not cause rerender. memo continue only when props change, for functional components useLayoutEffect similar to class component componentDidUpdate: happens immediately after your render finishes. Suitable for animation or measuring the dom useImperativeHandle very rare, useful for library authors. Exposes a function to the parent component. useDebugValue Add information readable by React Dev Tools in the DebugValueComponent. Console log for custom hook tailwind skipped redux : state tree. React sends actions and reads state from redux. useDispatch: query the storeh test: test from the user perspective, button changed x to y test features that are important to your app test that fails on the bug, then make that test pass by fixing the bug. No tests are better than bad tests (which take away confidence) Higher Order Component: reusable logic