Bird
Raised Fist0
Reactframework~8 mins

React vs traditional JavaScript - Performance Comparison

Choose your learning style10 modes available
Performance: React vs traditional JavaScript
MEDIUM IMPACT
This affects how fast the page loads and updates when users interact, impacting rendering speed and responsiveness.
Updating UI elements on user interaction
React
import React, { useState } from 'react';

function ItemList() {
  const [items, setItems] = useState([]);
  return (
    <>
      <button onClick={() => setItems([...items, 'New item'])}>Add Item</button>
      <ul>
        {items.map((item, i) => <li key={i}>{item}</li>)}
      </ul>
    </>
  );
}

export default ItemList;
React batches state updates and updates the virtual DOM first, minimizing real DOM changes and reflows.
📈 Performance GainSingle reflow per batch update, improving interaction to next paint (INP) and reducing main thread blocking.
Updating UI elements on user interaction
React
const button = document.getElementById('btn');
button.addEventListener('click', () => {
  const list = document.getElementById('list');
  const newItem = document.createElement('li');
  newItem.textContent = 'New item';
  list.appendChild(newItem);
});
Direct DOM manipulation causes multiple reflows and repaints for each update, slowing down responsiveness.
📉 Performance CostTriggers 1 reflow and repaint per item added, blocking main thread briefly on each update.
Performance Comparison
PatternDOM OperationsReflowsPaint CostVerdict
Traditional JavaScript direct DOM manipulationMultiple direct node insertions1 reflow per insertionHigh paint cost per update[X] Bad
React with virtual DOM and state updatesBatched DOM updates via virtual DOMSingle reflow per batchLower paint cost due to minimal changes[OK] Good
Rendering Pipeline
React updates start with a virtual DOM diff, then only the changed parts are updated in the real DOM, reducing layout recalculations and paints.
→JavaScript Execution
→Style Calculation
→Layout
→Paint
→Composite
⚠️ BottleneckLayout and Paint stages due to direct DOM changes in traditional JavaScript
Core Web Vital Affected
INP
This affects how fast the page loads and updates when users interact, impacting rendering speed and responsiveness.
Optimization Tips
1Avoid direct DOM manipulation for frequent UI updates to reduce reflows.
2Use React's state and virtual DOM to batch and minimize DOM changes.
3Measure layout recalculations in DevTools to find performance bottlenecks.
Performance Quiz - 3 Questions
Test your performance knowledge
Why does React generally provide better interaction performance than direct DOM manipulation?
ABecause React batches updates and minimizes direct DOM changes
BBecause React uses more DOM nodes
CBecause React blocks rendering longer
DBecause React disables browser optimizations
DevTools: Performance
How to check: Record a performance profile while interacting with the UI. Look for long tasks and frequent layout recalculations.
What to look for: High number of layout events and long main thread tasks indicate poor performance; fewer layout recalculations and shorter tasks indicate better React batching.

Practice

(1/5)
1. What is a key difference between React and traditional JavaScript when building web pages?
easy
A. React requires writing HTML only, traditional JavaScript uses CSS only.
B. React uses components and JSX, while traditional JavaScript manipulates the DOM directly.
C. React cannot update the page dynamically, traditional JavaScript can.
D. React uses server-side rendering only, traditional JavaScript is client-side only.

Solution

  1. Step 1: Understand React's approach

    React builds UI using components and JSX, which is a syntax that looks like HTML inside JavaScript.
  2. Step 2: Understand traditional JavaScript approach

    Traditional JavaScript changes the page by directly manipulating the DOM elements, which can be more complex and error-prone.
  3. Final Answer:

    React uses components and JSX, while traditional JavaScript manipulates the DOM directly. -> Option B
  4. Quick Check:

    React uses components and JSX = A [OK]
Hint: React uses components; traditional JS changes DOM directly [OK]
Common Mistakes:
  • Thinking React only uses HTML or CSS
  • Believing React cannot update pages dynamically
  • Confusing server-side and client-side rendering
