
Begin with the isolation pattern, enabling you to study any module of this advanced React course, stay updated, and boost your front-end career.
Course walk-through introduces component patterns, advanced React concepts and hooks, design system fundamentals from Figma to a React library, with performance, clean code, TypeScript, and React Router version six.
Establish a foundation in React, install Node.js and npm, and follow along with the provided source code. Use npm install and npm run to set up and compare your work.
Choose a consistent naming convention in React projects, since there is no official guideline, and camel case for files and pascal case for folders are common.
Explore layout components in React, learn how they organize page structure, and separate layout styles from core components to decouple logic from placement, enabling flexible, reusable designs.
Study the split screen pattern in React by building a two-panel layout with the styled components library, passing left and right components, and applying flex styling.
Enhance the split screen component by adding left width and right width props (with defaults), pass values to a styled component, and switch to using children for cleaner, subcomponent composition.
Explore building reusable list components in React by composing small and large list items for authors and books, using maps and props to control display and usability.
Build reusable list components by implementing small and large book list items, render book details from props, and extend with a numbered list to illustrate React design patterns.
Design and implement a modal component from scratch in React, applying a modal design pattern with useState, styled-components, and click handling to open, close, and stop propagation.
Explore React design patterns that address common challenges, from reusable layouts and modals to shared data fetching, form management, and functional programming principles for maintainable code.
Explore container components that handle data loading and management for child components, extracting shared logic and passing data via props to keep children unaware of data sources.
Build a current user loader container that fetches the current user from the server endpoint using useState and useEffect and axios, then passes the user to children via props.
Create a flexible user loader component by replacing the current user loader to fetch data by id from the endpoint users/{id}, and pass the id as a prop.
Design a generic resource loader container in React that fetches data from a given URL for any resource, like user or book, and passes it to a corresponding info component.
Design a data source container that is data-agnostic, accepts a getData function, and passes fetched data as props to children, separating fetching logic from UI, from server or local storage.
Explore container components and the render prop pattern to pass data to children without relying on clone elements, improving maintainability, readability, and code clarity.
Fetch data from the browser local storage with a get data from local storage function and a data source component, then display it via a message component in React.
Explore controlled and uncontrolled components in React, a fundamental design pattern, understand state management with useState, and learn why controlled components improve usability and testability.
Explore uncontrolled components in React by building a simple form that uses refs to access input values and to prevent default submission, while contrasting with later controlled forms.
Build a controlled React form by tracking inputs with useState, wiring each input's value and onChange, and adding useEffect-based validation with real-time error messages.
Transform an uncontrolled modal into a controlled component by moving state management to the parent and passing shouldDisplay and onClose as props.
Build an uncontrolled onboarding flow in React that collects step data, tracks the current step index, and advances with a go next function, finishing with an on done callback.
Collect data across an onboarding flow by updating a data object in the go next function, logging updates, and moving from an uncontrolled to a controlled flow with on done.
Transform an uncontrolled onboarding flow into a controlled flow component by lifting state to the parent, wiring current index and on next props, and using data-driven conditions to render steps.
Explore higher order components in React, a pattern where components return another component rather than JSX, acting as factories that enable shared behavior and adding functionality without modifying original code.
Create a higher order component to log and validate props by wrapping the user info component, then test with sample props to confirm console output.
Learn to extend a higher-order component to fetch, display, and post or update a user via server endpoints, with initial user state, editing, and reset functionality.
Build a user form with a higher-order component, passing core props like user, onChangeUser, onPostUser, and onResetUser to enable fetching, updating, and posting data.
Leverage an enhanced higher-order component to build a generic include updatable resource that fetches and updates any server resource, using resource url and resource name for dynamic props.
Explore custom hooks as a React design pattern, combining useState and useEffect to create reusable logic, such as a useUsers hook for fetching data.
Create a useCurrentUser custom hook to fetch and expose current user data with axios and useEffect, returning the user for display in the user info component.
Create a use user custom hook to fetch a user by id from a dynamic url, reload data on id changes, and reuse the component to render multiple users.
Extend the use resource hook to fetch data from any resource, such as users or books, by passing a resource url as an argument and reusing the hook across resources.
Generalize the use resource hook into a use data source, accepting a data-fetching function to pull from server or local storage, and use callback to prevent infinite rerenders.
Learn functional programming in React, with pure functions and minimal mutation, using functions as first class citizens, and patterns like recursive components, partially applied components, and component composition for modularity.
Learn to implement the recursive pattern in React by rendering nested data with a recursive component that iterates object keys and values, using a stopping condition for non-objects.
Explore the composition pattern in React by building a reusable button component and specialized red and green buttons, showing how props and inline styles enable composition over inheritance.
Explore the partial pattern as a step beyond composition, using a higher order component to create partially applied components with partial props. Apply it to reusable red and small buttons.
Master compound components in React by breaking a card into header, body, and footer, then composing them as attached subcomponents. Use context to share state across parts.
Demonstrate the observer (subscriber) pattern by using a shared emitter to let two sibling components communicate, with increment and decrement buttons emitting events while a counter listens and updates.
Explore React portals with createPortal to render a component into a different DOM node while preserving its React placement, and learn about attaching to a dedicated div and event bubbling.
Master error boundaries in React by using a class boundary with getDerivedStateFromError and componentDidCatch to show a fallback interface and log errors, wrapping components or the whole app.
Explore how keys in React differentiate components and trigger fresh renders to preserve or reset state across dynamic UIs, with practical examples using shirts and shoes counters.
explores when to use useLayoutEffect versus useEffect in a React app, showing how to calculate layout before render to prevent UI lag and ensure correct positioning.
Master the useId hook in React to generate unique, server-side rendering safe IDs for labels and inputs, avoiding duplicates with template literals, and ensuring accessible forms.
Use a callback ref with useCallback to focus an input after render, handle mounting and unmounting, and switch to a real useRef when you need a current property.
Apply useDeferredValue with a memoized heavy component to smooth typing delays and keep the input responsive. See how the deferred value prioritizes fast input renders while deferring heavier work.
Learn how useTransition enables non immediate state updates with startTransition, letting you override a pending update (like switching from reviews to cover) while showing a loading indicator and improving responsiveness.
Explore asynchronous data handling in React Router v6 with defer, await, and suspense fallbacks, and implement lazy loading and loaders to optimize performance.
Use the as prop to render a button as an anchor tag while preserving modular styles and anchor tag props, and pass size and other props for consistency.
Optimize context API in a React TypeScript app by splitting state and dispatch into separate contexts, wrapping with a cart provider, and using targeted hooks to reduce re-renders.
Learn to build React projects that stay up-to-date even before they're finished, and discover how to make React applications that are easy to grow and keep up with a system that really works.
If you are exploring this course, chances are high that you’re a React developer looking to level up your skills. In this case, You are in the right place!
The promise of this course is simple: By attending this course you will become the React wizard at your company!
In this course, we touch on unique topics in several modules including, design systems, design patterns, performance optimization, and advanced Typescript with React.
This course explores numerous advanced subjects to guide you in constructing React applications that are maintainable, scalable, and high-performing. It covers topics like scalable project architecture, effective techniques for managing asynchronous operations and API states, advanced component patterns, performance optimization, local and global state management patterns, and more.
If you are a junior or intermediate developer then you will need to master these topics to consider yourself as a senior developer and become ready to apply for senior positions.
All the materials of this course are based on years of experience working on several React projects and every single concept comes with concrete examples.
All the topics are presented with practical real-world examples so you can apply everything in your day-to-day projects right after.
What you will learn:
1 - Advanced Component and Layout Patterns
As a senior software developer, I have identified the topics covered in this module as crucial elements that I seek when interviewing React developer candidates. These patterns can help bridge the gap between being a junior or intermediate developer and becoming a senior React practitioner.
By finishing this part, you'll have the opportunity to explore React's most essential design patterns.
2 - Performance Optimization
Explore many essential techniques for improving and optimizing the performance of your applications to make them blazing-fast and your users amazed - Optimizing Re-renders, Long List Virtualization, Throttling, Denouncing, Code-Splitting & Lazy Loading, and more!
3 - Advanced React Hooks and Concepts
There is also a section about some advanced concepts and hooks and their use-cases as they can help you tackle some challenges in the related scenarios.
4 - Advanced State Management Techniques
Master advanced state management techniques that will allow you to easily manage, share and reuse stateful data in your application. Explore patterns to manage state in a clean, readable and scalable fashion and take advantage of hooks, Immer and Context API.
5 - Scalable Architecture
Learn how to create scalable architecture for your React applications that is actually easy to manage and extend.
6 - Efficiently handle API requests and manage API states at scalable
Learn advanced patterns for managing async operations, API states, and request cancellation by implementing a flexible and scalable API layer and combining it with React-Query.
7 - Design System and Encapsulating Styles
Managing large-scale projects is not just about coding components. Developing endless components without losing track requires solid design systems to guarantee the reusability and maintainability of every element of the project. We will walk you through the concepts and theory, then we develop some basic components in Figma and finally, we build an extensible foundation of design in ReactJS. So you build a mindset of how to design and develop a clean and reusable design system. The greater focus of this module will be on encapsulating styles to guarantee more reusability across your component library.
8 - Clean Code Tips
We also teach you some tips about clean code in React. In this section we explore concepts such As props along with optimizing some performance issues with the Context API.
9 - Advanced Typescript
Last but not least, we explore Typescript the React way! In this module you will learn how to effectively use TypeScript with React components, ensuring that you utilize the appropriate properties. Additionally, discover how to employ the Context API, React Hooks, and type props in order to develop more resilient and type-safe applications on a larger scale!
So long story short, if you wish to tackle all these interesting topics and bring your skills to the next level, then join me in this course!
This course will be under continues progress and more modules will be added based on the students feedbacks!