Top
Best
New

Posted by bundie 13 hours ago

We moved Railway's frontend off Next.js. Builds went from 10+ mins to under 2(blog.railway.com)
131 points | 111 comments
miyuru 10 hours ago|
I just tried their domains page it took 10.8MB of data and took 2s for the DOM to be ready.

page actually took 17s to fully render with multiple shift changes.

all to render a domain search bar similar to google home page.

https://railway.com/domains

petcat 2 hours ago||
web dev is a sewer

All my projects are server rendered with jinja/minijinja, bootstrap, jQuery, and htmx when I need a little bit of SPA behavior on forms.

No builds, just static <script src= tags. Very fast and easy. I'll never recommend anything else.

nicksergeant 1 hour ago|||
I'm coming back to Django after a decade of experience with it post-0.96 and having moved to Next.js a few years ago. Going from 1,700 dependencies to 65 total with Django + Wagtail + HTMX.
pjmlp 59 minutes ago||||
When I am given the choice to pick a stack, it is classical Java and .NET Web frameworks, with minimal JavaScript.

On hobby projects same script approach without any kind of build step.

giancarlostoro 1 hour ago|||
With C#'s Blazor templating, you can ditch all JS logic, and use raw C# for all front-end logic, and have it all be transparently server rendered similar to how Phoenix has LiveView.

I also have experimented with HTMX and Django, and that seems to be a nice combination.

Everything is AJAX again.

CharlieDigital 21 minutes ago||
I've a C# fanboy, but Blazor's DX just isn't very good compared to say Vite.

There are many conditions under which the hot reload just straight up crashes out regularly.

toddmorey 1 hour ago|||
There are some easy optimizations wins for this page but none of the top ones are framework related. Maybe with the faster build times they can easily optimize images and 3rd party dependencies. As someone else pointed out, nearly half that data is unoptimized images.

For the curious, google's current homepage is a 200kb payload all in, or about 50 times smaller.

mattmanser 1 hour ago||
Who remembers sprite sheets? Does that give my age away?

I did an optimization pass for a client once where I got rid of a ton of the sprites but didn't have the energy to redo it all, so it just had huge sections that were blank.

Super snappy loading afterwards though.

ricardobeat 1 hour ago||
Yes, good times! With http2/3 they don't really matter anymore though, you get similar benefits from request pipelining.
anematode 2 hours ago|||
Dear lord. It's actually laggy for me to scroll on that page.
hazelnut 2 hours ago||
same here and I'm using a beefy MacBook (Apple M4 Max, 64gb ram). something is wrong with the front end code. there are a lot of animations, so my hunch would be that something goes wrong there.
anematode 29 minutes ago||
Moore said computers get twice as fast every 18 months. Web devs took that as a challenge.
gib444 2 hours ago||
The 3.57MB background PNG is hilarious [0]

[0] https://railway.com/dots-oxipng.png

picardo 1 hour ago|||
They could have saved themselves 3MB by converting it to AVIF.
rubyn00bie 1 hour ago|||
Ha! I normally wouldn’t find it quite so hilarious, but it’s a stylistically pixelated image. There’s just too much irony packed in there to not chuckle.
c-hendricks 32 minutes ago||
It's more halftone (might not be the correct term), not pixelated

There might be more irony in saying it's stylized pixels without realizing that the style of the image can't be replicated with blocks of the same size but I dunno, I'm not Alanis Morissette

ceritium 27 minutes ago||
Railway should try Rails
l5870uoo9y 10 hours ago||
I migrated the landing pages for my app[1] from Nextjs to Astrojs mainly because I was paying Vercel $20 per month for serving static pages(it’s 4 times more than I pay Railway for the Postgres database for the actual app and also 4 times more than I pay Cloudflare for hosting all my apps). I used AI for migrating and it took a few days only as the existing repo was used as “instructions” and it included some upgrades and improvements here and there.

[1]: https://www.sqlai.ai/

xandrius 2 hours ago||
Why is everyone so afraid to get a $5/mo Ubuntu/Debian VPS, install nginx and call it a day?

Then you can even run multiple projects off the same server.

kennu 1 hour ago|||
It means you take responsibility of maintaining the server forever, i.e. dealing with TLS certificates, SSH keys, security updates, OS/package updates, monitoring, reboots when stuck, redeploy when VPS retired, etc. Usually things work fine for a year or two and then stuff starts to get old and need attention and eat your time.
shimman 1 hour ago||
This is extremely easy with tools like dokploy tho... I use dokploy locally to manage all my VPSs + home server. Truly good stuff and I don't believe your quip at the end, it feels like poisoning the open source waters for consolidated anti democratic cloud platforms.

