I Tried Heroku, Railway, and Render. Here's What I Actually Think.
I have deployed real projects on all three of these platforms. Not toy apps, not "hello world" tutorials — actual things people use. And I have opinions. Strong ones. Here they are, in order, starting with the one that made me the most frustrated.
⚡ Tired of platform fees? VPS from $5/mo — Use code LAUNCH2026 for 50% offHeroku: The One That Started It All (And Then Broke My Heart)
I genuinely loved Heroku in 2018. The experience of pushing to Git and watching your app appear on a real URL was magic. No server configuration, no SSH, just code. It felt like the future of deploying software.
Then Salesforce bought them. Then they killed the free tier. Then the prices started creeping up. The same app that I used to run for free now costs $25/month minimum if you want it to stay awake. And that is before you add a database. Add a Postgres instance and you are staring at a $50/month bill for something that generates zero revenue yet.
The worst part is not the price. The worst part is the cold starts. On the Basic tier, your dyno sleeps after 30 minutes of inactivity. Someone visits your side project at 2am and they wait 30 seconds for it to wake up. It is embarrassing. You get one chance to make a first impression and Heroku makes you waste it on a loading spinner.
My honest take: Heroku was great. It is not anymore. Move on.
Railway: The One That Almost Had Me
Railway showed up right when a lot of us were fleeing Heroku and it felt like a breath of fresh air. The UI is genuinely beautiful. Deploying from GitHub takes about three minutes. The free tier was generous enough to actually use for real projects.
I was excited. For about two months.
Then I got my first bill that was higher than expected. Usage-based pricing sounds reasonable in theory — you pay for what you use, right? But in practice, when your app gets a traffic spike or a cron job runs longer than usual, your bill spikes with it. There is no cap. One month I paid $40 on a project I expected to cost $10. The month after I paid $8. The unpredictability drove me crazy.
I also hit the persistent storage problem hard. Railway's volumes work but they are awkward. If you are storing user uploads or anything that needs to survive a redeployment, you end up duct-taping solutions together in a way that feels wrong.
My honest take: Railway is genuinely good for small, predictable projects. The moment your usage becomes unpredictable, the bill anxiety starts. I like the product, I just cannot trust the invoice.
Render: The One I Actually Stayed On the Longest
Render is where most of my Railway frustration eventually landed. The DX is great — not quite as polished as Railway but close. Deployments are reliable. The free tier is stingy but honest about it.
What kept me on Render was the predictable pricing. You pick a plan, you pay that, you know what is coming. No usage surprises. That alone made it less stressful than Railway.
But Render has its own problems. The free tier web services spin down after 15 minutes of inactivity. Same cold start problem as Heroku. The paid plans that stay awake start at $7/month for 512MB of RAM. That is not a lot of RAM. A real application chews through 512MB pretty quickly once you factor in the runtime, your dependencies, and any requests it is processing.
The managed database pricing is also brutal. Postgres on Render starts at $20/month. So a basic web app with a database is $27/month minimum. That is manageable but it stings when you realize a $5 VPS could run both the app and the database on the same machine for $22 less per month.
My honest take: Render is the best of the three for most use cases. Predictable pricing, good DX, reliable deployments. The costs add up faster than you expect, especially once you need a database.
The Thing None of Them Solve
All three of these platforms share a fundamental limitation that nobody talks about enough: they are serverless or container-based environments with ephemeral storage and function time limits. The moment you need a persistent background process, a WebSocket server, a cron job that runs for more than a few seconds, or a filesystem that survives between deployments — you are fighting the platform.
These are not edge cases. These are normal application requirements. A lot of developers end up using Render for their frontend and then running a $5 VPS for the actual backend because it is genuinely easier than working around the platform limitations.
What I Actually Use Now
For anything that is not a simple stateless API or a static frontend, I run it on a VPS. It took me longer than I would like to admit to make peace with the fact that "just ssh into a server" is not a step backward — it is the right tool for most backend workloads. The setup takes an afternoon the first time and then you have a server that costs $5-10/month and does exactly what you tell it to, persistently, without sleeping, without usage bills, without fighting the platform.
I still think Render is a good choice for specific situations. But for anything that needs to be always-on, stateful, or involves more than one process, a VPS is almost always the better call.
Done fighting the platform?
A $5 VPS runs your app 24/7, never sleeps, and costs less than Heroku's cheapest always-on dyno. Use code LAUNCH2026 for 50% off your first month.
Get Started