0
0
NextJSframework~10 mins

Global-error.tsx for root errors in NextJS - Step-by-Step Execution

Choose your learning style9 modes available
Concept Flow - Global-error.tsx for root errors
Error occurs anywhere
Next.js catches error
Global-error.tsx renders
Show user friendly error UI
User sees error message and options
Optional: Retry or navigate away
When an error happens anywhere in the app, Next.js uses Global-error.tsx to show a friendly error screen to the user.
Execution Sample
NextJS
'use client'

export default function GlobalError({
  error,
  reset,
}: {
  error: Error & { digest?: string }
  reset: () => void
}) {
  return (
    <main role="alert">
      <h1>Something went wrong</h1>
      <pre>{error.message}</pre>
      <button onClick={() => reset()}>Try again</button>
    </main>
  )
}
This component shows the error message and a button to retry when a root error happens.
Execution Table
StepTriggerState BeforeActionState AfterWhat Re-rendersDOM Change
1Error thrown in appNo errorNext.js detects errorError object capturedGlobalError componentGlobalError UI mounts with error message
2GlobalError rendersError object presentRender error message and retry buttonUI shows error detailsGlobalError componentDOM shows <h1>, <pre>, <button>
3User clicks retryError shownCall reset functionError clearedApp re-renders rootGlobalError unmounts, app reloads
4No new errorClean stateRender normal app UIApp UI visibleApp componentsNormal app DOM shown
5No errorNormal app runningNo actionNo changeNo re-renderNo DOM change
💡 Execution stops when error is cleared and app UI renders normally.
Variable Tracker
VariableStartAfter 1After 2After 3Final
errorundefinedError object presentError object presentundefined (reset called)undefined
UI stateNormal app UIError UI shownError UI shownNormal app UINormal app UI
Key Moments - 3 Insights
Why does the GlobalError component render instead of the normal app UI?
Because Next.js catches an error and passes it to GlobalError, which replaces the normal UI with the error UI as shown in execution_table step 1 and 2.
What happens when the user clicks the retry button?
The reset function clears the error state, causing the app to re-render normally, removing the error UI as seen in execution_table step 3 and 4.
Is the error UI part of the normal app render cycle?
No, it only renders when an error is caught. Otherwise, the normal app UI renders, shown in execution_table steps 4 and 5.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the state of the 'error' variable at step 2?
AError object present
Bundefined
CError cleared
DNull
💡 Hint
Check the 'State After' column for step 2 in the execution_table.
At which step does the app UI return to normal after an error?
AStep 2
BStep 4
CStep 3
DStep 5
💡 Hint
Look for when 'App UI visible' appears in the 'State After' column.
If the reset function is never called, what happens to the UI?
AApp UI reloads automatically
BApp crashes
CError UI stays visible
DUI shows blank screen
💡 Hint
Refer to the variable_tracker showing 'error' stays present without reset.
Concept Snapshot
Global-error.tsx catches root errors in Next.js.
It receives an error and reset function.
Renders a friendly error message and retry button.
Retry calls reset to clear error and reload app UI.
Only shows when an error occurs, otherwise normal UI renders.
Full Transcript
In Next.js 14+, when an error happens anywhere in the app, Next.js catches it and renders the Global-error.tsx component. This component receives the error object and a reset function. It shows a simple UI with the error message and a button to try again. When the user clicks retry, the reset function clears the error state, and the app UI reloads normally. This flow ensures users see a friendly message instead of a broken app. The execution table shows each step: error thrown, GlobalError renders, user retries, and app reloads. The variable tracker follows the error state and UI changes. Key moments clarify why GlobalError replaces the UI and how retry works. The visual quiz tests understanding of error state and UI transitions. This pattern helps handle root errors gracefully in Next.js apps.