Uh oh!
There was an error while loading. Please reload this page.
feat(wasm): patch non-streaming load paths - #23767
Conversation
size-limit report 📦
|
Uh oh!
There was an error while loading. Please reload this page.
- Patch `Response.prototype.arrayBuffer` and `bytes` to tag wasm buffers with `response.url` in a `WeakMap` - Hook `WebAssembly.instantiate` and `compile` to use tagged URL to register module - Skip registration when `instantiate` receives an already-compiled `WebAssembly.Module` - Split `patchWebAssembly` into response, non-streaming, and streaming setup; guard non-streaming with `nonStreamingPatched` - Add `patchWebAssembly.test.ts` for fetch → arrayBuffer → instantiate/compile - Extend `webworker.test.ts` to restore patched globals and assert `instantiate` is hooked
3a55a63 to
99a2a60CompareUh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 2327538. Configure here.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.

Register wasm modules when apps load via
fetch → arrayBuffer → WebAssembly.instantiate/compile, not only streaming APIs.Response.prototype.arrayBufferandbytesso wasm buffers remember their fetch URLWebAssembly.instantiateandcompileto register modules after byte-based loadspatchWebAssembly(register)fetch → arrayBuffer → instantiateRegistration only. Frames from buffer-compiled modules still carry
wasm://wasm/<hash>, which nothing matches against the registered image, sodebug_metadoes not attach yet. That half is #23781.Implementation
patchWasmResponse.tstags wasm buffers in aWeakMapwhen read from a wasm-likeResponse;getWasmSourceUrl()resolves them at instantiate/compile timefill(), so a frozenResponse.prototypecannot breakSentry.init()patchWebAssembly()orchestrates response patching, non-streaming hooks, then streaming hooks (unchanged behavior)instantiatereceives an already-compiledWebAssembly.Module