Skip to content

[pull] canary from vercel:canary#1100

Merged
pull[bot] merged 4 commits into
code:canaryfrom
vercel:canary
Jun 4, 2026
Merged

[pull] canary from vercel:canary#1100
pull[bot] merged 4 commits into
code:canaryfrom
vercel:canary

Conversation

@pull
Copy link
Copy Markdown

@pull pull Bot commented Jun 4, 2026

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

RazinShafayet2007 and others added 4 commits June 4, 2026 09:48
Fixed two typos in `contributing/core/testing.md`:
- `sett` → `setting` (`Consider also setting NEXT_E2E_TEST_TIMEOUT=0`)
- `again` → `against` (`run a test against both Turbopack and Webpack`)
With Node streams enabled (now the default), the dev-only React debug
channel was still being round-tripped through web streams repeatedly.
The Node variant of `teeStream` wrapped the readable with
`Readable.toWeb`, teed it, then unwrapped with `Readable.fromWeb`,
applied up to twice as the channel was split for validation and then for
SSR and the browser, and `connectReactDebugChannel` additionally
converted the readable to a web `ReadableStream` and ran every chunk
through a web `TransformStream` batcher before forwarding it over HMR.
Each conversion allocates web-stream wrappers and adds per-chunk
microtask scheduling that contends for CPU with the render, which is
wasteful because the debug payload is non-trivial in dev (async debug
info, console replay, large debug strings) and the whole point of the
Node streams flag is to avoid that overhead.

This change keeps the channel Node-native whenever Node streams are in
use. The Node variant of `teeStream` now fans out through
`ReplayableNodeStream` instead of the web round-trip, which fixes every
Node-mode caller at once. The Cache Components Node render path, which
needs three independent consumers (validation, SSR, and the browser),
fans out through a single `ReplayableNodeStream` directly rather than
nesting binary tees. `connectReactDebugChannel` now branches on the
stream type and, for Node input, batches with a Node `Transform`
(`createNodeBufferedTransformStream`, now exported with a byte-length
cap to match the web batcher) consumed via `data`/`end`/`error` events,
with no `toWeb` conversion. A `NodeDebugChannelPair` type narrows the
client-side readable to a Node `Readable` so Node call sites can consume
it without casting `AnyStream` down. The web path is left untouched and
remains conversion-free.
### What?

Pin the dependency versions used by the Material UI new-link-behavior
fixture.

### Why?

The fixture currently installs `latest`, which now resolves
`@mui/material` to 9.0.1. That version causes an SWC source-map panic
while compiling the fixture, so an unrelated link behavior test fails
before reaching its assertion.

### How?

Replace the floating dependency versions with the known-good Material UI
5.11.16, Emotion 11, and prop-types versions previously used by the
fixture.

### Verification

- `pnpm build-all`
- `pnpm prettier --with-node-modules --ignore-path .prettierignore
--write test/e2e/new-link-behavior/material-ui.test.ts`
- `npx eslint --config eslint.config.mjs --fix
test/e2e/new-link-behavior/material-ui.test.ts`
- `NEXT_TEST_PREFER_OFFLINE=1 pnpm test-dev-webpack
test/e2e/new-link-behavior/material-ui.test.ts`

<!-- NEXT_JS_LLM_PR -->
@pull pull Bot locked and limited conversation to collaborators Jun 4, 2026
@pull pull Bot added the ⤵️ pull label Jun 4, 2026
@pull pull Bot merged commit d6d439c into code:canary Jun 4, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants