Hi all, and hopefully someone from the Vercel network team.
Our users in India get random 10–15 second freezes while clicking around our apps on Vercel. We've traced it carefully and it only happens on Reliance Jio (AS55836, India's largest internet provider). Support's assistant couldn't open a case for our plan and pointed us here, so here's everything we have. If you're on Jio and have seen "random" slow clicks, please try the script at the bottom and post what you get.
What happens
A browser keeps a connection open to Vercel's edge between clicks. On Jio, every minute or two, those open connections stop getting through. The browser sends a request and nothing comes back. After about 15 seconds the edge closes the connection, the browser opens a new one, and the page loads in under a tenth of a second. New connections always work; only connections that are already open break.
How we tested it (11 Nov 2026, 06:10–06:51 UTC)
A small script keeps connections open and checks whether they still answer. It ran at the same time from a laptop and from a server in a Mumbai datacenter, against Vercel's edge, against Google, and against our own servers hosted outside Vercel.
| Vercel edge | Google + our non-Vercel servers | |
|---|---|---|
| Laptop on Jio | 92 of 444 got no answer | 1 of 523 |
| Same laptop on Airtel | 0 (apart from the minute of switching) | 0 |
| Mumbai datacenter | 0 of 759 | 0 of 756 |
Both Vercel addresses we tried behave the same: 76.76.21.21 and 216.150.1.1.
What the browser saw (Chrome's network log of one freeze, times UTC)
- 06:43:16: last request answered on the connection (
x-vercel-id bom1::bom1::sjm7k-1794379396168-a5f3f94d896b) - 06:44:16.170: the edge checks on the connection (HTTP/2 PING); the browser replies straight away
- 06:44:16.717 and 06:44:18.662: the browser sends two requests; nothing comes back
- 06:44:31.174: the edge closes the connection (TLS close_notify, no GOAWAY), 15 s after its check
- 06:44:31: the browser retries on a new connection and gets an answer at once (
bom1::bom1::kxr4g-1794379471391-387c3cdc1fc5)
Traffic from the edge kept arriving (the PING, the close). Traffic from the user to the edge, on the already-open connection, went missing.
Already ruled out
- The browser: the test script uses no browser and fails the same way.
- Our code: our functions only get the request when the browser retries, then answer in under half a second.
- The user's internet in general: Google and our other servers work fine on the same Jio connection at the same moment.
- Idle timeouts: connections that were quiet for only 10 seconds fail too.
- DNS records: both 76.76.21.21 and 216.150.1.1 fail.
- Vercel's standard debug script: it passes from Jio, because each of its checks opens a new connection, and new connections are fine.
Questions for the Vercel team
- Can someone check the edge logs for the two request IDs above and see whether the requests at 06:44:16 and 06:44:18 reached the edge?
- Is something changing in how Jio traffic reaches bom1, so that open connections lose their way?
- When the edge retires a connection, could it send GOAWAY straight away instead of waiting 15 seconds? Browsers would then retry at once, and users would barely notice even when the network misbehaves.
- Is there another address or route for Jio users that we could test?
Try it yourself (Node.js 22, from a Jio connection, with your own Vercel domain as VERCEL_HOST; each output line is one test, and "outcome":"hung" means an open connection stopped answering)
// Idle-connection probe: does an HTTP/2 connection still answer after sitting idle?// For each target and idle length, in parallel and repeatedly: open a connection,// send one request, stay idle, send a second request on the same connection, and// record whether it answered, hung (no answer in HANG_MS), or was closed while idle.// One JSON line per test on stdout. Runs for DURATION_MIN minutes.// Usage: VERCEL_HOST=your.domain SOURCE=jio DURATION_MIN=15 node idle-probe.mjs > results.jsonlimport http2 from "node:http2"import tls from "node:tls"const SOURCE = process.env.SOURCE ?? "unknown"const DURATION_MS = Number(process.env.DURATION_MIN ?? 180) * 60_000const HANG_MS = 25_000const IDLE_S = [10, 20, 30, 45, 60, 90, 120, 180]const HOST = process.env.VERCEL_HOST ?? "your-site.vercel.app"const TARGETS = [ { name: "vercel-76.76.21.21", host: HOST, ip: "76.76.21.21" }, { name: "vercel-216.150.1.1", host: HOST, ip: "216.150.1.1" }, { name: "google", host: "www.google.com", ip: null },]const sleep = ms => new Promise(resolve => setTimeout(resolve, ms))function request(session) { return new Promise(resolve => { const started = Date.now() const timer = setTimeout(() => resolve({ outcome: "hung", ms: HANG_MS }), HANG_MS) let stream try { stream = session.request({ ":path": "/robots.txt", "user-agent": "idle-probe" }) } catch (error) {We also have the full results (3,500 tests), the Chrome network log excerpt, traceroutes on Jio and Airtel, and Vercel's debug script output from Jio, and we're happy to share them with Vercel staff.
Older thread that may be the same problem: Website not accessible on Jio and Vodafone mobile networks