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 functionvercel.json: usesyarn 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:
- [Discussion] RedwoodJS uses the AWS Lambda Handler syntax on Vercel, preventing use of new features · Issue #12073 · redwoodjs/graphql · GitHub
- Add Vercel Fluid Handling by peterp · Pull Request #12107 · redwoodjs/graphql · GitHub
- [TODO]: Support Vercel Fluid compute · Issue #526 · cedarjs/cedar · GitHub
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.