Bird
Raised Fist0
NextJSframework~5 mins

Global-error.tsx for root errors in NextJS - Cheat Sheet & Quick Revision

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What is the purpose of a Global-error.tsx file in a Next.js app?
It handles root-level errors by showing a friendly error message when something goes wrong anywhere in the app, preventing the app from crashing silently.
Click to reveal answer
intermediate
Which React hook is commonly used inside Global-error.tsx to reset error state?
The useEffect hook is often used to reset or clear error state when the component mounts or when certain conditions change.
Click to reveal answer
intermediate
What props does the Global-error.tsx component receive in Next.js 13+ app router?
It receives an error object and a reset function as props. error contains the error details, and reset lets you clear the error to try rendering again.
Click to reveal answer
beginner
Why should Global-error.tsx include a button to reset the error?
Because it lets users try to reload or recover from the error without refreshing the whole page, improving user experience.
Click to reveal answer
intermediate
Show a simple example of a Global-error.tsx component in Next.js that displays the error message and a reset button.
'use client';
import React from 'react';

export default function GlobalError({ error, reset }: { error: Error; reset: () => void }) {
  return (
    <div role="alert" style={{ padding: '2rem', textAlign: 'center' }}>
      <h2>Something went wrong!</h2>
      <pre>{error.message}</pre>
      <button onClick={() => reset()} aria-label="Try again">Try again</button>
    </div>
  );
}
Click to reveal answer
What does the reset function do in Global-error.tsx?
AReloads the entire browser window
BNavigates to the home page
CLogs the error to the console
DClears the error state to retry rendering
Where should you place Global-error.tsx in a Next.js 13 app router project?
AIn the <code>components</code> folder
BInside the <code>app</code> folder at the root level
CInside the <code>pages</code> folder
DIn the <code>public</code> folder
Which of these is a good accessibility practice for the error message in Global-error.tsx?
AUse <code>role="alert"</code> on the error container
BUse only images to show errors
CHide the error message from screen readers
DUse blinking text for errors
What React directive is required at the top of Global-error.tsx to use client-side hooks?
A"use client"
B"use server"
C"use strict"
D"use error"
What is the main benefit of having a global error component in Next.js?
AIt speeds up page loading
BIt improves SEO rankings
CIt prevents the app from crashing silently and shows a user-friendly message
DIt automatically fixes bugs
Explain how Global-error.tsx works in Next.js app router and why it is important.
Think about how the app handles unexpected problems and lets users try again.
You got /5 concepts.
    Describe the accessibility features you should include in a global error component.
    Consider how screen readers and keyboard users will interact with the error message.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of the Global-error.tsx file in a Next.js app?
      easy
      A. To catch errors anywhere in the app and show a friendly error message
      B. To define global CSS styles for the app
      C. To handle user authentication and sessions
      D. To configure API routes for the backend

      Solution

      1. Step 1: Understand the role of Global-error.tsx

        This file is designed to catch errors that happen anywhere in the Next.js app, acting as a global error boundary.
      2. Step 2: Identify its main function

        It shows a user-friendly error message and allows users to retry or reset the error state.
      3. Final Answer:

        To catch errors anywhere in the app and show a friendly error message -> Option A
      4. Quick Check:

        Global-error.tsx handles app-wide errors = A [OK]
      Hint: Global-error.tsx handles errors globally, not styles or auth [OK]
      Common Mistakes:
      • Confusing error handling with styling or routing
      • Thinking it manages authentication
      • Assuming it only catches errors in one component
      2. Which of the following is the correct way to define the GlobalError component in Global-error.tsx using React functional components in Next.js?
      easy
      A. export default function GlobalError({ error, reset }) { return
      {error.message}
      ; }
      B. class GlobalError extends React.Component { render() { return
      Error
      ; } } export default GlobalError;
      C. const GlobalError = () => { return
      Error
      ; }; export default GlobalError;
      D. function GlobalError() { return
      Error
      ; }

      Solution

      1. Step 1: Identify React functional component with props

        Next.js uses React functional components with props like { error, reset } for Global-error.tsx.
      2. Step 2: Check correct export and props usage

        export default function GlobalError({ error, reset }) { return
        {error.message}; } correctly defines a function with props and exports it as default.
      3. Final Answer:

        export default function GlobalError({ error, reset }) { return
        {error.message}
        ; }
        -> Option A
      4. Quick Check:

        Functional component with props and default export = A [OK]
      Hint: Use functional component with props and default export [OK]
      Common Mistakes:
      • Using class components instead of functional
      • Missing props in function parameters
      • Not exporting the component as default
      3. Given this Global-error.tsx snippet, what will be rendered when an error with message "Network failure" occurs?
      export default function GlobalError({ error, reset }) {
        return (
          

      Oops!

      {error.message}

      Try again
      ); }
      medium
      A.

      Oops!

      Network failure

      B.

      Oops!

      Network failure

      Try again
      C.

      Oops!

      Error occurred

      Retry
      D.

      Error

      Network failure

      Solution

      1. Step 1: Analyze the JSX structure

        The component returns a <main role="alert"> with a heading, paragraph showing error.message, and a button with text "Try again".
      2. Step 2: Substitute the error message

        The error message is "Network failure", so the paragraph will show that exact text.
      3. Final Answer:

        <main role="alert"><h1>Oops!</h1><p>Network failure</p><button>Try again</button></main> -> Option B
      4. Quick Check:

        Rendered output matches JSX with error.message = D [OK]
      Hint: Match JSX tags and error.message exactly [OK]
      Common Mistakes:
      • Ignoring role attribute
      • Changing button text
      • Using wrong HTML tags or heading levels
      4. Identify the error in this Global-error.tsx component code:
      export default function GlobalError({ error, reset }) {
        return (
          

      Error!

      {error}

      Retry
      ); }
      medium
      A. The reset function is not called correctly
      B. The button text should be 'Try again' instead of 'Retry'
      C. The component should use <main> instead of <div>
      D. The error prop is used directly instead of error.message

      Solution

      1. Step 1: Check usage of error prop

        The error prop is an object; displaying it directly will show [object Object], not the message.
      2. Step 2: Correct way to show error message

        Use error.message to display the actual error text.
      3. Final Answer:

        The error prop is used directly instead of error.message -> Option D
      4. Quick Check:

        Display error.message, not error object = B [OK]
      Hint: Always use error.message to show error text [OK]
      Common Mistakes:
      • Displaying error object directly
      • Ignoring error.message property
      • Assuming reset needs parentheses in JSX
      5. You want to improve accessibility in your Global-error.tsx component. Which change best helps screen reader users understand the error state?
      hard
      A. Remove the button to avoid confusion
      B. Use <div> instead of semantic tags like <main>
      C. Add role="alert" to the main container to announce the error immediately
      D. Use only color to indicate the error without text

      Solution

      1. Step 1: Understand accessibility roles

        The role="alert" attribute tells screen readers to announce the content immediately, which is important for error messages.
      2. Step 2: Evaluate other options

        Using semantic tags is good, but role="alert" is more critical for error announcements. Removing buttons or relying on color alone harms accessibility.
      3. Final Answer:

        Add role="alert" to the main container to announce the error immediately -> Option C
      4. Quick Check:

        Use role="alert" for error announcements = C [OK]
      Hint: Use role="alert" to notify screen readers instantly [OK]
      Common Mistakes:
      • Ignoring ARIA roles for error messages
      • Relying on color alone for errors
      • Removing interactive elements like retry buttons