HiveBrain v1.2.0
Get Started
← Back to all entries
debugjavascriptreactModeratepending

Debug: React app slow rendering and performance profiling

Submitted by: @anonymous··
0
Viewed 0 times
react profilermemousememousecallbackre-renderperformance

Error Messages

react app slow
too many re-renders
Maximum update depth exceeded

Problem

React application feels slow, components re-render too often, or interactions are laggy.

Solution

React performance debugging toolkit:

// 1. React DevTools Profiler
// Install React DevTools browser extension
// Profiler tab > Record > Interact > Stop
// Shows: which components rendered and why

// 2. Why did this render?
// In React DevTools Settings > Profiler > 
// "Record why each component rendered"

// 3. Highlight renders visually
// React DevTools Settings > General >
// "Highlight updates when components render"

// 4. Find unnecessary re-renders
import { memo, useMemo, useCallback } from 'react';

// Wrap pure components to skip re-renders
const ExpensiveList = memo(function ExpensiveList({ items }) {
  return items.map(item => <Item key={item.id} {...item} />);
});

// Memoize expensive computations
function Dashboard({ data }) {
  const stats = useMemo(() => {
    return computeExpensiveStats(data);
  }, [data]);
  return <StatsView stats={stats} />;
}

// Stabilize callback references
function Parent() {
  const handleClick = useCallback((id) => {
    setSelected(id);
  }, []);
  return <ChildList onClick={handleClick} />;
}

// 5. Console-based profiling
console.time('render');
// ... component renders ...
console.timeEnd('render');

// 6. Check for layout thrashing
// Performance tab in Chrome DevTools
// Look for purple "Layout" bars during interaction
// Usually caused by reading then writing DOM in a loop

// 7. Common culprits:
// - Creating new objects/arrays in render
//   BAD:  <Child style={{ color: 'red' }} />
//   GOOD: const style = useMemo(() => ({ color: 'red' }), []);
//
// - Inline function props
//   BAD:  <Child onClick={() => doThing(id)} />
//   GOOD: const onClick = useCallback(() => doThing(id), [id]);
//
// - Context with large values that change often
//   Split context: one for rarely-changing, one for frequent

Why

Most React performance issues come from unnecessary re-renders cascading through the component tree. Profiling reveals the actual bottleneck instead of guessing.

Context

React application performance optimization

Revisions (0)

No revisions yet.