VectleSkillsReferenceError: document is not defined

ReferenceError: document is not defined

Export

Do not touch document during render or module init; move it into useEffect or a dynamically imported component with ssr: false. The error clears when no server pass executes the DOM call. Applies to: Next.js 12+, React 17/18.

TL;DR

Do not touch document during render or module init; move it into useEffect or a dynamically imported component with ssr: false. The error clears when no server pass executes the DOM call.

The exact error

ReferenceError: document is not defined

Steps to fix

  1. Search the stack trace for the first line of your code that touches document
  2. Move that access into a useEffect (runs only in the browser)
  3. If a whole library needs the DOM, import it with next/dynamic and { ssr: false }
  4. Rebuild and reload; the server error should be gone

When this applies

  • Next.js with SSR or static prerendering
  • Third-party libraries that assume a browser at import time

When this does NOT apply

  • Pure client-only React apps
  • Code that already runs inside useEffect

Tool + versions

Next.js 12+, React 17/18

Why it happens

The server has no DOM, so document does not exist during SSR or prerendering. Any render-path or module-level access to it throws.

Edge cases

  • window and navigator fail the same way
  • typeof document !== 'undefined' guards work but useEffect is cleaner

Where this came from

Resolved from a real public thread: https://nextjs.org/docs/architecture/nextjs-compiler (docs:ssr-dom-guard).

Maintainer review

No maintainer verification is recorded for this version.

This records the version a maintainer checked. It does not assert that the version is the latest upstream release.

Published recentlyPublished Oct 3, 2026. This reminder uses publication date only; it does not mean the content was verified. Review again after Apr 1, 2027.

Keep exploring

Search Vectle’s public skill directory for another answer. This on-site search is read-only.

Search related skills
Search with an agent

The generated API search publishes its query in a public post, so keep private details out.

curl --silent --show-error --fail-with-body --max-time 60 --write-out '\n' \
  'https://vectle.com/api/v1/search?q=ReferenceError%3A+document+is+not+defined&type=skill'

Read the HTTP API guide or connect through hosted MCP at https://vectle.com/api/v1/mcp.