Bird
Raised Fist0
Reactframework~8 mins

Common list rendering mistakes in React - Performance & Optimization

Choose your learning style10 modes available
Performance: Common list rendering mistakes
HIGH IMPACT
This affects rendering speed and user interaction responsiveness when displaying lists in React.
Rendering a list of items with keys
React
const List = ({ items }) => items.map(item => <li key={item.id}>{item.name}</li>);
Using stable unique keys lets React update only changed items, reducing re-renders and improving responsiveness.
📈 Performance GainOnly changed items re-render, reducing unnecessary DOM updates and improving INP.
Rendering a list of items with keys
React
const List = ({ items }) => items.map((item, index) => <li key={index}>{item}</li>);
Using index as key causes React to re-render all items on list changes, hurting performance and causing UI glitches.
📉 Performance CostTriggers re-render of entire list on any item change, increasing INP and causing layout thrashing.
Performance Comparison
PatternDOM OperationsReflowsPaint CostVerdict
Index as keyHigh (all items re-render)Many (on any change)High (full list repaint)[X] Bad
Stable unique keysLow (only changed items)Few (minimal)Low (partial repaint)[OK] Good
Rendering full large listVery high (thousands of nodes)Many (heavy layout)Very high (full repaint)[X] Bad
Virtualized listLow (only visible nodes)Few (small layout)Low (small repaint)[OK] Good
Inline functions in renderCauses extra re-rendersExtra reflows due to re-rendersIncreased paint cost[X] Bad
Memoized callbacksStable rendersMinimal reflowsReduced paint cost[OK] Good
Rendering Pipeline
React uses keys to identify list items and decide which DOM nodes to update. Bad keys or large lists cause excessive Layout and Paint steps, slowing rendering.
→Reconciliation
→Layout
→Paint
⚠️ BottleneckReconciliation and Layout stages become expensive with unstable keys or large DOM trees.
Core Web Vital Affected
INP
This affects rendering speed and user interaction responsiveness when displaying lists in React.
Optimization Tips
1Always use stable, unique keys for list items to minimize re-renders.
2Virtualize large lists to reduce DOM nodes and improve load time.
3Avoid creating new inline functions inside render to prevent extra re-renders.
Performance Quiz - 3 Questions
Test your performance knowledge
Why is using array index as key in React list rendering a bad practice?
AIt causes React to re-render all items on any list change.
BIt improves rendering speed by simplifying keys.
CIt reduces memory usage by using smaller keys.
DIt prevents React from rendering the list.
DevTools: React DevTools and Chrome Performance panel
How to check: Use React DevTools Profiler to record rendering and see which components re-render. Use Chrome Performance to check main thread activity and layout times.
What to look for: Look for excessive re-renders of list items and long scripting or layout tasks indicating inefficient list rendering.

Practice

(1/5)
1. Why is it important to add a unique key prop when rendering lists in React?
easy
A. It automatically sorts the list alphabetically.
B. It makes the list items look prettier on the screen.
C. It prevents the list from rendering at all.
D. It helps React identify which items have changed, added, or removed.

Solution

  1. Step 1: Understand the role of keys in React lists

    Keys help React track each item uniquely when the list changes.
  2. Step 2: Identify the effect of keys on UI updates

    With keys, React can efficiently update only changed items, improving performance and correctness.
  3. Final Answer:

    It helps React identify which items have changed, added, or removed. -> Option D
  4. Quick Check:

    Keys improve UI updates = A [OK]
Hint: Keys uniquely identify list items for React updates [OK]
Common Mistakes:
  • Thinking keys affect styling
  • Believing keys prevent rendering
  • Assuming keys sort the list
2. Which of the following is the correct way to add keys when rendering a list of items stored in items array?
easy
A. {items.map((item, index) => <li key={index}>{item}</li>)}
B. {items.map(item => <li key={item.id}>{item.name}</li>)}
C. {items.map(item => <li>{item.name}</li>)}
D. {items.map((item, i) => <li key={i + 1}>{item.name}</li>)}

