vercel / next.js

The React Framework
https://nextjs.org
MIT License
127.02k stars 26.99k forks source link

__debugSource and __debugOwner are always undefined for RSCs #59457

Open HosseinAgha opened 11 months ago

HosseinAgha commented 11 months ago

Link to the code that reproduces this issue

https://codesandbox.io/p/devbox/suspicious-euclid-qq4zfy

To Reproduce

Run the repro sandbox and check the console. I log the React Fiber instance for both components and the value of the __debugSource is null for Server Component.

Current vs. Expected behavior

The server component fiber nodes does not contain the __debugSource and __debugOwner information while the client only components do. All components that get rendered should have the debugging information during development.

Verify canary release

Provide environment information

Operating System:
  Platform: darwin
  Arch: arm64
  Version: Darwin Kernel Version 22.6.0: Wed Jul  5 22:22:05 PDT 2023; root:xnu-8796.141.3~6/RELEASE_ARM64_T6000
Binaries:
  Node: 20.8.0
  npm: 10.1.0
  Yarn: 4.0.2
  pnpm: N/A
Relevant Packages:
  next: 14.0.4
  eslint-config-next: 14.0.4
  react: 18.2.0
  react-dom: 18.2.0
  typescript: 5.3.2
Next.js Config:
  output: N/A

Which area(s) are affected? (Select all that apply)

App Router

Additional context

This bug impacts tools that rely on __debugSource in development. Please check https://github.com/ericclemmons/click-to-component/issues/78

xinyao27 commented 10 months ago

Same problem. I am using https://github.com/zthxxx/react-dev-inspector, which depends on __debugSource to obtain the component file path in development environment. Now, the lack of __debugSource in app router causes this function to be unavailable.

scplay commented 3 weeks ago

Does anyone figure out why this happened? I've tested in PageRoute mode, it's ok. But in AppRoute, Not Working, no matter 'use client' or not.

joelbqz commented 1 week ago

I think a solution would be creating a SWC Plugin https://nextjs.org/docs/architecture/nextjs-compiler#swc-plugins-experimental that adds __debugSource and __debugOwner

HosseinAgha commented 1 day ago

@scplay because approute uses RSC by default