It's way way way way easier managing a basic VPS that can be highly performant for your needs. If this was 2010, I'd agree with you but tooling and practices have gotten so much better over the last decade (especially the last 5 years).

kennu 19 minutes ago||
Maybe you're right - I've never tried dokploy, but from documentation it sounds like mostly a deployment, monitoring and alerting tool. For me the problem has always been that once you get the alert (or something just stops working), a human needs to react to it and make things work again. In cloud services you mostly pay for them providing the human, and in self-hosting you're the human.

I can see though that today's AI models could eventually replace the human in the loop and truly automatically fix every possible situation.

c-hendricks 7 minutes ago||
I must be using the wrong cloud services. Whenever a part of our app goes down someone on the team still needs to respond to it.
skydhash 2 hours ago||||
No click-ops that way.
kami23 2 hours ago|||
I just did this over at Hetzner and Claude admins it for me so I don't need to learn the CLI or anything, describe the proxying I want, and it setups up a bunch of small side project pages for me.
kamikazeturtles 45 minutes ago|||
How do you use Claude to admin it? Does Claude SSH into the server and do everything or just write bash scripts?
xandrius 2 hours ago|||
For me I always default to UpCloud, great team and great services. From Finland!
christoff12 10 hours ago||
this is neat
tgdn 11 hours ago||
We went through a very similar migration. Had a Next.js landing page and a separate TanStack Router SPA - consolidated both into a single Vite + TanStack Start app. Same experience with build times and the architecture mismatch: our app is heavily client-side with real-time state, and fighting Next.js's server-first assumptions wasn't worth it. TanStack Router's type-safe routing and file-based route generation have been great.
SilverSlash 10 hours ago|
I hadn't heard of TanStack but a quick look at their website doesn't inspire confidence tbh. I mean, just take "TanStack Pacer".

It provides such things as:

```

import { Debouncer } from '@tanstack/pacer' // class

const debouncer = new Debouncer(fn, options)

debouncer.maybeExecute(args) // execute the debounced function

debouncer.cancel() // cancel the debounced function

debouncer.flush() // flush the debounced function

```

Why? Just why do you need to install some "framwork" for implement debouncing? Isn't this sort of absurdism the reason why the node ecosystem is so insecure and vulnerable in the first place? Just write a simple debouncer using vanilla js...

tacker2000 37 minutes ago|||
TanStack started out by providing a very good JS table library. Now they offer a Router, and some more libs. They are definitely an up and coming name in the JS space.
MajimasEyepatch 1 hour ago|||
Obviously it's more than just debouncing. https://tanstack.com/pacer/latest/docs/overview
Hendrikto 10 hours ago||
Two minutes is still way too long. What are we doing? This is ridiculous.
rishabhparikh 1 hour ago||
2 mins for a production deploy of an app with millions of users? Seems fine to me! How fast would you expect it to be?
BoredPositron 1 hour ago||
How does an apps user base affect its build time?
selfmodruntime 10 hours ago||
We're doing structural type checking for a language that wasn't developed with that in mind.
UserMark 11 hours ago||
I have a Nextjs heavy app which takes around 7 minutes currently. But I've been thinking of moving away from next for a long time now. TanStack seems to be a good fit. This gives me a bit more confidence in just doing it.
cryptonym 10 hours ago||
Is server-rendered HTML that bad for 2026 web or is everyone building complex apps?

Many of my customers insists on using Next.js or similar but when I browse their website I don't get the point. They are downloading and executing megabytes of JS while in-page interactions tends to be limited to few basic stuff. Never seen one of their project requiring offline mode. Maybe that's being able to easily replace a [FRAMEWORK] dev with another.

sosodev 1 hour ago|||
I think the unfortunate truth is the simplest. Web development has long been detached from rationality. People are drawn to complexity like moths to a flame.
pjmlp 57 minutes ago|||
It is fashionable, and Vercel has made a chain of partners that make Next.js/React the only official option to extend SaaS products.
nomel 10 hours ago|||
I made two serious attempts to get into front end web development, around 5 years apart. Both times I started with the most popular framework. Both times the most popular framework was something different before I even finished the project.

