Back to all blogs
#vercel
#nextjs
#react
#webdev
May 18, 2025
6 min read
A blog post byThereallo

My Honest Take on Vercel and Next.js

A rant about Vercel using Next.js as a platform to force you their services.

I've been working with web tools long enough to see trends rise, peak, and lose their way. I've been using Next.js since it became popular, and I've seen it grow from a simple framework to a complex platform.

Vercel is a solid platform. Deployments are simple. The developer experience is good. The framework support works well. For hobby projects, it's great. But when your project grows, it gets expensive.
Vercel's free tier is generous. But once you scale, the pricing hits hard. It feels like they lure you in, then drain your wallet. Cloudflare, in contrast, lets me send 10TB of traffic without an issue.
Most hobby developers are on the free plan, they don't need to scale, they force optimizations in your Next.js apps, no matter if you want them or not.
One of my projects went viral overnight, woke up to a $500 invoice. There was no warning.
"Simply pay us more and we'll make it fast."

I've used Next.js since it became popular. I liked the Pages Router. It was light, clear, and felt like React.
Then came App Router, SSR, and RSC.
I don't like them.
React is a client-side library. It's 2025, clients have devices powerful enough to render, let the browser do it's job. Why burn server resources just to send HTML? App Router is pushing server logic deeper into the app. It made things worse.
Sure, App Router has layouts and a new file structure. That's fine. But let's not pretend this didn't change the nature of React.
App Router has taken what React was about and turned it upside down, blending server-side logic with client-side rendering in a way that feels like a step backward. (PHP, anyone?)
And hydration errors? Still useless. It's 2025 and debugging them remains a joke.

For those who are living under a rock, RSC (React Server Components) is just like the old web. Aka PHP. Every button you click will make the server send a new page (and refresh). RSC works well with some specific use cases.
Not all apps need RSC. Most don't. If you're doing SEO-heavy work, sure. But if you're building SaaS, dashboards, or tools, you don't need it.
Blending backend with frontend brings back old problems. It feels like PHP all over again. Some people prefer it like that. I don't. I want a clean split. Frontend handles the view. Backend handles logic.
It's 2025. Devices are fast. Networks are better. If this were 2013, SSR might help. But now, it's too much.

Yes, you can pre-render on hover for speed. That's cool and all. But I keep asking: how much does it cost? SSR and pre-rendering sound fast, until the invoice hits.
Next.js has become a heavy tool. It's too much for small projects. If I'm building a blog or portfolio, I use Astro now.

Bots flooded my site with thousands of requests. Vercel's Serverless functions burned through all my function hours, then paused my Vercel team.
I had firewall rules. I blocked known user agents. It didn't matter. The traffic still counted. Their system charges you even when it drops the request. You're paying for noise.
One of the worst offenders? Alibaba's bot. It ignores robots.txt. It hammers your site nonstop. I saw it on my logs. Others have the same issue. You can block it by JA4 in Vercel's firewall, but they'll still bill you.
It's not just me. Someone else showed screenshots where over 50% of their traffic came from bots Vercel was supposedly blocking. That traffic still got charged. Vercel claims that "permanent actions" don't count toward usage, but they quietly removed those features. Now, every request costs money, even the ones you try to block.
I contacted support. They told me not to use Cloudflare in front of Vercel. They linked me to a page about their new firewall limits. Nothing in the reply addressed the real issue (Altough they did unpause my team).
I use Cloudflare anyway. It blocks the bad traffic before it ever touches Vercel. That's the only reason my site stayed online.
The truth is simple, Vercel's is a honeypot, WAF doesn't protect you, it exists just to generate usage. If your app gets hit by bots, go ahead, you are paying for the traffic. It doesn't matter if you blocked them, it doesn't matter if your users never saw the traffic, Vercel still charges you.

Vercel claims they still support Pages Router. They said so themselves.
... We're committed to supporting the Pages Router for many years in the future. And then maybe longer even.
... We're still making Next.js improvements that apply to both routers, like adding Turbopack (through next dev --turbo) to speed up your local development environment.
But their actions say something else.
They focus on App Router. Pages Router feels neglected. It gets no new features. No layout system. No love. Sure, Turbopack works (I am pretty sure my typefaces will break if I enabled turbopack on thereallo.dev), but hydration errors still suck.
The App Router file structure change is fine. Layouts are useful. But why not bring them to Pages Router?
The reason is simple.
App Router ties into Vercel's pricing plans. SSR and edge functions cost money. Vercel wants to control the devs who use their platform. This pushes developers into a setup that benefits them, not us.

OpenNext

OpenNext is an open-source project from devs at SST, Cloudflare, and Netlify. Its goal is to make Next.js run on any platform. Not just Vercel. It rewrites the output to match Vercel's runtime elsewhere.
With it, you still get:
  • SSR
  • API routes
  • Middleware
  • ISR
  • Image optimization
But without the lock-ins, and no surprise bills.
Big users like NHS England, Gymshark, and Udacity already run it, and it works. It lets us keep using Next.js without the limits.

Back to the Classics

Sometimes, the best solution is the simplest one.
You can just host your Next.js app on a 1$ VPS, secure nginx with Cloudflare, and just be done with it. And you get to cache your own pages too.
It's 2025, devices are powerful, networks are fast enough, and we don't need to burn serverless™ resources to send raw HTML without JavaScript.

Next.js should be a tool. Not a jail cell.
If you love the framework but not the platform, there are many ways out.
Build your apps your way. Not theirs.
Looks inside
???