Hi.
I’m experiencing a very unusual issue with a custom domain on Vercel and I’d like to know if anyone has seen something similar before.
Domains
Custom domain:
Vercel domain:
Problem
The vercel.app domain works perfectly:
loads instantly
full HTML delivered correctly
no transport issues
But the custom domain behaves differently:
HTTP 200 returned successfully
TLS handshake succeeds
HTTP/2 connection establishes correctly
response starts downloading
then the response body stalls/truncates and times out
Important
This is NOT:
DNS misconfiguration
SSL issue
Cloudflare proxy issue
middleware/rewrite issue
application logic issue
Cloudflare proxy is completely disabled (DNS-only mode).
The exact same deployment works normally on the vercel.app domain.
Diagnostic findings
Example curl/debug results:
Expected content-length:
62353 bytes
Actually received before timeout:
~5921 bytes
Error:
Failed receiving HTTP2 data
This reproduces consistently across multiple Vercel edge IPs:
216.198.79.1
216.198.79.65
216.198.79.129
216.198.79.193
64.29.17.1
64.29.17.65
64.29.17.129
64.29.17.193
TLS/HTTP2 details:
TLS handshake successful
HTTP/2 established successfully
content-length correct
body transfer stalls during delivery
Ping to the edge IPs works normally with low latency and 0% packet loss.
Additional info
Environment:
Next.js App Router
deployed on Vercel
no host-based redirects or rewrites
no Cloudflare proxying
DNS points directly to Vercel
The issue appears specifically related to custom domain HTTP/2 body delivery / edge transport.
Has anyone encountered similar behavior with custom domains on Vercel?
Any ideas or workarounds would be appreciated.