2. Which of the following is the correct way to create a React functional component?
easy
A. class MyComponent extends React.Component { render() { return 'Hello'; } }
B. var MyComponent =
Hello
;
C. function MyComponent() { return
Hello
; }
D. function MyComponent() { document.write('Hello'); }

Solution

  1. Step 1: Identify React functional component syntax

    A React functional component is a function returning JSX, like function MyComponent() { return <div>Hello</div>; }.
  2. Step 2: Check other options for correctness

    var MyComponent =
    Hello; assigns JSX directly to a variable, not a function. class MyComponent extends React.Component { render() { return 'Hello'; } } is a class component, not functional. function MyComponent() { document.write('Hello'); } uses document.write, which is not React.
  3. Final Answer:

    function MyComponent() { return <div>Hello</div>; } -> Option C
  4. Quick Check:

    Functional component returns JSX function = A [OK]
Hint: Functional components are functions returning JSX [OK]
Common Mistakes:
  • Confusing class components with functional components
  • Using document.write inside React components
  • Assigning JSX to variables without functions
3. What will be the output on the page when this React component is rendered?
function Greeting() {
  const name = 'Alice';
  return <h1>Hello, {name}!</h1>;
}
medium
A. Hello, Alice!
B. Hello, name!
C. <h1>Hello, {name}!</h1>
D. Error: name is not defined

Solution

  1. Step 1: Understand JSX expression evaluation

    Inside JSX, curly braces {name} insert the value of the variable name, which is 'Alice'.
  2. Step 2: Determine rendered output

    The component returns <h1>Hello, Alice!</h1>, so the page shows the text 'Hello, Alice!'.
  3. Final Answer:

    Hello, Alice! -> Option A
  4. Quick Check:

    JSX inserts variable value = C [OK]
Hint: JSX {variable} shows variable value, not text {variable} [OK]
Common Mistakes:
  • Thinking JSX shows {name} literally
  • Confusing variable name with string output
  • Expecting an error due to variable usage
4. Identify the error in this React component code:
function Counter() {
  let count = 0;
  function increment() {
    count++;
  }
  return <button onClick={increment}>Count: {count}</button>;
}
medium
A. Using let instead of const for count
B. onClick should be written as onclick
C. Missing semicolon after count++
D. The increment function does not update the displayed count

Solution

  1. Step 1: Understand React state behavior

    React components must use state (like useState) to update UI dynamically. Here, count is a normal variable and changes won't re-render the component.
  2. Step 2: Identify why increment doesn't update UI

    Increment changes count variable but React does not know to re-render, so displayed count stays 0.
  3. Final Answer:

    The increment function does not update the displayed count -> Option D
  4. Quick Check:

    State needed to update UI = D [OK]
Hint: Use React state (useState) to update UI, not plain variables [OK]
Common Mistakes:
  • Thinking let vs const affects UI update
  • Ignoring React's re-render on state change
  • Using wrong event attribute case
5. You want to build a dynamic list of items that updates when a user adds a new item. Which approach best uses React instead of traditional JavaScript?
hard
A. Use React's useState hook to store the list and update it, then render the list in JSX.
B. Use document.getElementById to find the list element and append new items manually.
C. Write a for loop to create HTML strings and set innerHTML of the list container.
D. Use React class components with componentDidMount to update the list directly.

Solution

  1. Step 1: Understand React's dynamic UI approach

    React uses state (like useState) to hold data and re-renders UI automatically when state changes.
  2. Step 2: Compare with traditional DOM manipulation

    Traditional JavaScript manipulates DOM directly (options A and C), which is harder to manage and less efficient.
  3. Step 3: Consider React class components

    Use React class components with componentDidMount to update the list directly. uses class components and lifecycle methods, but modern React prefers functional components with hooks.
  4. Final Answer:

    Use React's useState hook to store the list and update it, then render the list in JSX. -> Option A
  5. Quick Check:

    React state and JSX rendering = B [OK]
Hint: Use useState hook for dynamic lists in React [OK]
Common Mistakes:
  • Using direct DOM methods inside React components
  • Relying on innerHTML string building
  • Using outdated class components instead of hooks
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