Looks like maybe things haven't changed much?

Kelteseth 11 hours ago|||
As a cpp developer I had to chuckle there. And I thought our compile times were bad.
abustamam 10 hours ago|||
I've been pretty happy with TanStack start for a medium-sized project. I would not know how its build time would compare to Next, but our similarly sized Remix (sorry, React router v7) app takes longer to build.

TanStack just has a nicer mental model overall and works great with TanStack query for cache I validation and stuff like that.

Remix was promising but there was so much ceremony in registering API routes and stuff. Tanstack just lets you define server functions arbitrarily with no ceremony.

Might be worth a spike and some tokens to ask Claude Code to migrate and test the build time and ergonomics.

UserMark 8 hours ago||
I've been on the remix on a previous project, I have to say that Remix was even worse. But that's probably of the setup with vite etc not being correctly done.
wilson090 10 hours ago||
Are you on turbopack? It's available on Next 16 and just took our build times down from 6 minutes to 2 minutes
cbovis 9 hours ago|||
Yep this is what's often misunderstood.

We also recently cut our build times in half moving from Webpack to Turbopack on production builds after jumping to NextJS 16. We'd already been using Turbopack in development for a while which yielded massive DX improvements related to performance. Production build times will drop further once Turbopack production build caching is stable.

Webpack -> Turbopack is the smart initial migration. I'd bet Railway went straight from Webpack -> Vite not realising that their real gains sat with the build tooling, not NextJS vs Tanstack.

UserMark 8 hours ago|||
Yes I'm on turbopack and running the latest version of Nextjs.
SilverSlash 10 hours ago||
A lot of the LLMs are very familiar with next.js and vercel is also aggressively building an ecosystem around their tooling for LLMs. So I wonder if this problem will only be exacerbated when everyone using LLMs is strongly nudged (forced) to use next?
ai_slop_hater 10 hours ago||
When you create a Next.js project from Vercel's template, you get an AGENTS.md that literally says "THIS IS NOT THE NEXT.JS YOU KNOW"
mcintyre1994 10 hours ago||
Is that because LLMs default to the older pages router? Or are they actually providing a different version of the library optimised in some way for agents?
ai_slop_hater 10 hours ago||
I think they just want LLMs to read the docs they began shipping[0] along with the library instead of using their own knowledge. For example, when I used Next.js a few months ago, models kept using cookies() and headers() without await, because that's how older Next.js versions worked, but modern Next.js requires await. I imagine there are more cases like this.

[0]: https://nextjs.org/docs/app/guides/ai-agents#how-it-works

HKayn 8 hours ago||
One rather prominent case would be Tailwind. v4 made breaking changes in the way Tailwind is set up, requiring different packages and syntax. However, if you ask an LLM how to set up Tailwind on your Vite & React app, it will confidently list the setup steps for Tailwind v3, which no longer work.

At times I would see people daily asking for help with their broken Tailwind setups, and almost always it was them trying to use Tailwind v4 the v3 way because some AI told them so.

lovehashbrowns 2 hours ago||
This was so unbelievably obnoxious when I first started trying to use Cursor last year at some point. Also because if you tried to not use tailwind the AI would eventually try to force it in anyway. I don’t know how it is nowadays but that was so frustrating and funny at the same time. And! When I setup Tailwind v4 ahead of time, got it working, and told the AI about the v4 changes, it would “correct” it to v3 anyway. Another fun “metric” was to ask an AI how to setup react because it was still recommending create-react-app though nowadays I’m sure it’ll be harder to find any model that still has that in its training set.
GrayShade 10 hours ago||
We've had shitty bloated websites before LLMs were a thing.
wouldbecouldbe 10 hours ago||
The irony is deploying NextJS on the railway platform is super slow since they use containers, on Vercel 2 min is like 12 min on railway, deployments on a vps are only like 20 seconds.

*I know this is just build time, so this is different then their deployement time

huksley 10 hours ago|
Not containers to blame but overprovisioning and how much resources dedicated to building. I am not sure how Vercel gets things build in literal seconds, but, hey, they are the creators of NextJS.

At DollarDeploy we building it also in containers but every build get 4GB/2CPU so it is quite fast but not as fast as Vercel.

pjmlp 55 minutes ago||
Turbopack, custom runtime infrastructure on top of AWS Lambda.
jspaetzel 11 hours ago|
Incredible that the builds were ever 10min. How far things have regressed.
More comments...