Vercel excels at HTTP and SSR. Long-lived WebSocket rooms belong on Cloudflare Workers + Durable Objects. Keep your Next.js app on Vercel; run chat edge-native.
Why “just add Pusher on Vercel” is the default
Vercel’s own guides and third-party tutorials often route teams to Pusher Channels or Ably when they need live features. That works, but you add a second realtime vendor, another bill, and another region to reason about.
Builders also hit WebSocket limits and pricing friction when they try to keep everything on serverless functions alone.
Map channel names to roomIds; persist history via REST/D1 instead of Pusher-only caches.
Mint per-user JWTs server-side on Vercel; never expose fc_... keys to the browser.
Build vs buy on the same stack
You can still DIY a Durable Objects chat repo on GitHub. FluxyChat is for teams that want multi-tenant JWT, RoomDurableObject, D1 history, and operator console without stitching a second vendor. See the DIY comparison on /compare.
Production next step
FluxyChat packages the same stack: RoomDurableObject, D1 history, multi-tenant JWT, reconnect-aware SDK, and operator console. MIT self-host or hosted beta.