SEO? YOUR APP IS BEHIND A LOGIN
Crawlers never see it. You added a server for zero SEO benefit. Congratulations.
You don't need it. Your users don't need it. Your Vercel bill does.
Crawlers never see it. You added a server for zero SEO benefit. Congratulations.
The page looks loaded. Nothing works. Users click into the void. The browser re-executes all that JS anyway.
That cold Lambda is slower than a CDN-cached HTML file. You traded guaranteed fast for maybe fast.
A SPA on a CDN costs pennies regardless of traffic. SSR scales your bill linearly with your users.
"use client" everywhere. Two component models. Library incompatibilities. You signed up for a mental model tax.
Nobody asked if SSR fits your product. They saw an "article" about it. Guess who paid the author to write it? Vercel did.
The device in your user's pocket has a multi-core CPU, a GPU with hardware ray tracing, and gigabytes of RAM. It streams 4K video, runs machine learning models locally, and renders 3D games at 120fps. And you're paying a server to concatenate HTML strings for it. The client is not the bottleneck. It never was.
Documented, real-world billing incidents from serverless platforms. A static CDN-hosted SPA would have cost every single one of these people $0.
A single month of Vercel function usage. Ninety-six thousand dollars. Discussed on Hacker News.
Bill exploded to $46k even after tons of cache mitigation. Had to crowdfund the bill.
Someone spammed the app. Vercel billed for every single request. 56k+ accounts compromised.
~200 daily visitors. One traffic spike. "I thought it was a joke." It wasn't.
"Usage will be incurred for requests not recognized as a DDoS event" - including bots and crawlers. You pay regardless.
160GB attack in 2 hours on the hobby plan. No spending cap. No kill switch. The meter just kept running.
And if your use case is a landing page - which is the most common justification for SSR - Cloudflare Pages and GitHub Pages are free. Completely free. Unlimited bandwidth on Cloudflare. No invocations. No memory billing. No cold starts. No Vercel account needed. A landing page is static HTML. It has always been static HTML.
Want SSR? Have you tried PHP? It's been doing this since 2003. At least it was honest about it.- EVERY FRONTEND DEVELOPER, GOING IN CIRCLES
The industry spent a decade escaping server-rendered templates. Now it's back, with a $20/month npm package and a Vercel invoice. But here's the painful part - PHP actually did it better.
You edited a .php file and refreshed. That was the deploy.
No webpack. No turbopack. No whatever the build tool you are using. No 47-second cold build. No "wait for the edge function to propagate."
You saved the file. It was live.
A shared hosting plan on literally ANY VPS out there. Five dollars a month. Handled thousands of requests. Nobody got a $96,000 bill because someone refreshed their page too fast. The server was always warm - it was just sitting there.
PHP never pretended to be something else.
It was a template language. Server gets request, fills in variables, sends HTML.
No "hydration boundaries." No "use client". No wondering which environment
your component is running in. It ran on the server. That was the deal.
PHP 7+ with OPcache serves rendered HTML in under 10ms on a $5 VPS. Your Next.js serverless function cold-starts in 400ms, then takes another 200ms to render. The 2003 technology is faster than the 2024 technology. Let that sit with you.
PHP pages worked with JavaScript disabled. Completely. Forms submitted. Pages loaded. Data appeared. SSR with React requires JS for hydration - disable it and you get a broken, non-interactive shell that looks loaded but isn't.
WordPress, Laravel, Wikipedia, Facebook (yes, still). PHP didn't die - it just stopped being cool to talk about. Meanwhile Next.js developers are reinventing server-side templating and calling it innovation.
The difference is: PHP was a pragmatic tool that happened to render on the server. SSR in 2024 is an ideological choice dressed up as a performance story, sold to you by a company that you pay to run your own code. Per invocation.
Do anonymous users land on specific URLs from search engines? If it's behind a login - it doesn't matter what you answer here.
NO → STOPDoes each URL need unique metadata for SEO or social sharing? Generic og:title on every page doesn't count.
NO → STOPIs the content different per URL - not just per user? Personalised dashboards don't benefit from SSR.
NO → STOPIs your content public? Does SEO actually matter? Do anonymous users land on it? No? Then you don't need SSR. Ship a Vite app. Deploy to Cloudflare Pages. Go home.