Bird
Raised Fist0
Reactframework~8 mins

Client-side routing concept in React - Performance & Optimization

Choose your learning style10 modes available
Performance: Client-side routing concept
MEDIUM IMPACT
Client-side routing affects page load speed by reducing full page reloads and improves interaction responsiveness by updating only parts of the page.
Navigating between pages in a React app
React
import { BrowserRouter, Routes, Route, Link } from 'react-router-dom';

function App() {
  return (
    <BrowserRouter>
      <nav>
        <Link to='/about'>About</Link>
        <Link to='/contact'>Contact</Link>
      </nav>
      <Routes>
        <Route path='/about' element={<About />} />
        <Route path='/contact' element={<Contact />} />
      </Routes>
    </BrowserRouter>
  );
}
Updates URL and content without full reload, preserving app state and improving responsiveness.
📈 Performance GainSingle-page update triggers 1 reflow and paint, no full reload
Navigating between pages in a React app
React
function App() {
  return (
    <div>
      <button onClick={() => window.location.href = '/about'}>About</button>
      <button onClick={() => window.location.href = '/contact'}>Contact</button>
    </div>
  );
}
Triggers full page reloads on navigation, causing slower load times and losing app state.
📉 Performance CostBlocks rendering for 500-1000ms per navigation, triggers full page reload
Performance Comparison
PatternDOM OperationsReflowsPaint CostVerdict
Full page reload navigationHigh (reloads entire DOM)Multiple (full page)High (full repaint)[X] Bad
Client-side routing with react-routerLow (updates partial DOM)Single or fewLow (partial repaint)[OK] Good
Rendering Pipeline
Client-side routing intercepts navigation events, updates the URL and React component tree, triggering style recalculation, layout, and paint only for changed parts.
→Style Calculation
→Layout
→Paint
→Composite
⚠️ BottleneckLayout and Paint stages when updating visible components
Core Web Vital Affected
INP
Client-side routing affects page load speed by reducing full page reloads and improves interaction responsiveness by updating only parts of the page.
Optimization Tips
1Use client-side routing to avoid full page reloads and improve interaction speed.
2Split code by route to reduce initial bundle size and speed up first load.
3Minimize re-rendered components on route change to reduce layout and paint cost.
Performance Quiz - 3 Questions
Test your performance knowledge
What is a main performance benefit of client-side routing in React?
AEliminates all reflows and repaints
BReduces initial JavaScript bundle size
CAvoids full page reloads, improving interaction speed
DAutomatically caches all pages on first load
DevTools: Performance
How to check: Record a navigation event, then inspect the flame chart for scripting, layout, and paint times. Compare full reload vs client-side route change.
What to look for: Look for long scripting and layout times on full reload; client-side routing shows shorter, partial updates.

Practice

(1/5)
1. What is the main purpose of client-side routing in a React application?
easy
A. To handle server-side rendering only
B. To reload the whole page when navigating
C. To change views without reloading the entire page
D. To manage database connections

Solution

  1. Step 1: Understand client-side routing

    Client-side routing allows changing the visible content without refreshing the whole page, making navigation faster and smoother.
  2. Step 2: Compare options

    Options B, C, and D describe behaviors unrelated to client-side routing in React.
  3. Final Answer:

    To change views without reloading the entire page -> Option C
  4. Quick Check:

    Client-side routing = change views without reload [OK]
Hint: Client-side routing avoids full page reloads [OK]
Common Mistakes:
  • Confusing client-side routing with server-side rendering
  • Thinking navigation always reloads the page
  • Assuming routing manages backend tasks
2. Which of the following is the correct way to import components for client-side routing in React?
easy
A. import { BrowserRouter, Routes, Route } from 'react-router-dom';
B. import { Router, RouteList, Route } from 'react-router';
C. import { BrowserRouter, Route, Link } from 'react-router';
D. import { Router, Routes, Link } from 'react-router-dom';

Solution

  1. Step 1: Identify the correct package and components

    The official React routing library is 'react-router-dom' and the main components are BrowserRouter, Routes, and Route.
  2. Step 2: Check each import statement

    Only import { BrowserRouter, Routes, Route } from 'react-router-dom'; correctly imports BrowserRouter, Routes, and Route from 'react-router-dom'. Others use incorrect component names or wrong packages.
  3. Final Answer:

    import { BrowserRouter, Routes, Route } from 'react-router-dom'; -> Option A
  4. Quick Check:

    Correct import = import { BrowserRouter, Routes, Route } from 'react-router-dom'; [OK]
Hint: Remember 'react-router-dom' exports BrowserRouter, Routes, Route [OK]
Common Mistakes:
  • Using 'react-router' instead of 'react-router-dom'
  • Mixing component names like Router instead of BrowserRouter
  • Forgetting to import Routes component
3. Given this React routing code snippet, what will be displayed when the URL path is /about?
import { BrowserRouter, Routes, Route } from 'react-router-dom';

function App() {
  return (
    
      
        Home} />
        About Us} />
        Contact} />
      
    
  );
}
medium
A.

Home

B.

About Us

C.

Contact

D. Nothing will be displayed

Solution

  1. Step 1: Match URL path to Route path

    The URL path '/about' matches the Route with path='/about'.
  2. Step 2: Identify the element rendered

    The Route for '/about' renders <h1>About Us</h1>.
  3. Final Answer:

    <h1>About Us</h1> -> Option B
  4. Quick Check:

    Path '/about' renders About Us [OK]
Hint: Match URL path exactly to Route path [OK]
Common Mistakes:
  • Choosing the home route for all paths
  • Confusing element props with children
  • Assuming multiple routes render simultaneously
4. Identify the error in this React routing setup:
import { BrowserRouter, Routes, Route } from 'react-router-dom';

function App() {
  return (
    <BrowserRouter>
      <Route path='/' element={} />
      <Routes>
        <Route path='/about' element={} />
      </Routes>
    </BrowserRouter>
  );
}
medium
A. Route components must be inside Routes component
B. BrowserRouter cannot wrap Routes
C. Route elements cannot use JSX components
D. Missing import for Home and About components

Solution

  1. Step 1: Check Route placement

    All Route components must be children of a Routes component to work correctly.
  2. Step 2: Identify the misplaced Route

    The Route with path='/' is outside the Routes component, which is incorrect.
  3. Final Answer:

    Route components must be inside Routes component -> Option A
  4. Quick Check:

    Routes wrap Route components [OK]
Hint: Always nest Route inside Routes [OK]
Common Mistakes:
  • Placing Route outside Routes component
  • Thinking BrowserRouter cannot wrap Routes
  • Confusing JSX elements with strings in element prop
5. You want to create a navigation menu that updates the URL and shows the correct page without reloading. Which React Router component should you use for the links?
hard
A. <a> tags with href attribute
B. <button> with onClick calling window.location
C. <NavLink> component but without BrowserRouter
D. <Link> component from react-router-dom

Solution

  1. Step 1: Understand navigation in React Router

    The <Link> component updates the URL and renders the new route without reloading the page.
  2. Step 2: Evaluate options for SPA navigation

    <a> tags with href attribute causes full page reloads. <button> with onClick calling window.location uses window.location which reloads. <NavLink> component but without BrowserRouter requires BrowserRouter to work properly.
  3. Final Answer:

    <Link> component from react-router-dom -> Option D
  4. Quick Check:

    Use Link for client-side navigation [OK]
Hint: Use Link, not anchor tags, for SPA navigation [OK]
Common Mistakes:
  • Using <a> tags causing full page reload
  • Forgetting BrowserRouter wrapper for NavLink
  • Using buttons with window.location causing reload
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