Solution

  1. Step 1: Check key uniqueness and stability

    Using item.id ensures each key is unique and stable across renders.
  2. Step 2: Evaluate other options

    Using index as key (options A and D) can cause bugs if list changes; no key ({items.map(item => <li>{item.name}</li>)}) causes warnings.
  3. Final Answer:

    {items.map(item => <li key={item.id}>{item.name}</li>)} -> Option B
  4. Quick Check:

    Use unique stable keys = B [OK]
Hint: Use unique IDs, not indexes, as keys [OK]
Common Mistakes:
  • Using array index as key
  • Omitting the key prop
  • Using non-unique keys
3. What will be the output of this React code snippet?
const items = ['apple', 'banana', 'cherry'];

function FruitList() {
  return (
    <ul>
      {items.map((fruit, index) => (
        <li key={index}>{fruit}</li>
      ))}
    </ul>
  );
}

Assuming the list changes by adding 'date' at the start, what problem might occur?
medium
A. React may reuse wrong list items causing UI bugs due to index keys.
B. React will throw a syntax error because keys cannot be numbers.
C. The list will not render at all.
D. React will correctly update the list with no issues.

Solution

  1. Step 1: Understand index as key behavior

    Using index as key means keys depend on item position, not identity.
  2. Step 2: Analyze effect of adding item at start

    Adding 'date' at start shifts indexes, causing React to mismatch items and update wrong elements.
  3. Final Answer:

    React may reuse wrong list items causing UI bugs due to index keys. -> Option A
  4. Quick Check:

    Index keys cause UI bugs on list changes = D [OK]
Hint: Index keys break UI if list order changes [OK]
Common Mistakes:
  • Assuming index keys are always safe
  • Thinking React throws error for numeric keys
  • Believing list won't render without unique keys
4. Identify the error in this React list rendering code:
const users = [{id: 1, name: 'Anna'}, {id: 2, name: 'Ben'}];

function UserList() {
  return (
    <ul>
      {users.map(user => <li key={user.name}>{user.name}</li>)}
    </ul>
  );
}
medium
A. Using user.name as key may cause duplicate keys if names repeat.
B. Missing key prop on list items.
C. Using curly braces inside JSX is invalid here.
D. The map function should return a fragment instead of <li>.

Solution

  1. Step 1: Check key uniqueness

    Keys must be unique and stable. Using user.name risks duplicates if names repeat.
  2. Step 2: Confirm other code parts

    Key prop is present; JSX syntax is correct;
  3. is appropriate for list items.
  4. Final Answer:

    Using user.name as key may cause duplicate keys if names repeat. -> Option A
  5. Quick Check:

    Keys must be unique = C [OK]
Hint: Keys must be unique, avoid using non-unique fields [OK]
Common Mistakes:
  • Using non-unique keys like names
  • Omitting key prop
  • Misunderstanding JSX syntax
5. You have a list of tasks where some tasks have duplicate IDs due to a backend bug. How should you render this list in React to avoid key conflicts?
const tasks = [
  {id: 1, title: 'Task A'},
  {id: 2, title: 'Task B'},
  {id: 1, title: 'Task C'}
];

function TaskList() {
  return (
    <ul>
      {tasks.map((task, index) => (
        <li key={/* What to put here? */}>{task.title}</li>
      ))}
    </ul>
  );
}
hard
A. Use key={task.id} even if duplicates exist.
B. Use key={index} to guarantee uniqueness despite duplicates.
C. Combine id and index like key={`${task.id}-${index}`} for unique keys.
D. Omit the key prop to avoid errors.

Solution

  1. Step 1: Understand key uniqueness requirement

    Keys must be unique and stable. Duplicate IDs break uniqueness.
  2. Step 2: Combine id and index for uniqueness

    Combining id and index creates unique keys like '1-0', '1-2', avoiding conflicts.
  3. Final Answer:

    Combine id and index like key={`${task.id}-${index}`} for unique keys. -> Option C
  4. Quick Check:

    Unique keys from combined values = A [OK]
Hint: Combine id and index for unique keys if duplicates exist [OK]
Common Mistakes:
  • Using duplicate IDs as keys
  • Omitting keys
  • Using only index keys causing UI bugs
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard