Frontend Mastery

Component Re-rendering: How to profile and fix slow UIs

1 Views Updated 5/4/2026

React Performance Profiling

In React, a "Re-render" isn't necessarily bad. But **Wasted Re-renders** (when a component renders but the DOM doesn't change) can turn a fast app into a laggy mess. As a frontend architect, you must know how to use the React DevTools Profiler to find these killers.

1. The Profiler "Flame Chart"

The Profiler shows you a bar for every component.

  • Gray Bars: The component did NOT re-render. (Perfect).
  • Colored Bars: The component re-rendered. The wider the bar, the longer it took.
Click on a colored bar, and React will tell you exactly which prop or state change caused that specific component to wake up.

2. Fixing the "Drilling" Re-render

If a parent state changes, all children re-render by default. You can stop this using React.memo(). It performs a "Shallow Comparison" of the props. If the props are and identical, React skips the component entirely.

4. Interview Mastery

Q: "Why would you NOT want to wrap every component in React.memo?"

Architect Answer: "Because `React.memo` is not free. It involves storing a copy of the old props in memory and performing a comparison on every render. If your component is small and simple (like an icon or a basic button), the 'Shallow Comparison' can actually take MORE time than just letting React re-render. Memoization should be reserved for expensive components or components that re-render hundreds of times per second."

Frontend Mastery
1. Core Foundation & Modern JS
ES6+ for Architects: Closures, Generators, and Symbols Asynchronous JS: Event Loop, Microtasks, and Promises TypeScript Mastery: Advanced Types, Generics, and Utility Types
2. React Internals & Core Hooks
Virtual DOM vs Reconciliation: The Fiber Architecture Effective useState & useEffect: Avoiding infinite loops useMemo vs useCallback: When optimization becomes a bottleneck useContext + useReducer: Building a built-in state manager Custom Hooks: Extracting business logic for reusability
3. Professional State Management
Redux Toolkit (RTK): Slices, Selectors, and Thunks RTK Query: Automating API caching and synchronization Zustand: The lightweight alternative to Redux Signal-based State: The future of fine-grained reactivity
4. Performance & Rendering
Component Re-rendering: How to profile and fix slow UIs Lazy Loading & Code Splitting: Shrinking your bundle size Virtualization: Rendering million-row lists efficiently Web Workers: Offloading heavy calculations to background threads
5. Design Systems & CSS
Modern CSS: Grid, Flexbox, and Container Queries CSS-in-JS vs TailWindCSS: Choosing the right styling strategy Storybook: Building a shared component library Accessibility (a11y): Building inclusive web interfaces
6. Next.js & Modern Frameworks
Next.js App Router: SSR vs SSG vs ISR React Server Components (RSC): The end of the Waterfall Data Fetching Patterns: Streaming and Suspense SEO for Frontend: Meta Tags, JSON-LD, and Core Web Vitals
7. Testing & Security
Unit Testing: Vitest and React Testing Library E2E Testing: Playwright for mission-critical flows Frontend Security: XSS, CSRF, and Content Security Policy State Synchronization: Optimistic UI & WebSockets
8. Final Polish & Interview
Micro-Frontends: Scalable architecture for enterprise teams Frontend Architect Interview: System Design & Performance