CedarJS / RedwoodJS deployments on Vercel timing out, with `/opt/rust/nodejs.js` errors

We are seeing a reproducible deployment/runtime issue affecting CedarJS (fork of Redwood) and RedwoodJS-style Vercel functions on Node 24.

This is currently blocking production deployments for our main CedarJS API stack, but we have also reproduced the same failure in a fresh minimal Cedar app with no production database, no auth setup, no migrations, and no app-specific business logic. We also replicated this issue on the latest version of Redwood of which has been stable since Oct 2025.

Summary

Vercel successfully builds and deploys the app, but requests to Cedar/Redwood API functions hang before response headers are sent.

The client eventually receives a timeout / 504, and Vercel runtime logs show unhandled rejections inside Vercel’s Node runtime bridge:

Unhandled Rejection: SyntaxError: Unexpected end of JSON input
    at JSON.parse (<anonymous>)
    at IncomingMessage.<anonymous> (/opt/rust/nodejs.js:2:14238)

We have also seen:

Unhandled Rejection: TypeError: Cannot read properties of undefined (reading 'path')
    at IncomingMessage.<anonymous> (/opt/rust/nodejs.js:2:14272)

The failure appears to occur before our handler code can respond.

Minimal public reproduction

Repo:

Production deployment:

https://cedar-vercel-node24-repro.vercel.app/

Failing endpoint:

https://cedar-vercel-node24-repro.vercel.app/api/ping

Deployment URL:

https://cedar-vercel-node24-repro-cj92t5cx8-aaron-vanston.vercel.app

Deployment ID:

dpl_2GAYKLK7kt8zSSRpNpRaPfkop98N

Runtime for api/ping:

nodejs24.x

This repro is a fresh CedarJS app created with:

npx create-cedar-app@4.1.0 cedar-vercel-node24-repro --yes --typescript --no-git-init --telemetry false --no-install --node-check false

The only intentional changes are:

  • api/src/functions/ping.ts: minimal JSON response function
  • vercel.json: uses yarn cedar deploy vercel
  • .yarnrc.yml: pins Yarn 4 / node-modules linker

The minimal api/ping function times out with no response bytes received. Runtime logs point to /opt/rust/nodejs.js, not userland code.

Production impact

Our main affected Vercel project is a CedarJS API app deployed as Vercel Node functions.

Affected endpoints include:

  • /api/graphql
  • /api/inngest
  • other Cedar-generated API functions

The request reaches Vercel edge/TLS successfully, but the function invocation hangs before first byte / response headers. Vercel later kills it after our configured timeout.

Known production-style failure example:

Time: 2026-05-08 16:31:54 AEST / 2026-05-08 06:31:54 UTC
Region: Sydney / ap-southeast-2
URL: POST https://core-n3wj0c57s.preview.buildpass.com.au/api/graphql
Deployment: dpl_DN5PL4HPz33mkexBkBjAhEkEkg3b
Result: request canceled after 30s awaiting headers
Vercel request ID: syd1::fzxp8-1778222604740-f03d71bc7f7a

Other affected deployments include:

dpl_4hJVFVU1GTfQRshY8A137mGsDC9n
dpl_DN5PL4HPz33mkexBkBjAhEkEkg3b
dpl_3Qd9okLy6X49YnBf37Eak3tmpQuL

Earliest runtime failure we found

The earliest pulled Vercel runtime 504 evidence was around:

2026-05-08 14:47:20 AEST / 2026-05-08 04:47:20 UTC
Deployment: dpl_4hJVFVU1GTfQRshY8A137mGsDC9n
Domain: api.XXXXXXXXXX
Path: POST /api/graphql
Status: 504

That deployment completed at approximately:

2026-05-08 14:46:19 AEST / 2026-05-08 04:46:19 UTC

So the first visible failures started immediately after the deployment became active.

Runtime evidence

Vercel logs show repeated timeout/runtime bridge failures like:

Vercel Runtime Timeout Error: Task timed out after 120 seconds
Node.js process exited with exit status: 128

And unhandled rejections inside Vercel runtime internals:

Unhandled Rejection: TypeError: Cannot read properties of undefined (reading 'path')
    at IncomingMessage.<anonymous> (/opt/rust/nodejs.js:2:14272)

Also:

Unhandled Rejection: SyntaxError: Unexpected end of JSON input
    at JSON.parse (<anonymous>)
    at IncomingMessage.<anonymous> (/opt/rust/nodejs.js:2:14238)

Some traces also include OpenTelemetry/Sentry frames around IncomingMessage handling, but the failing frame itself is in /opt/rust/nodejs.js.

The failure still occurs in a fresh Cedar app with a tiny unauthenticated function.

The runtime stack points into:

/opt/rust/nodejs.js

The failing behavior appears related to how Vercel is bridging incoming requests into Redwood/Cedar-style AWS Lambda handler functions.

Cedar custom functions currently use the AWS-style handler shape:

export const handler = async (event, context) => {
  return {
    statusCode: 200,
    body: JSON.stringify({ ok: true }),
  }
}

Relevant Cedar docs:

There is already upstream context around Redwood/Cedar using AWS Lambda handler output on Vercel rather than web-standard Request / Response handlers:

Related Vercel builder/runtime context

The Vercel Redwood builder still appears relevant because Cedar deploys through the Redwood-style Vercel path.

Relevant Vercel release:

We tested multiple Cedar versions, including latest Cedar in addition to latest Redwoodjs, and the failure still reproduced.

We’re taking a look, sorry for the trouble.

UPDATE: we’re shipping the fix, ETA is ~3h from now

Hi Shohei, thank you for the update! Confirming this looks to have rolled out and is now working. The functions are not being executed back Node runtime (instead of fluid).