nextjs - ✅(Solved) Fix Cannot perform %TypedArray%.prototype.fill on a detached ArrayBuffer [14 pull requests, 7 comments, 4 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
vercel/next.js#84753Fetched 2026-04-08 02:18:34
View on GitHub
Comments
7
Participants
4
Timeline
19
Reactions
1
Timeline (top)
commented ×7labeled ×3cross-referenced ×2subscribed ×2

Error Message

  1. observe error in terminal window i'd expect the dev server to not error, since v15.4.x works as expected

Fix Action

Fixed

PR fix notes

PR #34849: [Flight] Fix detached ArrayBuffer error when streaming typed arrays

Description (problem / solution / changelog)

Using renderToReadableStream in Node.js with binary data from fs.readFileSync (or Buffer.allocUnsafe) could cause downstream consumers (like compression middleware) to fail with "Cannot perform Construct on a detached ArrayBuffer".

The issue occurs because Node.js uses an 8192-byte Buffer pool for small allocations (< 4KB). When React's VIEW_SIZE was 2KB, files between ~2KB and 4KB would be passed through as views of pooled buffers rather than copied into currentView. ByteStreams (type: 'bytes') detach ArrayBuffers during transfer, which corrupts the shared Buffer pool and causes subsequent Buffer operations to fail.

Increasing VIEW_SIZE from 2KB to 4KB ensures all chunks smaller than 4KB are copied into currentView (which uses a dedicated 4KB buffer outside the pool), while chunks 4KB or larger don't use the pool anyway. Thus no pooled buffers are ever exposed to ByteStream detachment.

This adds 2KB memory per active stream, copies chunks in the 2-4KB range instead of passing them as views (small CPU cost), and buffers up to 2KB more data before flushing. However, it avoids duplicating large binary data (which copying everything would require, like the Edge entry point currently does in typedArrayToBinaryChunk).

Related issues:

Changed files

  • packages/react-server-dom-webpack/src/__tests__/ReactFlightDOMNode-test.js (modified, +36/-3)
  • packages/react-server/src/ReactServerStreamConfigEdge.js (modified, +6/-9)
  • packages/react-server/src/ReactServerStreamConfigNode.js (modified, +5/-1)

PR #85072: Upgrade React from 1324e1bb-20251016 to 58bdc0bb-20251019

Description (problem / solution / changelog)

diff facebook/[email protected]

<details> <summary>React upstream changes</summary> </details>

fixes #84753 fixes #84858

Changed files

  • package.json (modified, +16/-16)
  • packages/next/src/compiled/react-dom-experimental/cjs/react-dom-client.development.js (modified, +5/-5)
  • packages/next/src/compiled/react-dom-experimental/cjs/react-dom-client.production.js (modified, +5/-5)
  • packages/next/src/compiled/react-dom-experimental/cjs/react-dom-profiling.development.js (modified, +5/-5)
  • packages/next/src/compiled/react-dom-experimental/cjs/react-dom-profiling.profiling.js (modified, +5/-5)
  • packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server-legacy.browser.development.js (modified, +1/-1)
  • packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server-legacy.browser.production.js (modified, +1/-1)
  • packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server-legacy.node.development.js (modified, +1/-1)
  • packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server-legacy.node.production.js (modified, +1/-1)
  • packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.browser.development.js (modified, +3/-3)
  • packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.browser.production.js (modified, +3/-3)
  • packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.bun.production.js (modified, +3/-3)
  • packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.edge.development.js (modified, +9/-9)
  • packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.edge.production.js (modified, +8/-8)
  • packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.node.development.js (modified, +16/-16)
  • packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.node.production.js (modified, +15/-15)
  • packages/next/src/compiled/react-dom-experimental/cjs/react-dom-unstable_testing.development.js (modified, +5/-5)
  • packages/next/src/compiled/react-dom-experimental/cjs/react-dom-unstable_testing.production.js (modified, +5/-5)
  • packages/next/src/compiled/react-dom-experimental/cjs/react-dom.development.js (modified, +1/-1)
  • packages/next/src/compiled/react-dom-experimental/cjs/react-dom.production.js (modified, +1/-1)
  • packages/next/src/compiled/react-dom-experimental/cjs/react-dom.react-server.development.js (modified, +1/-1)
  • packages/next/src/compiled/react-dom-experimental/cjs/react-dom.react-server.production.js (modified, +1/-1)
  • packages/next/src/compiled/react-dom-experimental/package.json (modified, +2/-2)
  • packages/next/src/compiled/react-dom/cjs/react-dom-client.development.js (modified, +5/-5)
  • packages/next/src/compiled/react-dom/cjs/react-dom-client.production.js (modified, +5/-5)
  • packages/next/src/compiled/react-dom/cjs/react-dom-profiling.development.js (modified, +5/-5)
  • packages/next/src/compiled/react-dom/cjs/react-dom-profiling.profiling.js (modified, +5/-5)
  • packages/next/src/compiled/react-dom/cjs/react-dom-server-legacy.browser.development.js (modified, +1/-1)
  • packages/next/src/compiled/react-dom/cjs/react-dom-server-legacy.browser.production.js (modified, +1/-1)
  • packages/next/src/compiled/react-dom/cjs/react-dom-server-legacy.node.development.js (modified, +1/-1)
  • packages/next/src/compiled/react-dom/cjs/react-dom-server-legacy.node.production.js (modified, +1/-1)
  • packages/next/src/compiled/react-dom/cjs/react-dom-server.browser.development.js (modified, +3/-3)
  • packages/next/src/compiled/react-dom/cjs/react-dom-server.browser.production.js (modified, +3/-3)
  • packages/next/src/compiled/react-dom/cjs/react-dom-server.bun.production.js (modified, +3/-3)
  • packages/next/src/compiled/react-dom/cjs/react-dom-server.edge.development.js (modified, +9/-9)
  • packages/next/src/compiled/react-dom/cjs/react-dom-server.edge.production.js (modified, +8/-8)
  • packages/next/src/compiled/react-dom/cjs/react-dom-server.node.development.js (modified, +16/-16)
  • packages/next/src/compiled/react-dom/cjs/react-dom-server.node.production.js (modified, +15/-15)
  • packages/next/src/compiled/react-dom/cjs/react-dom.development.js (modified, +1/-1)
  • packages/next/src/compiled/react-dom/cjs/react-dom.production.js (modified, +1/-1)
  • packages/next/src/compiled/react-dom/cjs/react-dom.react-server.development.js (modified, +1/-1)
  • packages/next/src/compiled/react-dom/cjs/react-dom.react-server.production.js (modified, +1/-1)
  • packages/next/src/compiled/react-dom/package.json (modified, +2/-2)
  • packages/next/src/compiled/react-experimental/cjs/react.development.js (modified, +24/-6)
  • packages/next/src/compiled/react-experimental/cjs/react.production.js (modified, +1/-1)
  • packages/next/src/compiled/react-experimental/cjs/react.react-server.development.js (modified, +24/-6)
  • packages/next/src/compiled/react-experimental/cjs/react.react-server.production.js (modified, +1/-1)
  • packages/next/src/compiled/react-is/package.json (modified, +1/-1)
  • packages/next/src/compiled/react-server-dom-turbopack-experimental/cjs/react-server-dom-turbopack-client.browser.development.js (modified, +4/-2)
  • packages/next/src/compiled/react-server-dom-turbopack-experimental/cjs/react-server-dom-turbopack-client.edge.development.js (modified, +2/-0)
  • packages/next/src/compiled/react-server-dom-turbopack-experimental/cjs/react-server-dom-turbopack-client.node.development.js (modified, +2/-0)
  • packages/next/src/compiled/react-server-dom-turbopack-experimental/cjs/react-server-dom-turbopack-server.edge.development.js (modified, +6/-7)
  • packages/next/src/compiled/react-server-dom-turbopack-experimental/cjs/react-server-dom-turbopack-server.edge.production.js (modified, +5/-6)
  • packages/next/src/compiled/react-server-dom-turbopack-experimental/cjs/react-server-dom-turbopack-server.node.development.js (modified, +48/-49)
  • packages/next/src/compiled/react-server-dom-turbopack-experimental/cjs/react-server-dom-turbopack-server.node.production.js (modified, +11/-11)
  • packages/next/src/compiled/react-server-dom-turbopack-experimental/package.json (modified, +2/-2)
  • packages/next/src/compiled/react-server-dom-turbopack/cjs/react-server-dom-turbopack-client.browser.development.js (modified, +4/-2)
  • packages/next/src/compiled/react-server-dom-turbopack/cjs/react-server-dom-turbopack-client.edge.development.js (modified, +2/-0)
  • packages/next/src/compiled/react-server-dom-turbopack/cjs/react-server-dom-turbopack-client.node.development.js (modified, +2/-0)
  • packages/next/src/compiled/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.edge.development.js (modified, +8/-9)
  • packages/next/src/compiled/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.edge.production.js (modified, +5/-6)
  • packages/next/src/compiled/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.node.development.js (modified, +48/-49)
  • packages/next/src/compiled/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.node.production.js (modified, +11/-11)
  • packages/next/src/compiled/react-server-dom-turbopack/package.json (modified, +2/-2)
  • packages/next/src/compiled/react-server-dom-webpack-experimental/cjs/react-server-dom-webpack-client.browser.development.js (modified, +4/-2)
  • packages/next/src/compiled/react-server-dom-webpack-experimental/cjs/react-server-dom-webpack-client.edge.development.js (modified, +2/-0)
  • packages/next/src/compiled/react-server-dom-webpack-experimental/cjs/react-server-dom-webpack-client.node.development.js (modified, +2/-0)
  • packages/next/src/compiled/react-server-dom-webpack-experimental/cjs/react-server-dom-webpack-client.node.unbundled.development.js (modified, +2/-0)
  • packages/next/src/compiled/react-server-dom-webpack-experimental/cjs/react-server-dom-webpack-server.edge.development.js (modified, +6/-7)
  • packages/next/src/compiled/react-server-dom-webpack-experimental/cjs/react-server-dom-webpack-server.edge.production.js (modified, +5/-6)
  • packages/next/src/compiled/react-server-dom-webpack-experimental/cjs/react-server-dom-webpack-server.node.development.js (modified, +48/-49)
  • packages/next/src/compiled/react-server-dom-webpack-experimental/cjs/react-server-dom-webpack-server.node.production.js (modified, +11/-11)
  • packages/next/src/compiled/react-server-dom-webpack-experimental/cjs/react-server-dom-webpack-server.node.unbundled.development.js (modified, +48/-49)
  • packages/next/src/compiled/react-server-dom-webpack-experimental/cjs/react-server-dom-webpack-server.node.unbundled.production.js (modified, +11/-11)
  • packages/next/src/compiled/react-server-dom-webpack-experimental/package.json (modified, +2/-2)
  • packages/next/src/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-client.browser.development.js (modified, +4/-2)
  • packages/next/src/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-client.edge.development.js (modified, +2/-0)
  • packages/next/src/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-client.node.development.js (modified, +2/-0)
  • packages/next/src/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-client.node.unbundled.development.js (modified, +2/-0)
  • packages/next/src/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-server.edge.development.js (modified, +8/-9)
  • packages/next/src/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-server.edge.production.js (modified, +5/-6)
  • packages/next/src/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.development.js (modified, +48/-49)
  • packages/next/src/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.production.js (modified, +11/-11)
  • packages/next/src/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.unbundled.development.js (modified, +48/-49)
  • packages/next/src/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.unbundled.production.js (modified, +11/-11)
  • packages/next/src/compiled/react-server-dom-webpack/package.json (modified, +2/-2)
  • packages/next/src/compiled/react/cjs/react.development.js (modified, +24/-6)
  • packages/next/src/compiled/react/cjs/react.production.js (modified, +1/-1)
  • packages/next/src/compiled/react/cjs/react.react-server.development.js (modified, +24/-6)
  • packages/next/src/compiled/react/cjs/react.react-server.production.js (modified, +1/-1)
  • packages/next/src/compiled/unistore/unistore.js (modified, +1/-1)
  • pnpm-lock.yaml (modified, +564/-564)

Code Example

Operating System:
  Platform: linux
  Arch: x64
  Version: #1 SMP PREEMPT_DYNAMIC Sun Aug  6 20:05:33 UTC 2023
  Available memory (MB): 4102
  Available CPU cores: 2
Binaries:
  Node: 20.9.0
  npm: 9.8.1
  Yarn: 1.22.19
  pnpm: 8.10.2
Relevant Packages:
  next: 16.0.0-canary.0 // Latest available version is detected (16.0.0-canary.0).
  eslint-config-next: N/A
  react: 19.2.0
  react-dom: 19.2.0
  typescript: 5.3.3
Next.js Config:
  output: N/A
RAW_BUFFERClick to expand / collapse

Link to the code that reproduces this issue

https://codesandbox.io/p/devbox/happy-goldberg-555zdz

To Reproduce

  1. go to the terminal window that's running next dev
  2. resolve preview page
  3. wait 5 minutes
  4. observe error in terminal window

Current vs. Expected behavior

i'd expect the dev server to not error, since v15.4.x works as expected

Provide environment information

Operating System:
  Platform: linux
  Arch: x64
  Version: #1 SMP PREEMPT_DYNAMIC Sun Aug  6 20:05:33 UTC 2023
  Available memory (MB): 4102
  Available CPU cores: 2
Binaries:
  Node: 20.9.0
  npm: 9.8.1
  Yarn: 1.22.19
  pnpm: 8.10.2
Relevant Packages:
  next: 16.0.0-canary.0 // Latest available version is detected (16.0.0-canary.0).
  eslint-config-next: N/A
  react: 19.2.0
  react-dom: 19.2.0
  typescript: 5.3.3
Next.js Config:
  output: N/A

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

Not sure

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

next dev (local)

Additional context

this issue has been occurring since v15.5.x and we're unable to upgrade next as a result. i opened a ticket with launchdarkly thinking it was an issue on their end and they said this was framework-level. issue ref over there

extent analysis

TL;DR

Downgrade Next.js to version 15.4.x to potentially resolve the dev server error, as it is reported to work as expected in that version.

Guidance

  • Verify that the error is indeed related to the Next.js version by testing with version 15.4.x in a separate environment.
  • Check the LaunchDarkly issue referenced (issue ref over there) for any updates or workarounds that may be applicable.
  • Consider testing with a stable version of Next.js (e.g., the latest non-canary release) to see if the issue persists.
  • Review the Next.js changelog and release notes for versions 15.5.x and later to identify potential breaking changes that may be contributing to the error.

Example

No code snippet is provided as the issue is related to a specific version of Next.js and a potential incompatibility with LaunchDarkly.

Notes

The issue may be specific to the combination of Next.js version 16.0.0-canary.0 and LaunchDarkly, and downgrading Next.js may only be a temporary workaround until a compatible version is released.

Recommendation

Apply workaround: Downgrade Next.js to version 15.4.x, as it is reported to work as expected and allows development to continue while a permanent fix is investigated.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING