Vercel breaking changes, updated weekly
Every verified Vercel trap in Footgun: changes and behaviors that break code or give wrong results, newest first. Each one has the error you see, the fix, and the date it was last checked. The list updates when the weekly check adds or retires a trap. For the full cause and sources, open the trap, or see all Vercel traps.
fg-0572· added 2026-10-27· last checked 2026-10-27
A traffic spike on Vercel Pro keeps billing unless Spend Management pauses your production deployments
Symptom
Spend notifications arrive at 50%, 75% and 100% of your budget while the site keeps serving and billing
Fix
As a team Owner or Billing member, enable Spend Management, set an On-Demand Budget below the most you are willing to spend, and turn on Pause Production Deployments. Know that pausing does not stop AI Gateway or v0 usage or storage charges, and that each paused project must be resumed by hand.
fg-0244· added 2026-10-15· last checked 2026-10-15
Server-side fetch to process.env.VERCEL_URL returns 401 or the Vercel login HTML
Symptom
fetch(`https://${process.env.VERCEL_URL}/api/...`) returns 401 in a deployed app
Fix
Call your own routes with a relative path from the client, or build the URL from the incoming request origin and forward its cookie on the server. Use the bypass header only when no user request exists.
fg-0246· added 2026-10-15· last checked 2026-10-15
useChat sends a stale value in DefaultChatTransport body after React state changes
Symptom
Server always receives the first render value from transport body
Fix
Upgrade @ai-sdk/react to 3.0.223 or later on the ai 6 line, or 4.0.12 or later on the ai 7 line. On ai 5, which has no fix, pass per request data in the sendMessage options instead of the transport.
fg-0248· added 2026-10-15· last checked 2026-10-15
Vercel Function returns 504 FUNCTION_INVOCATION_TIMEOUT after 10 or 15 seconds on an older project
Symptom
504: GATEWAY_TIMEOUT with code FUNCTION_INVOCATION_TIMEOUT
Fix
Turn on Fluid compute for the project and redeploy, or set maxDuration on the function within your plan maximum.
fg-0251· added 2026-10-15· last checked 2026-10-15
Webhooks and API clients calling a Vercel preview URL get a Vercel login page instead of the function
Symptom
Stripe, Slack, or GitHub webhook deliveries to a preview URL fail with 401 or a redirect to vercel.com/login
Fix
Create a Protection Bypass for Automation secret and send it as the x-vercel-protection-bypass header, or as a query parameter for services that cannot set headers.
fg-0239· added 2026-10-15· last checked 2026-10-15
AI SDK streamText error never reaches try/catch and the chat UI only shows 'An error occurred.'
Symptom
An error occurred.
Fix
Pass onError to streamText for logging, and pass an onError formatter to the UI stream response if the client should see the reason.
fg-0240· added 2026-10-15· last checked 2026-10-15
Deploy fails with 'Hobby accounts are limited to daily cron jobs' or the daily cron fires up to an hour late
Symptom
Hobby accounts are limited to daily cron jobs. This cron expression would run more than once per day.
Fix
Keep Hobby crons to one run per day and do not depend on the minute, or move to Pro for per minute precision. For frequent jobs on Hobby, trigger the route from an external scheduler.
fg-0241· added 2026-10-15· last checked 2026-10-15
New Vercel deployments fail after October 1, 2026 because the project is still on Node.js 20
Symptom
Every new deployment errors while the project Node.js Version is still 20.x
Fix
Set engines.node to 24.x or 22.x and update the project setting, then redeploy. Use vercel project ls --update-required to find affected projects.
fg-0242· added 2026-10-15· last checked 2026-10-15
Pages cached on Vercel started returning x-vercel-cache MISS on every request after September 30, 2026
Symptom
x-vercel-cache: MISS on routes that used to HIT
Fix
Remove Cookie from Vary on routes that do not change per visitor, and set Vary only on the routes that need it.
fg-0238· added 2026-10-15· last checked 2026-10-15
AI Gateway rejects requests with 'Insufficient funds' even though a BYOK provider key is configured
Symptom
Insufficient funds. Please add credits to your account to continue using AI services.
Fix
Keep a small positive credit balance on the team, or call the provider directly for traffic that must never touch gateway credits.
fg-0243· added 2026-10-15· last checked 2026-10-15
Pushes to a private GitHub organization repo never deploy on a Vercel Hobby account
Symptom
No deployment is created for commits by teammates or bots
Fix
Move the project to a Pro team and add the committers, make the repo personal or public, or deploy from CI with the Vercel CLI and a token.
fg-0245· added 2026-10-15· last checked 2026-10-15
Upload or large JSON to a Vercel Function fails with 413 FUNCTION_PAYLOAD_TOO_LARGE
Symptom
413: FUNCTION_PAYLOAD_TOO_LARGE
Fix
Send large files straight from the browser to object storage with a presigned or client upload URL, and return only a reference from the function. Page or stream large responses.
fg-0247· added 2026-10-15· last checked 2026-10-15
Vercel cron job shows no log and does nothing because the route answers with a redirect
Symptom
No runtime log for the cron path at the scheduled time
Fix
Exclude the cron path from middleware redirects, use the exact path the router serves, and authenticate the call with the CRON_SECRET bearer header instead of a session check.
fg-0249· added 2026-10-15· last checked 2026-10-15
Vercel ignores the dashboard Build Command, Output Directory, and Node settings because vercel.json has builds
Symptom
Build log warns that Build and Development Settings from Project Settings will not apply because builds exists
Fix
Delete the builds array, move memory and maxDuration settings into functions, and replace legacy routes with rewrites, redirects, or headers.
fg-0250· added 2026-10-15· last checked 2026-10-15
Vercel never caches an API route response even though it sets Cache-Control max-age
Symptom
x-vercel-cache: MISS on every request to a function
Fix
Return s-maxage with stale-while-revalidate, or a Vercel-CDN-Cache-Control header, and make sure the route sets no cookie.
fg-0252· added 2026-10-15· last checked 2026-10-15
Work started after returning the response never finishes on Vercel (emails, logs, analytics silently dropped)
Symptom
A promise fired without await after sending the response never completes
Fix
Wrap post response work in after() on Next.js 15.1 or later, or waitUntil from @vercel/functions elsewhere, and keep it within maxDuration. Use a queue or workflow for anything long.
Have your agent check Vercel changes before it codes