An edge function is not Node.js running closer to the user. It is a constrained runtime in a V8 isolate that starts in under a millisecond because it carries none of the operating system overhead of a full process, as this edge runtime guide explains. That same guide lists the trade: no filesystem, no child processes, no native addons, and only a few seconds of execution in many cases. The isolate starts fast, but the code inside it still waits on network round trips, and those do not get faster just because the function is local.
That distinction matters once a model call joins the path. Your request now has three serial steps: a cache lookup, a database read, and a model inference call. Each is a network hop, and each can stall. Edge platforms also enforce their own ceilings on top of whatever you write. Netlify documents 50 ms of CPU execution time per request and a 40 second response header timeout, with execution time excluding time spent waiting for resources, per Netlify's edge function limits. Supabase documents a 150 second wall clock on its free plan, a 2 second CPU cap, and a 150 second idle timeout that returns a 504, per Supabase's function limits. Vercel Edge Functions carry a 30 second execution wall clock, according to the same edge runtime guide.
None of those platform numbers tell you what your user will tolerate. That is your decision, and it shapes the whole design. A common mistake is to let the platform timeout be the only guardrail. By the time the platform kills the request, the user has already waited too long and you have no fallback to show them. The fix is to set a total deadline well below the platform ceiling and divide it into per-step budgets.
Cold starts add variance you cannot schedule around. A function invoked after inactivity pays initialization cost before your first line runs, which can range from hundreds of milliseconds to several seconds depending on runtime and function size, per this cold start explainer. The ACM systematic review of cold start latency catalogs caching, application-level optimization, and machine learning approaches to reducing that cost. You do not control which requests land on a cold isolate, so your budget has to assume the worst and still return something. A dynamic pre-warm model reduced cold starts by up to 60 percent and improved average response times by 45 percent against state-of-the-art methods in one trace-driven simulation, per this IEEE paper, but pre-warming is a platform-level lever you may not have.



