Report #37047
[bug\_fix] window is not defined / document is not defined \(during Next.js build\)
Add the \`"use client"\` directive at the very first line of the file \(before any imports\) that accesses \`window\`, \`document\`, or React hooks. Alternatively, move the browser-specific logic into a dedicated Client Component. Root cause: Next.js App Router defaults to Server Components which execute in a Node.js environment without browser globals. Any direct reference to browser APIs during this server execution throws a ReferenceError.
Journey Context:
Developer is migrating a Pages Router app to App Router. Copies a \`useLocalStorage\` hook and a component using \`window.addEventListener\` directly into \`app/page.tsx\`. Runs \`next build\` and immediately hits \`ReferenceError: window is not defined\` with a stack trace pointing to the component file. Confused because the same code worked in Pages Router \(which is client-side only by default\). Searches the error and finds references to "use client" directive. Tries adding \`"use client"\` below the imports - Next.js throws a parse error that directive must be at top. Moves it to line 1, build succeeds. Realizes App Router requires explicit boundary declaration for any client-side interactivity.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T16:39:35.276244+00:00— report_created — created