I'm building discoveraiskills.com, a directory site for AI agent skills.
Just launched. 50 real visitors a day.
Opened the billing dashboard. $2 gone in two hours.
Trap #1: Features that bill you by default
Vercel has Fluid Compute (billed by CPU time) and Turbo Build (faster build machines, but more expensive). Both are enabled by default.
I never turned them on. They were just running and billing. Disabled both — two line items dropped to zero immediately.
Vercel's defaults are optimized for best experience, not lowest cost.
Trap #2: I thought I had caching. I didn't.
My site sits behind Cloudflare. Most requests should be intercepted there, never reaching Vercel.
But the bill showed almost every request punching through to Vercel origin. Every punch costs money.
Root cause: I was using NextAuth for login. It injects a cookie into every response. Next.js sees a cookie and automatically marks the response as cache-control: private. Cloudflare sees private and dutifully fetches fresh from Vercel every single time.
One auth library silently disabled caching for the entire site.
The sneaky part: everything looked fine from the outside. Cloudflare dashboard showed "cached." Users saw no issues. But Vercel was executing functions on every request, billing on every request.
Trap #3, the most expensive one: 36,280 pages refreshing every hour
My site has 36,280 skill pages. I set revalidate = 3600 (refresh cache every hour) on all of them.
The math I didn't do: 36,280 pages × once per hour = up to 36,280 cache writes per hour. Each write is billed.
This has nothing to do with traffic. Zero visitors, the writes still happen.
Changed to revalidate = 86400 (once per day). Cost for this line item dropped 24x. The data isn't real-time anyway — daily refresh is more than enough. I set 1 hour because it "felt fresh." No actual reason.
The real lesson
All three traps share one root cause: I made configuration decisions without knowing my data scale.
36k pages and 100 pages with the same config have wildly different cost profiles.
Three things to do before launching on Vercel: audit every default-enabled paid feature and turn off what you don't need; for dynamic routes, check how many records are in your database before setting revalidate; watch per-line-item billing velocity in the first 48 hours after launch, not just the total.
Top comments (0)