Skip to content

"use client" directive not respected with non interactive components  #50428

@Foxxite

Description

@Foxxite

Verify canary release

  • I verified that the issue exists in the latest Next.js canary release

Provide environment information

Operating System:
      Platform: win32
      Arch: x64
      Version: Windows 10 Education
Binaries:
      Node: 18.12.1
      npm: N/A
      Yarn: N/A
      pnpm: N/A
Relevant packages:
      next: 13.4.5-canary.0
      eslint-config-next: 13.4.4
      react: 18.2.0
      react-dom: 18.2.0
      typescript: 5.0.4

Which area(s) of Next.js are affected? (leave empty if unsure)

App directory (appDir: true)

Link to the code that reproduces this issue or a replay of the bug

https://codesandbox.io/p/sandbox/intelligent-lovelace-tnwuq9

To Reproduce

  1. Initialize a Next.JS project with all default options (using app router)
  2. Create 2 client components using the "use client" directive:
  3. Try to build the app with npm run build

Describe the Bug

Trying to build the app with the client component that only renders a JSON string using the window object (or any browser API) results in the following error on build:

info  - Collecting page data  
[    ] info  - Generating static pages (0/3)ReferenceError: window is not defined
    at UseClientNonInteractive (/project/home/foxxite/workspace/.next/server/app/page.js:326:34)
    at ae (/project/home/foxxite/workspace/node_modules/next/dist/compiled/react-dom/cjs/react-dom-server.browser.production.min.js:99:272)
    at ae (/project/home/foxxite/workspace/node_modules/next/dist/compiled/react-dom/cjs/react-dom-server.browser.production.min.js:104:142)
    at Z (/project/home/foxxite/workspace/node_modules/next/dist/compiled/react-dom/cjs/react-dom-server.browser.production.min.js:105:91)
    at be (/project/home/foxxite/workspace/node_modules/next/dist/compiled/react-dom/cjs/react-dom-server.browser.production.min.js:107:98)
    at de (/project/home/foxxite/workspace/node_modules/next/dist/compiled/react-dom/cjs/react-dom-server.browser.production.min.js:106:424)
    at Z (/project/home/foxxite/workspace/node_modules/next/dist/compiled/react-dom/cjs/react-dom-server.browser.production.min.js:105:222)
    at be (/project/home/foxxite/workspace/node_modules/next/dist/compiled/react-dom/cjs/react-dom-server.browser.production.min.js:107:98)
    at de (/project/home/foxxite/workspace/node_modules/next/dist/compiled/react-dom/cjs/react-dom-server.browser.production.min.js:106:424)
    at Z (/project/home/foxxite/workspace/node_modules/next/dist/compiled/react-dom/cjs/react-dom-server.browser.production.min.js:105:222)

Error occurred prerendering page "/". Read more: https://nextjs.org/docs/messages/prerender-error
ReferenceError: window is not defined
    at UseClientNonInteractive (/project/home/foxxite/workspace/.next/server/app/page.js:326:34)
    at ae (/project/home/foxxite/workspace/node_modules/next/dist/compiled/react-dom/cjs/react-dom-server.browser.production.min.js:99:272)
    at ae (/project/home/foxxite/workspace/node_modules/next/dist/compiled/react-dom/cjs/react-dom-server.browser.production.min.js:104:142)
    at Z (/project/home/foxxite/workspace/node_modules/next/dist/compiled/react-dom/cjs/react-dom-server.browser.production.min.js:105:91)
    at be (/project/home/foxxite/workspace/node_modules/next/dist/compiled/react-dom/cjs/react-dom-server.browser.production.min.js:107:98)
    at de (/project/home/foxxite/workspace/node_modules/next/dist/compiled/react-dom/cjs/react-dom-server.browser.production.min.js:106:424)
    at Z (/project/home/foxxite/workspace/node_modules/next/dist/compiled/react-dom/cjs/react-dom-server.browser.production.min.js:105:222)
    at be (/project/home/foxxite/workspace/node_modules/next/dist/compiled/react-dom/cjs/react-dom-server.browser.production.min.js:107:98)
    at de (/project/home/foxxite/workspace/node_modules/next/dist/compiled/react-dom/cjs/react-dom-server.browser.production.min.js:106:424)
    at Z (/project/home/foxxite/workspace/node_modules/next/dist/compiled/react-dom/cjs/react-dom-server.browser.production.min.js:105:222)
info  - Generating static pages (3/3)

> Build error occurred
Error: Export encountered errors on following paths:
        /page: /
    at /project/home/foxxite/workspace/node_modules/next/dist/export/index.js:417:19
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async Span.traceAsyncFn (/project/home/foxxite/workspace/node_modules/next/dist/trace/trace.js:79:20)
    at async /project/home/foxxite/workspace/node_modules/next/dist/build/index.js:1317:21
    at async Span.traceAsyncFn (/project/home/foxxite/workspace/node_modules/next/dist/trace/trace.js:79:20)
    at async /project/home/foxxite/workspace/node_modules/next/dist/build/index.js:1176:17
    at async Span.traceAsyncFn (/project/home/foxxite/workspace/node_modules/next/dist/trace/trace.js:79:20)
    at async Object.build [as default] (/project/home/foxxite/workspace/node_modules/next/dist/build/index.js:69:29)

Expected Behavior

No matter what the component does, if the 'use client' directive is used, NextJS should treat it as such and not try to make it a static / server component.

Which browser are you using? (if relevant)

N/A

How are you deploying your application? (if relevant)

N/A

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugIssue was opened via the bug report template.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions