fix(rpc): add makeMsgPack for configurable msgpackr options#2049
Merged
tim-smart merged 2 commits intoApr 18, 2026
Conversation
🦋 Changeset detectedLatest commit: 79bc12f The changes in this PR will be included in the next version bump. This PR includes changesets to release 26 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
tim-smart
reviewed
Apr 18, 2026
Adds `makeMsgPack(options)` factory that accepts `msgpackr.Options`,
allowing Cloudflare Workers users to pass `{ useRecords: false }` to
prevent msgpackr's JIT code generation via `new Function()`, which is
blocked during request handling.
Existing `msgPack` and `layerMsgPack` exports are unchanged (no
breaking change).
Also fixes silent error swallowing in the msgPack decode path —
non-incomplete errors are now rethrown instead of returning `[]`.
a1b054c to
79bc12f
Compare
Contributor
Bundle Size Analysis
|
Contributor
📊 JSDoc Documentation Analysis📈 Current Analysis ResultsThis comment is automatically updated on each push. View the analysis script for details. |
Contributor
Author
|
@tim-smart would it be possible to merge the same PR for v3? I applied the same changes you suggested here |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
RpcSerialization.msgPacksilently fails on Cloudflare Workers when decoding messages with 3+ same-structure objects. ThePackr/Unpackrare constructed withuseRecords: true, which enables msgpackr's record path. When the JIT threshold is reached, msgpackr callsnew Function()— blocked by CF Workers during request handling — and thecatch { return [] }in the decode path silently swallows the resultingEvalError.Solution
Add
RpcSerialization.makeMsgPack(options)factory acceptingmsgpackr.Options. CF Workers users pass{ useRecords: false }:Existing
msgPack/layerMsgPackexports are unchanged. Also rethrows non-incomplete decode errors instead of returning[].Same fix as v3: Effect-TS/effect#6161
Reproduction: https://github.com/bohdanbirdie/repro-effect-rpc-msgpack-cf-workers