← Back to News & Articles

Serverless Cold Starts: The Hidden Cost for Global Apps

20 regions versus 330 cities. Why cold start latency matters more than you think for global users.

Comparisons9 min
Serverless Cold Starts: The Hidden Cost for Global Apps

Your function works in testing. It responds in 40 milliseconds from your office in Sydney. You ship it to production. A customer in Jeddah loads the page. The function has not run in eight minutes. The container is cold. The runtime initializes. Dependencies load. The connection establishes.

1,200 milliseconds later, the response arrives.

The customer does not know what a cold start is. They know the page was slow. They know the competitor's page was not. That is the entire conversation that matters.

Cold starts are the tax you pay for serverless convenience. And for applications serving users across multiple continents, that tax compounds in ways most teams do not measure until it is too late.

What Actually Happens During a Cold Start

When a serverless function has not been invoked recently, the platform must spin up a new execution environment before your code runs. The sequence varies by platform, but the cost is always the same: your user waits.

On container-based platforms like AWS Lambda, the cold start sequence looks like this:

  1. Container allocation -- the platform finds available compute capacity in the region
  2. Runtime initialization -- Node.js, Python, or Java boots up inside the container
  3. Dependency loading -- your function's packages and modules load into memory
  4. Handler initialization -- your code's global scope executes (database connections, SDK setup)
  5. Request processing -- your actual function logic finally runs

Steps 1 through 4 are invisible to your code but visible to your user. On AWS Lambda with Node.js, this adds 100 to 500 milliseconds. With Java, it regularly exceeds one second. With heavy dependency trees or VPC configurations, cold starts can stretch past three seconds.

Vercel's serverless functions run on AWS infrastructure. They have invested heavily in mitigation -- their Fluid Compute system uses bytecode caching and predictive warming to reduce cold start frequency. These are meaningful improvements. But they are optimizations on top of a container architecture, not a fundamentally different approach.

The container must still boot. The runtime must still initialize. The physics have not changed.

The V8 Isolate Alternative

There is a different architecture. Instead of spinning up containers, some platforms use V8 isolates -- the same JavaScript engine that powers Chrome. Cloudflare Workers pioneered this approach at scale.

The difference is structural:

Container-based (AWS Lambda, Vercel Serverless): Each function gets its own container with a full runtime. Cold start means booting that entire environment from scratch.

V8 isolate-based (Cloudflare Workers): Functions run as lightweight isolates inside a shared V8 engine that is already running. There is no container to boot, no runtime to initialize. The isolate starts in sub-5 milliseconds -- sometimes under one millisecond.

That is not a 20% improvement. It is an order of magnitude. A function that cold-starts in 300 milliseconds on a container platform cold-starts in under 5 milliseconds on a V8 isolate platform. The difference between a user noticing latency and not noticing it at all.

The trade-off is real: V8 isolates run JavaScript and WebAssembly only. You cannot run arbitrary Python or Java. Some Node.js APIs that depend on the operating system (file system access, child processes, raw TCP sockets) are not available. For most serverless use cases -- API endpoints, data transformation, authentication middleware, webhook handlers -- this constraint is irrelevant. For workloads that require native binaries or OS-level access, containers remain necessary.

But for the 90% of serverless functions that are "receive request, process data, return response," the isolate architecture eliminates cold starts as a meaningful concern.

20 Regions Versus 330 Cities

Cold start duration is only half the equation. The other half is where your function runs.

Traditional serverless platforms deploy your functions to a fixed number of regions. AWS operates in roughly 30 regions worldwide. Vercel exposes approximately 20 of those for serverless functions. You choose a primary region. Your function runs there.

When a user in Melbourne requests a function deployed to US East, the request travels across the Pacific Ocean. Even at the speed of light through fiber optic cable, that round trip adds 150 to 250 milliseconds of network latency -- before your function even starts executing. If the function is cold, add the container boot time on top.

A user in Riyadh calling a function in EU West faces 80 to 120 milliseconds of network latency. A user in Jakarta calling US East faces 200 to 300 milliseconds.

These numbers are physics. No amount of code optimization eliminates the speed of light.

Edge computing changes the equation by running your code in more locations. Cloudflare operates in 330+ cities across 120+ countries. When a function runs on this network, it executes in the city closest to the user -- not in a region that might be a continent away.

The combined effect:

