I never use SSR, and you shouldn't either
G'day, Internet (tips fedora obnoxiously)! Today I will save you so many moneys you wouldn't believe me at first. I'm the guy with 80,000,000 users of his side projects (see the live stats here) — and I know how to handle 10,000,000 requests per minute for days without paying a single dollar for hosting. If you asked me how I'd respond, "by not being stupid and misled by the large cloud that wants to charge you more!"
To give you some context, look at who supports Server-Side Rendering frameworks. Surprise-surprise: all your favorite cloud providers! They make it so "simple" to deploy the toy projects it makes your head spin. But what happens when more than 100 users start using your Next.js app? Oh, boy, open up your wallet and pull out your credit cards — gotta pay up to the cloud mafia, son! But do you actually need to pay hard-earned moneys to host your silly static website?
Of course, freaking not. Yeet the marketers and sellers. Yeet the stupid bullshitters that think they know how the world works and make you spend lunch moneys to showreel the five photos you have on your portfolio. Let me show you the way.
No, seriously. You get built-in CDN (lightning-fast delivery of the website bundle like the server is in the next bedroom from your user) and infinite DDoS protection (ha, like anyone would DDoS your silly websites!)
But CDN won't matter much if your bundle size is 2mb+ (when was the last time you checked your "light" initial load of a Next.js app?) That's why you need to use my frontend starter (free and MIT-licensed) that will make your website sub-20kb. When was the last time you've downloaded 20kb? Not mega-bytes, kilo. Yeah, right, that was when you opened my portfolio website. See how freaking fast that was?
But how do you skip paying? Read my other article:
Boom! You yeeted the paying and got infinite runway of your tiny startup. Congrats, but how do you do backend? Use my backend starter, and this is what you get:
import { Controller, Get } from 'amala'
@Controller('/')
export default class RootController {
@Get('/')
root() {
return 'You have successfully yeeted the big cloud, congrats'
}
}
"What the hell, I thought backend development was difficult?" Yeet the freaking cloud provider bill, rent a VPS on DigitalOcean (my referral link, you get like $100 when you register with it) for $4/month, install Easypanel and simply add the backend GitHub repository there! Or you can do it old-school style (I don't do this anymore):
But what about SEO? Get the freaking dummy that planted this idea into your head a large enough boot to get them to the Moon! Google crawlers have been running JavaScript code since 2015! At the moment of writing, this is 8 years of crawling!
But what about OpenGraph metadata? Use Prerender or any open-source alternative! It's so easy to set up it's stupid not to use it.
But what's my main beef with the SSR tech? It's unscalable.
Imagine tomorrow, your tiny Next.js app on Vercel is visited by 100,000,000 people. You'd think you won the lottery... NOT! What's that? It's Vercel mafia muscle knocking at your door, coming for both of your kidneys to pay the bills. Oh, never mind, Vercel was down, and none of the 100,000,000 could use your service. CORRECTION: Vercel didn't like your service, so they banned you.
They played us for the absolute fools. Static websites with client-only logic were not meant to be rendered centrally on a beefed-up server in Texas. Every one of your users has a machine that is more performant than what we used to put a human on the Moon! Why the hell do you not use it and instead spoon-feed your users the HTML generated on the server? Decentralize the computational load.
In conclusion, you shouldn't use SSR because:
- It gives you no advantages
- It makes your initial load HUGE
- It makes you pay exponentially more than $0
Now, I know I didn't change your mind because you have a religious belief. Take your SSR beliefs and shove them up the backside — if you have any space left there beside the giant bills that the big cloud is shoving there already.
Use exponentially light (disappearing) frameworks to build static web clients. Use simple backend frameworks and databases to set up server logic. Keep it simple. Don't repeat yourselves.
Don't pay Vercel. Exit the Matrix.
You're free.