Repository navigation
chore(observer): upgrade to Next 16 and deploy via OpenNext Cloudflare - #584
Conversation
Next 14.2.x is affected by CVE-2026-44578 (GHSA-c4j6-fc7j-m34r) with no 14.x fix. Upgrade the observer dashboard to Next 16.4.3 and React 19, and replace the deprecated @cloudflare/next-on-pages build (capped at Next 15.5.2) with the OpenNext Cloudflare adapter. - Dashboard deploys as the `relaycast-observer` Worker (no public workers.dev URL); the observer host router reaches it through an `OBSERVER` service binding instead of proxying to relaycast-observer.pages.dev. - Drop `runtime = 'edge'` (OpenNext runs routes on the Node.js runtime) and await the now-async page `params`. - Align @relaycast/react dev deps on React 19 so the workspace resolves a single React/@types/react; its peer range is unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 30 minutes. View limit details
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
[High impact] The PR appears safe to merge; no actionable regression was found.
|
Why
The observer dashboard is the only Next.js app in the repo. It pins
next@14.2.35, which is affected by CVE-2026-44578 / GHSA-c4j6-fc7j-m34r (SSRF via WebSocket upgrades). Next 14 has no fix. The hosted dashboard runs on Cloudflare rather than the built-in Node server, so it was likely not exploitable in production, but the dependency scanner flags it andnext dev/next startwere exposed.Staying on Next 15 wasn't an option either: the deploy used
@cloudflare/next-on-pages, which is deprecated and only supports up to Next 15.5.2.What
params.RefObject<HTMLDivElement | null>).tsconfig.jsonandnext-env.d.tsitself.export const runtime = 'edge'is gone from the page and the three auth routes.next-on-pages. Addsopen-next.config.ts,wrangler.jsoncand thebuild:worker/preview/deployscripts.relaycast-observerWorker withworkers_dev/preview_urlsturned off.relaycast-observer-routernow reaches it through anOBSERVERservice binding instead of proxying torelaycast-observer.pages.dev. The observer-host headers are unchanged.npm run -w @relaycast/observer-dashboard deploy. That removes the Pages project setup, the compat-flag PATCH and the peer-dependency workaround. The job is renameddeploy-observer-dashboardand still runs before the router.@relaycast/reactdev deps on React 19. The workspace now resolves a single React and@types/react. The published peer range (^18 || ^19) is unchanged.Testing
turbo build test lintfor the dashboard,@relaycast/react, sdk and types: all green (dashboard 73 tests, react 40).wrangler devsessions through the service binding:/observer/login,/observer,/observer/connectand/observer/channels/*return 200./_nextchunks andpublic/assets are served.observer.relaycast.dev.wrangler deploy --dry-runpasses for both Workers (dashboard is about 1 MB gzipped).Rollout
relaycast-observerPages project manually.🤖 Generated with Claude Code
Need help on this PR? Tag
@codesmith-botwith what you need.