I shipped a Next.js 16 app on Cloudflare Workers via OpenNext. Not a demo. A real product with streaming chat, server components, D1 at the edge, and anonymous user sessions.

Here is what broke, what barely worked, and what turned out to be surprisingly fine.

The stack

Next.js 16.2 (App Router)

@opennextjs/cloudflare 1.19