Bird
Raised Fist0
NextJSframework~5 mins

Route prefetching behavior in NextJS - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is route prefetching in Next.js?
Route prefetching in Next.js means loading the code and data for a page before the user clicks the link. This makes navigation faster because the page is ready to show immediately.
Click to reveal answer
intermediate
How does Next.js decide when to prefetch a route?
Next.js prefetches routes automatically when a Link component is visible in the viewport and the browser is idle. This helps avoid slowing down the main tasks.
Click to reveal answer
beginner
Can you disable route prefetching in Next.js? How?
Yes, you can disable prefetching by adding prefetch={false} to the Link component. This stops Next.js from loading the page early.
Click to reveal answer
intermediate
What happens if a user never clicks a prefetched link?
If the user never clicks the prefetched link, the loaded data stays in the browser cache but is not used. This can use some bandwidth but improves speed if the user does click later.
Click to reveal answer
beginner
Why is route prefetching important for user experience?
Route prefetching makes pages load instantly when users click links. This feels smooth and fast, like flipping pages in a book without waiting.
Click to reveal answer
When does Next.js automatically prefetch a route?
AWhen the page loads, regardless of visibility
BOnly after the user clicks the link
CWhen the <code>Link</code> is visible and the browser is idle
DWhen the user scrolls to the bottom of the page
How can you stop Next.js from prefetching a route?
APrefetching cannot be stopped
BRemove the <code>Link</code> component
CUse a different router library
DAdd <code>prefetch={false}</code> to the <code>Link</code> component
What is a benefit of route prefetching?
APages load instantly when clicked
BIt reduces server load
CIt disables JavaScript on the page
DIt prevents caching
If a prefetched page is never visited, what happens?
AThe prefetched data stays cached but unused
BThe browser deletes the data immediately
CThe server is notified to cancel the prefetch
DThe page automatically loads anyway
Which Next.js component is involved in route prefetching?
A<code>Head</code>
B<code>Link</code>
C<code>Script</code>
D<code>Image</code>
Explain how route prefetching works in Next.js and why it improves user experience.
Think about how loading pages early helps users feel the app is faster.
You got /4 concepts.
    Describe how you can control route prefetching behavior in a Next.js app.
    Focus on the Link component and its prefetch property.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of route prefetching in Next.js?
      easy
      A. To prevent users from navigating to certain pages
      B. To disable client-side navigation
      C. To load pages in the background before the user navigates to them
      D. To increase the size of the initial JavaScript bundle

      Solution

      1. Step 1: Understand what prefetching means

        Prefetching means loading resources ahead of time before they are needed.
      2. Step 2: Apply this to Next.js routing

        Next.js prefetches pages in the background to make navigation faster when the user clicks a link.
      3. Final Answer:

        To load pages in the background before the user navigates to them -> Option C
      4. Quick Check:

        Prefetching = background loading [OK]
      Hint: Prefetching means loading before navigation happens [OK]
      Common Mistakes:
      • Thinking prefetching blocks navigation
      • Confusing prefetching with disabling navigation
      • Assuming prefetching increases initial load size
      2. Which of the following is the correct way to disable automatic prefetching on a Next.js Link component?
      easy
      A. <Link href='/about' prefetch={false}>About</Link>
      B. <Link href='/about' prefetch>About</Link>
      C. <Link href='/about' noPrefetch>About</Link>
      D. <Link href='/about' prefetch='off'>About</Link>

      Solution

      1. Step 1: Recall the prefetch prop usage

        The prefetch prop accepts a boolean to enable or disable prefetching.
      2. Step 2: Identify the correct syntax to disable prefetching

        Setting prefetch={false} disables automatic prefetching on the Link.
      3. Final Answer:

        <Link href='/about' prefetch={false}>About</Link> -> Option A
      4. Quick Check:

        Disable prefetch with prefetch={false} [OK]
      Hint: Use prefetch={false} to turn off prefetching [OK]
      Common Mistakes:
      • Using just 'prefetch' without value disables prefetching
      • Using non-existent props like noPrefetch
      • Passing string values instead of boolean
      3. Consider this Next.js code snippet:
      import Link from 'next/link';
      
      export default function Home() {
        return (
          <div>
            <Link href='/profile' prefetch>Go to Profile</Link>
          </div>
        );
      }

      What happens when this component renders in the browser?
      medium
      A. The '/profile' page is not prefetched because prefetch defaults to false
      B. The '/profile' page is prefetched in the background to speed up navigation
      C. The link will cause a full page reload when clicked
      D. The component will throw a syntax error due to incorrect prefetch usage

      Solution

      1. Step 1: Check the prefetch prop usage

        The prefetch prop is present without a value, which means it is true.
      2. Step 2: Understand Next.js default behavior

        Next.js prefetches linked pages by default, so explicitly adding prefetch confirms this behavior.
      3. Final Answer:

        The '/profile' page is prefetched in the background to speed up navigation -> Option B
      4. Quick Check:

        prefetch present = prefetch enabled [OK]
      Hint: Presence of prefetch prop means prefetching is on [OK]
      Common Mistakes:
      • Thinking prefetch defaults to false
      • Assuming link causes full page reload
      • Confusing syntax with errors
      4. You wrote this code to prefetch a route manually:
      import { useRouter } from 'next/router';
      import { useEffect } from 'react';
      
      export default function Page() {
        const router = useRouter();
      
        useEffect(() => {
          router.prefetch('/dashboard');
        }, []);
      
        return <div>Welcome</div>;
      }

      However, the prefetch does not seem to work. What is the likely cause?
      medium
      A. You must call router.prefetch inside an event handler, not useEffect
      B. The router.prefetch method does not exist in Next.js
      C. The router.prefetch method is asynchronous and needs to be awaited
      D. The useRouter import path is incorrect; it should be from 'next/navigation'

      Solution

      1. Step 1: Check the import source of useRouter

        In Next.js 14+, useRouter for client navigation is imported from 'next/navigation', not 'next/router'.
      2. Step 2: Understand impact on router.prefetch

        Importing from 'next/router' gives an outdated router without prefetch support, so prefetch won't work.
      3. Final Answer:

        The useRouter import path is incorrect; it should be from 'next/navigation' -> Option D
      4. Quick Check:

        Correct import = 'next/navigation' [OK]
      Hint: Use 'next/navigation' for router.prefetch in Next.js 14+ [OK]
      Common Mistakes:
      • Importing useRouter from 'next/router' instead of 'next/navigation'
      • Not awaiting async prefetch (not required)
      • Thinking prefetch only works in event handlers
      5. You want to optimize bandwidth by prefetching only when a user hovers over a link. Which approach correctly implements this in Next.js?
      hard
      A. Set prefetch={false} on Link and call router.prefetch() inside an onMouseEnter event handler
      B. Set prefetch on Link and call router.prefetch() inside useEffect
      C. Remove prefetch from Link and rely on default prefetching
      D. Use prefetch={true} on Link and disable prefetching globally in config

      Solution

      1. Step 1: Disable automatic prefetching on the Link

        Set prefetch={false} to prevent Next.js from prefetching immediately.
      2. Step 2: Prefetch manually on user hover

        Use onMouseEnter event to call router.prefetch() to load the page only when user shows interest.
      3. Final Answer:

        Set prefetch={false} on Link and call router.prefetch() inside an onMouseEnter event handler -> Option A
      4. Quick Check:

        Manual prefetch on hover = prefetch={false} + onMouseEnter [OK]
      Hint: Disable auto prefetch, prefetch manually on hover event [OK]
      Common Mistakes:
      • Prefetching both automatically and manually causing wasted bandwidth
      • Calling prefetch in useEffect instead of on hover
      • Relying on default prefetching without control
      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