mirror of
https://github.com/vercel/next.js.git
synced 2026-09-20 02:25:18 +08:00
60e4f3061f
During `next dev`, certain errors (such as Cache Components validation errors) are logged directly to the terminal by the dev server and are also sent to the browser so they can be shown in the dev overlay. The browser logs them to its own console, and the browser-to-terminal log forwarding would replay that copy back to the CLI, so the same error appeared in the terminal twice. This change marks those errors when the browser receives them, in the `ERRORS_TO_SHOW_IN_BROWSER` handler, using a non-enumerable symbol. `forwardErrorLog`, the single function all forwarded error logs pass through, then skips any error carrying that marker, since it already originated on the server and was logged there. The marker has to be set browser-side because it wouldn't survive RSC serialization, which is the same reason the error code is sent through a side-channel map rather than on the error itself. The error still shows in the browser console and the dev overlay; only the redundant terminal echo is suppressed. This applies to every error delivered over the errors RSC stream, all of which are logged on the server before being sent, so the forwarded copy is always a duplicate. > [!TIP] > Review the two commits individually to see the before/after change.