ScenarioContainer + RegionalV8 Isolate + Edge
Cold start100-500msSub-5ms
Network latency (cross-continent)100-300ms10-50ms
Total worst case200-800ms15-55ms
Total best case40-80ms (warm, same region)5-20ms

For a single API call, the difference might seem acceptable. For a page that makes four serverless calls to render, multiply accordingly. A page that loads in 200 milliseconds on edge versus 1.2 seconds on regional serverless is not a minor optimization. It is the difference between a user who stays and a user who leaves.

Google's research on page speed confirms what every developer intuitively knows: users abandon pages that feel slow. The threshold is lower than most teams assume. At 3 seconds, 53% of mobile visitors leave. But the damage starts well before that -- perceived performance degrades noticeably at 200 milliseconds of delay.

Where Cold Starts Hurt Most

Not every application suffers equally. A back-office admin panel used by five people in the same city will not notice cold starts. But several categories of applications are disproportionately affected.

Image-Heavy Applications

E-commerce storefronts. Photography platforms. Real estate listings. Construction camera galleries. Any application where the primary interaction is viewing high-resolution images.

For these applications, operations at the edge is not an abstract architectural preference. It is perceived performance. The time from tap to image appearing on screen is the product experience. When serverless functions handle image metadata, access control, or dynamic resizing, cold start latency adds directly to that experience.

A gallery page that loads image metadata through a cold serverless function in a distant region feels sluggish even if the images themselves are cached on a CDN. The browser cannot start fetching images until the metadata call returns. The cold start becomes the critical path.

Multi-Region User Bases

If your users are in one country, a single-region deployment might be fine. If your users span continents, the math changes completely.

Consider a SaaS application with users in Australia, the United States, Europe, and the Middle East. On a 20-region platform, you pick a primary region. Users far from that region experience higher latency on every serverless call. On a 330-city edge network, every user gets local execution.

This is particularly relevant for applications where central control gives way to edge execution -- where decisions and data processing happen closer to the user rather than in a centralized data center.

Infrequently Called Functions

The cruel irony of cold starts: they hit hardest on functions that run least often. A function processing webhook events every few seconds stays warm. A function that runs a monthly report, handles a rare user action, or serves a low-traffic API endpoint goes cold between invocations.

On container-based platforms, these functions cold-start every time. On V8 isolate platforms, the sub-5ms startup means it does not matter.

Real-Time and Interactive Features

Chatbots. Live dashboards. Collaborative editing. Notification systems. Any feature where the user is actively waiting for a response and perceives delay as broken.

When an AI agent runs while you sleep, latency is invisible. When a user is staring at a loading spinner waiting for a serverless function to respond, every hundred milliseconds feels like a second.

The Mitigation Arms Race

Platform vendors know cold starts are a problem. The mitigation strategies are increasingly sophisticated.

Provisioned concurrency (AWS Lambda): You pay to keep a fixed number of containers warm at all times. Effective, but expensive. You are paying for compute whether it is used or not -- which defeats much of the cost advantage of serverless.

Bytecode caching (Vercel Fluid Compute): Cache compiled bytecode so subsequent cold starts skip the compilation step. Reduces cold start duration but does not eliminate it.

Predictive warming (various): Use traffic patterns to predict when a function will be needed and pre-warm it. Smart, but imperfect -- unexpected traffic spikes still trigger cold starts.

Edge functions (Vercel Edge Runtime): Run lightweight functions on the edge network instead of in regional containers. This is Vercel acknowledging that the container model has limits. But Vercel's edge runtime has constraints -- no Node.js APIs, limited execution time, smaller memory. It is a subset of what their serverless functions can do.

V8 isolates (Cloudflare Workers, Deno Deploy): The architectural answer rather than the mitigation. Instead of making containers faster, remove containers entirely.

Each mitigation adds complexity. Provisioned concurrency requires capacity planning. Bytecode caching requires cache management. Predictive warming requires traffic analysis. V8 isolates require accepting JavaScript/WASM-only execution.

The question for your architecture is not which mitigation is cleverest. It is which trade-off aligns with your application's needs.

Measuring What Matters

Most teams monitor average response time. This is nearly useless for understanding cold start impact.

Cold starts are a P95/P99 phenomenon. Your function might respond in 40 milliseconds 94% of the time (warm invocations) and 800 milliseconds 6% of the time (cold starts). The average looks fine. Six out of every hundred users have a degraded experience.

