Vercel Functions runtime shifts — what June 2025 broke, what it fixed, and the bill-shock cycle
Theo's "Vercel Finally Caught Up" (Jun 27) framed the Fluid Compute era. r/nextjs bill-shock threads showed the cost. Working read from migrating three apps through the transition.
Theo”s June 27, 2025 video — “Vercel Finally Caught Up” — framed the moment Vercel”s long-running runtime transition crossed from “confusing in-flight changes” into “the new normal.” For the previous 18 months, Vercel had been quietly reshaping how Functions worked: Edge Runtime got more capable, Fluid Compute consolidated previously-separate features, the underlying mental model kept shifting.
Theo”s framing was generous: Vercel”s direction is good, the catch-up to Cloudflare Workers on key capabilities (waitUntil, streaming, background work) is real. The r/nextjs community”s framing the next two weeks was sharper: the new pricing model that came with Fluid Compute is biting users in ways they didn”t expect. This piece is from migrating three real Next.js apps through the transition and watching the platform shift in real time.
What Theo”s video actually argued
The “Vercel Finally Caught Up” framing isn”t snark — it”s technical recognition. Through 2023-2024, Cloudflare Workers had structural advantages Vercel was missing:
waitUntilfor background work (Cloudflare from day one; Vercel added it 2024-2025)- True edge streaming without serverless cold-start tax (Cloudflare from start; Vercel matured through 2025)
- Consolidated runtime model (Workers is just Workers; Vercel had Edge Functions vs Serverless Functions for years)
Theo”s argument: Fluid Compute is Vercel”s answer to all three. The platform now has feature parity with the substrate Cloudflare was using to compete on technical merit. Whether that”s enough to retain users against pricing pressure is the open question — which is exactly what the next month”s r/nextjs threads litigated.
What Vercel actually changed
Three concrete shifts since late 2024:
1. Fluid Compute consolidates Edge / Serverless / Node. Where Vercel previously had separate runtimes for “Edge Functions” (V8 isolates, fast cold start, limited APIs) and “Serverless Functions” (full Node, slower cold start, all APIs), Fluid Compute presents a unified abstraction. You write code, Vercel decides where it runs. The decision can be hinted via runtime config but the platform increasingly handles it for you.
2. Streaming-first as the default. Vercel pushed streaming responses heavily through 2024-2025. Server Components, Server Actions, and the new Functions runtime all favour streaming. The implication: code that assumed await then return is fine; code that depended on synchronous response completion sometimes needs adjustment.
3. Background work via waitUntil. A real improvement — you can finish a response and continue working server-side. Cleanup, logging, analytics, cache warming. Cloudflare Workers had this from the start; Vercel adding it removes a long-standing capability gap.
The bill-shock cycle that followed
Vercel”s “Introducing Active CPU pricing for Fluid Compute” announcement landed in late June 2025. The marketing framing was “cost reduction” — pay only for actual CPU time, not wall-clock function lifetime. The lived reality on r/nextjs was very different.
The r/nextjs “Is my Vercel Pro Plan billing normal? $237 for 6 days” thread (34 upvotes, July 2) is the canonical example. OP”s app: 25K visitors, 85K page views, 6 days, $237 bill. The thread is notable because Jacob from Vercel”s team replied directly (15 upvotes):
“This is appropriate pricing for likely way way way more requests than your app actually needs to be making. You should be able to…”
The Vercel team”s response was technically correct (the bill IS appropriate given the function invocation count) but emotionally wrong (the user didn”t expect 1M function invocations from 85K page views). The disconnect captured the broader friction. Top community reaction (9 upvotes): “Welcome to the cloud. That would have been $0.99 with a regular VPS.”
The r/nextjs “New Pricing of Fluid Active CPU costs way too high” thread (31 upvotes, July 7) made it more direct:
“They call it a ”cost reduction,” but I”m 7 days into the billing cycle and…” (OP)
“I reached full after 2 days… Before I never exceeded anything…” (top reply, 10 upvotes)
“Yeah, you”re not alone — tons of people are getting hit with surprise bills from this ”cost reduction.””
The “Is NextJs 15 increasing my Vercel bill?” thread (22 upvotes, July 29) extended the conversation: the cost spike wasn”t just Fluid Compute pricing; Next.js 15”s default behavior (more frequent revalidation, more SSR, more streaming) was driving function invocation counts up. The combined effect of NextJS 15 + Fluid Compute pricing landed as a coordinated bill increase even for users who didn”t change their code.
The r/nextjs “My Site Was One Button Overweight” thread (172 upvotes, May 26) was the upstream signal — a developer documenting how a single misconfigured button was hammering their function invocation count. The thread was instructive for the broader pattern: on the new pricing model, small UI choices have outsized cost implications.
What broke (and what got better)
For apps that worked through 2024 and now hit issues in 2025:
Custom request body parsing on Edge. If you had middleware that pre-read the request body in a non-streaming way, you may hit issues. The Edge runtime is increasingly strict about streams.
Long-running response handlers. The 10-second Edge Function timeout (Hobby tier) is real and bites apps that worked when those handlers ran in a Node runtime with longer limits.
Some npm packages. Edge runtime compatibility with Node.js APIs has improved but is still partial. crypto.randomUUID works; some Node-specific filesystem patterns don”t. Each package needs verification.
Cold-start behaviour assumptions. Code that assumed “if it”s a Serverless Function the cold start is 200ms” is now wrong — Vercel may route the same code through different infrastructure. Test against realistic conditions, not the historical mental model.
The wins:
Real edge-native streaming for React Server Components. Biggest UX improvement. Pages that used to need progressive enhancement workarounds now stream cleanly via the platform.
waitUntil for background work. Meaningful for analytics, log shipping, cache management.
Improved cold-start across runtimes. Even traditional “Serverless Function” cold-starts have improved with Vercel”s investment.
Better observability. The dashboards around function invocation, latency, and errors are visibly better than 12 months ago.
Creator POV vs Reddit dissent
Theo”s POV is technically generous, commercially neutral. Vercel”s engineering is solid; the platform direction is good; the catch-up to Cloudflare is real. He doesn”t pile on the pricing controversy — that”s the community”s beat.
Theo”s follow-up “Why the hell did Vercel hire the creators of Nuxt?” (Jul 17) reads as analysis of Vercel”s competitive positioning: hiring talent from the alternative framework (Nuxt) is a defensive move. Theo”s read: Vercel knows it”s in a real competitive fight and is investing accordingly. His July 4 “I finally switched to Postgres” video is the adjacent move — engineers consciously building outside the Vercel stack walls, even when they”re otherwise happy on Vercel”s platform.
The Reddit dissent through July clustered:
The “Vercel is the new AWS” camp — vocal, sharper than fair. Frustration with surprise bills + Active CPU pricing + Next.js 15 defaults compounded into “Vercel”s pricing posture is now adversarial.”
The “test before deploying” camp — accurate but not always actionable. Multiple top commenters pointed out the bills correlate with function invocation counts users could have caught earlier. True; doesn”t change the surprise dynamics for users who weren”t monitoring.
The “Cloudflare alternative” camp — increasingly loud. Through 2025 the “if Vercel doesn”t work for you, Cloudflare Workers Static Assets + Workers is a real alternative” pattern crystallized. Many r/nextjs commenters explicitly noted they migrated or were evaluating.
The Vercel-team-defender camp — Jacob”s reply in the $237 thread is exemplary. The team engaged honestly, explained the math, accepted criticism. The defense was technically right; emotionally it didn”t reverse the trust damage.
What this means for working engineers in July 2025
Three practical positions:
1. If you”re on Vercel and apps work, don”t migrate reactively. The runtime changes are now stable. Watch your function invocation counts. Set up usage alerts. Most apps still ship fine.
2. If you”re evaluating Vercel vs Cloudflare for a new project, the calculus has shifted. A year ago Vercel”s DX premium justified the price. Today Cloudflare Workers Static Assets gives you most of the DX at substantially lower cost. The Vercel-specific features that justify the premium (preview deployments, the analytics integration, the team UX) are still real — just narrower than they were.
3. Audit your Next.js 15 default behavior. Revalidation, ISR, server actions — each one is a function invocation. The defaults that were free on the old pricing model are billable on the new one. Configure intentionally.
The honest critique
What this story isn”t:
- Vercel isn”t dying. Best DX in the category. Still the default choice for many teams. The pricing changes are a real friction; they”re not existential.
- The bills aren”t fraud. The math is consistent with Vercel”s public pricing. The surprise comes from user expectations not matching the new model — not from hidden charges.
- Cloudflare isn”t a drop-in replacement. Workers Static Assets is great for content sites; for full Next.js with all the bells, Vercel”s ergonomics are still better.
For working engineers reading this in mid-July 2025: the Vercel runtime transition is mostly done. The pricing transition is mostly done. The remaining work is yours: understand the new cost model, audit your apps for invocation hotspots, set alerts, decide whether the new math justifies staying. Vercel is moving forward; sometimes forward means leaving behind cost assumptions that worked at a specific historical moment.
For broader platform decisions, see our Workers vs Vercel piece and the Fly.io vs Railway comparison for non-Vercel alternatives.
Sources
Every reference behind this piece. If we make a claim, it's because at least one of these said so — or we lived it ourselves.
- YouTube Theo (t3dotgg) — "Vercel Finally Caught Up" — Theo / t3dotgg
- YouTube Theo (t3dotgg) — "Why the hell did Vercel hire the creators of Nuxt?" — Theo / t3dotgg
- YouTube Theo (t3dotgg) — "I finally switched to Postgres." — Theo / t3dotgg
- Docs Vercel — Introducing Active CPU pricing for Fluid Compute — Vercel
- Docs Vercel — Fluid Compute documentation — Vercel
- Blog r/nextjs — "Is my Vercel Pro Plan billing normal? $237 for 6 days" (34 upvotes, Vercel team replied) — r/nextjs
- Blog r/nextjs — "New Pricing of Fluid Active CPU costs way too high" (31 upvotes) — r/nextjs
- Blog r/nextjs — "My Site Was One Button Overweight" (172 upvotes) — r/nextjs
- Blog r/nextjs — "Is NextJs 15 increasing my Vercel bill?" (22 upvotes) — r/nextjs
- Firsthand Migrating three real Next.js apps through the Vercel runtime transition in 2025