The metrics that actually reveal cold start impact:

P99 latency by region: Not global P99 -- per-region P99. A function that performs well in US East and poorly in APAC has a cold start problem disguised by geographic averaging.

Cold start rate: What percentage of invocations are cold? On container platforms, this typically ranges from 1% to 15% depending on traffic patterns.

Time to interactive (TTI) by geography: The user-facing metric that cold starts ultimately affect. Measure it from multiple global locations, not just your office.

First contentful paint (FCP) on serverless-dependent pages: If your page requires a serverless call before it can render meaningful content, cold start latency directly impacts Core Web Vitals.

Building a platform that performs well globally requires thinking about these numbers from the start -- not after users complain. It is part of the same discipline as building in the IDE and scaling in the IME -- development decisions that seem local have global consequences.

The Real Cost Is Invisible

The hidden cost of cold starts is not the latency itself. It is the decisions teams make to work around it.

Teams add caching layers to avoid serverless calls. They move logic to the client to reduce function invocations. They batch requests to minimize cold start exposure. They implement keep-alive pings to prevent functions from going cold. They over-provision concurrency to stay warm.

Each workaround adds complexity. Each layer of complexity adds maintenance burden. The architecture bends around the limitation instead of the limitation being solved at the infrastructure level.

This is the same pattern that creates app sprawl -- patching around limitations instead of choosing a foundation that eliminates them.

For teams building applications that serve users globally, the architecture choice between container-based serverless and edge-native isolates is not a minor infrastructure detail. It is a product decision that affects every user interaction, every performance metric, and every hour spent on latency workarounds for the life of the application.

What This Means for Your Architecture

If your application serves users in a single region and your serverless functions stay warm from consistent traffic, cold starts may never be a meaningful problem. Container-based platforms like AWS Lambda and Vercel's serverless runtime are battle-tested and well-documented.

If your application serves users across multiple continents, handles bursty or infrequent traffic, or depends on serverless functions in the critical rendering path, the architecture matters enormously. The difference between 20 regions and 330 cities is not a marketing number. It is the difference between a user in Jakarta waiting 400 milliseconds and waiting 20.

The questions worth asking:

  1. Where are your users? If the answer is "one country," regional serverless is fine. If the answer is "everywhere," edge-native compute deserves serious evaluation.

  2. How often do your functions run? High-frequency functions stay warm on any platform. Low-frequency functions expose cold start costs on container platforms.

  3. Are serverless calls in the critical path? If your page can render without waiting for a function response, cold starts are invisible. If the page blocks on a function call, cold starts are the user experience.

  4. What is your latency budget? Operational excellence means defining acceptable performance and architecting to meet it -- not hoping the platform handles it.

  5. Are you building workarounds? If your team spends time on keep-alive pings, cache layers to avoid function calls, or client-side logic to reduce invocations, you are paying the cold start tax in engineering hours instead of milliseconds.

The serverless model solved the scaling problem. Edge computing solves the latency problem. For global applications, you need both.

The Bottom Line

Serverless cold starts are not a bug. They are a consequence of container architecture -- a trade-off that made sense when serverless was primarily about auto-scaling, not global performance.

For applications that serve a global user base, the trade-off has shifted. V8 isolates deliver sub-5ms cold starts. Edge networks deliver sub-50ms latency to users worldwide. The combination eliminates an entire category of performance problems that container-based platforms can only mitigate, never solve.

Twenty regions is a good start. Three hundred and thirty cities is a different product experience entirely.

The infrastructure your application runs on is not neutral. It shapes what your users feel, what your team builds around, and what performance is possible. Choose the architecture that matches your ambition, not just your current traffic.


Building for global users? WaymakerOS Host runs on 330+ edge locations worldwide with sub-millisecond cold starts. Your apps and serverless agents execute where your users are -- not where your region is. Explore Waymaker Host or see how operations at the edge changes what is possible.


Related reading: Learn about building in the IDE and scaling at the platform level, understand the real cost of app sprawl, or explore the best all-in-one business platforms for 2026.

About the Author

Stuart Leo

Waymaker Editorial

Stuart Leo founded Waymaker to solve a problem he kept seeing: businesses losing critical knowledge as they grow. He wrote Resolute to help leaders navigate change, lead with purpose, and build indestructible organizations. When he's not building software, he's enjoying the sand, surf, and open spaces of Australia.