frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Open in hackernews

You're Doing Rails Wrong

https://www.bananacurvingmachine.com/articles/you-re-doing-rails-wrong
219•treesenthusiast•2h ago

Comments

sublinear•1h ago
Meanwhile in real production environments...

Rails apps are rare and getting replaced. Most web apps are static builds where the tools listed are not used all at once and largely irrelevant outside the dev environment.

> John runs a single command. The app boots instantly, working forms, instant loading times, blazing fast navigation.

Same with node? npm run build && npm start

sgt•1h ago
Meanwhile in the real world - users do not care at all if it's a Rails app with refreshes or a React app. In most cases, the Rails app is actually better due to its simplicity.
sublinear•1h ago
Users don't have to care and the result is exactly the same. That's my point.
matpin•1h ago
The question I think we should be asking: Why? Why are we replacing everything with React and a bunch of other libs on top of it?

The front-end dev space feels like a cacophony of people all blurting out the same over-engineered stack. If your app is a few lists, a chart, and a form... Does it _reaaallly_ need React?

37signals is afterall running multiple successful products with Rails, and one of them is an email client.

I liked this video, maybe you will to: https://youtu.be/mTa2d3OLXhg?si=nhqGO4lPaAcP0mdm&t=3000

I don't agree with everything DHH says, but I think he has a really good point.

sublinear•1h ago
$1M ARR and 10k+ emails? Those are rookie numbers. There's nothing special about a rails app achieving that.

You'd be surprised what kind of far worse junk than anything we're talking about can scale the same or better and is ergonomic to another type of dev. This is all just bikeshedding.

matpin•1h ago
Software complexity is bikeshedding? I disagree. I think it's one of the most important things, especially for startups.

Of course Hey is still young... But I'm pretty sure you also know that they have Basecamp with 3M+ users. I mentioned Hey because I think it's a great example of sth more than lists/forms.

sublinear•1h ago
I think it's even less important for startups.

At some point, the business cannot be just one app or one tech stack. More devs will come aboard that disagree with the chosen tools and for very good reasons. You must work with the devs you have and the expertise they bring. Only the most out of touch CTO would avoid sunsetting legacy apps. There's the business side concerned with functionality, and then there's the hiring side concerned with implementation details. Both are key to getting the best devs and the best results.

skinnymuch•34m ago
It’s just Basecamp and Hey now right? I liked when they had more than 2 products as a reference for Rails apps. I still feel immense nostalgia for Basecamp 1 and Backpack It.

—-

I love Rails but disagree. Using InertiaJS and React, Vue, or Svelte for some of the front end/views makes too much sense. The new Rails Way should be optionally allowing this.

dismalaf•31m ago
> Rails apps are rare and getting replaced.

Wait until you find out how many YC startups use Rails...

Or how big Shopify is. Or how many other large companies use it. And how many startups use it but just don't talk about it because it isn't cool anymore.

jacktheturtle•1h ago
nice
wutangson1•1h ago
Indeed as the poet Dwayne Carter once said, “if I’m wrong, there is no right/ and if I’m wrong, there is Snow White”.
abtinf•1h ago
I think there is a much-better-than-merely-non-zero chance that the rise of coding agents will also mean a rails renaissance. All of the complexity identified in the article really gets in the way of LLMs.
Jolter•1h ago
It’s also the case that tried and true technologies work best for LLMs, since they have much more training on them.
abtinf•43m ago
Rails “convention over configuration” approach is probably also more LLM friendly. Convention can be trained into the model itself, whereas configuration takes up precious context.
kristianc•28m ago
So does dynamic typing to be fair.
DetroitThrow•1h ago
Ha, fun post, but these type of Rails posts would've been a bit more timely in 2015 rather than 2025.
Calavar•1h ago
The Rails development stack wasn't nearly as convoluted in 2015. A lot of this stuff leaked over from the JS ecosystem over the years
seandoe•1h ago
This point has been made so many times. Know your tools and use the best tool for the job.
codegeek•1h ago
The whole "web dev tooling fatigue" is so real.
rubiquity•1h ago
It was real over a decade ago. This is sheer stupidity and selfishness of bringing hobbies into their jobs. If it makes Front-End devs feel better, the "DevOps" world isn't much better.
LollipopYakuza•1h ago
What would be an comparable example in the DevOps world? (honest question, I am not really familiar with it)
rubiquity•53m ago
The entire CNCF landscape
jaggederest•53m ago
Well, many years ago you could use CFEngine, Puppet, or Chef, or Ansible, or Salt/SaltStack, and then later Terraform, Otter, Pulumi, and now we have Nix, and a Terraform fork as OpenTofu.

Not all of those tools do identical jobs but there's a ton of overlap within them and they all have idiosyncracies.

mystifyingpoi•52m ago
Imagine you want to deploy some microservices to Kubernetes. You can just create EKS/AKS/GKE cluster from the GUI, `kubectl apply` a few resources and create a load balancer to point your domain there. That will work. But...

You probably want to automate the infra creation (so Terraform, Pulumi, CDK...), you want to automate building (so GitHub Actions, Jenkins, Bitbucket Pipelines, GitLab CI...) and artifact storage (so Nexus, Arti, ECR, GHCR...), you want to automate deployment (so Argo, Flux, Helm, Kustomize...), you want to automate monitoring (so Prom stack, Datadog, many APMs, Splunk, Graylog, ELK... could easily name a dozen more).

Each part of the stack can easily bring a dozen different tools. I work in SRE and I use at least 40-50 tools for a mid-sized project. And this is "normal" :)

codeduck•31m ago
You are singing the song of my people.
IshKebab•26m ago
It's not so bad if you're doing it professionally because you pretty much set it up once and you're done. But yeah it's annoying for one-off projects or if web dev isn't your main job.

That said you can avoid it. I wrote a website using Fresh (https://fresh.deno.dev/) and that was the only thing I needed. Incredibly simple compared to the usual Node/Webpack mess. Plus you're writing in Typescript, and can use TSX.

I probably would set up ESLint if multiple people were working on the project. But you can definitely start without anything else.

mediumsmart•1h ago
I knew it! I love tinkering like a peasant.
deepfriedbits•1h ago
That's a fun domain name.
livando•23m ago
I caught that too. tip of the cap to the owner of that one.
peacebeard•1h ago
Honestly I consider this title format to be click bait.
Zanfa•1h ago
I sorely miss the sheer amount of utility that you can get from Rails out of the box for free compared to anything in the JS universe. Most JS devs don’t have the faintest idea how much they’re missing out on. Then again reinventing wheels is the JS way of life.
CobrastanJorji•1h ago
I really appreciate the power of JS's openness to writing entire new platforms. It's a great thing that everybody gets a chance to reinvent the wheels. It's great that many of these platforms actually just all more or less work if you use several of them at once. So extensible! So hackable! And you can host the entirety of them locally, so your whole site can be built in a permanently unchanging way? Wonderful!

But also, that kind of power needs a degree of restraint. You can do those things, but that means that it's on your team to prevent that one bored dev or that one guy who's just joined from a company who did things a different way from their instictive needs to add in new frameworks without a damn good reason.

sublinear•1h ago
The point of rewriting everything in JS isn't functionality, but portability.
shadowgovt•1h ago
I remember that era, of using vanilla rails with server-generated forms and POST requests leading to more forms.

... even ten years ago, it felt pretty dated. Has Rails grown some framework-supported tooling for web apps yet, or is that the utility we're talking about?

> Then again reinventing wheels is the JS way of life.

There's some truth to this. The underlying notion is "how much computation do you do server-side vs. client-side," and because browsers don't run every possible language, the shortest path to client-side behavior is in JS. So there's a lot of wheel-reinvention in that sense.

(I do see the notion of writing the code once to run in either context wax and wane. boardgame.io is a JavaScript framework for writing turn-based stateful games; it uses a specific authorship pattern to run the core behavior library both server and client-side, so clients can responsively predict what will happen while the server steps through the rules and updates the game state).

skinnymuch•58m ago
I’m using Rails with IntertiaJS which allows React Vue or Svelte for your front end views for Rails or Laravel (made by Laravel).

Rails is amazing compared to NextJS or Express + React for me. Getting a lot more done. Writing a lot less code. The Rails ecosystem is great for doing a SaaS + modern content site/app.

I was away from Rails with full stack JS since before the pandemic.

I don’t think that much has changed with Rails since like Rails 4 or 5.

Maybe this is a recency bias, but for my own work or any work where I can dictate or influence the tech stack of a modern web app, I’m sticking with Rails/Laravel and React or Svelte when modern frontend/views are needed.

I don’t think Rails or Laravel should even focus on views that much any more in Ruby/PHP.

I get the best of all worlds now and I don’t hate JS any more. In fact I have sort of fallen in love with React as well now that it is only doing what it should do and I want to learn Svelte.

zdragnar•1h ago
Ember.js was created by big names in the rails community, and made big promises of being a rails like batteries included all in one framework.

There's a reason it didn't really get the popularity the other frameworks got.

barumrho•1h ago
What was the reason?
nucleogenesis•1h ago
I’d guess that it’s because React came around and it was from Facebook so it got a lot of adoption? Maybe there’s some other reason, the comment you responded to seems to imply something anyway
jaggederest•57m ago
I wasn't deeply involved in the Ember.js ecosystem as a user or maintainer, but the impression I got was that, for frontend purposes, clearer abstractions and simpler code was much more critical than "batteries included" frameworks like Rails.

Basically, if Ember.js used abstractions that were better for, say, extremely complex applications, it was dead in the water, because most applications make their library decisions when they are small and relatively straightforward. The market for javascript top-to-bottom rewrites of extremely complex apps (where something with those more complicated abstractions shine) wasn't really large enough for it to become dominant.

I also found it difficult to reason with, even though I'm an experienced Rails developer used to spooky action at a distance in the framework. Something about troubleshooting on the frontend really made it more difficult.

PaulHoule•42m ago
The way I remember it around 2006 there were a few up and coming web development shops in my town that had their practice centered around Rails. That last half of the decade I was working on advanced RIAs like knowledge graph editors and decision support tools using systems like GWT and Silverlight that were not Javascript but had the same async comm challenges.

Circa 2010 those people who were so successful with Ruby had come to the conclusion that they couldn't sell RoR apps anymore so instead they were struggling with Angular -- not to do anything they couldn't with do Rails but rather they though customers demanded applications that looked like Angular applications.

React was a big hit because it was an "Angular" which people could actually deliver working applications with. Its strength I think it is that it addressed certain concerns but left other ones unaddressed such as the theory of async comm. If there is a simple mapping between the state of the application and the state that is represented in the React tree life is great but I look back at the applications I was writing in 2006 and it still looks like a regression.

What I like about it is that I can draw absolutely anything I can imagine with it, even 3-d virtual worlds

https://aframe.io/

Vue has a model which is closer to my mental model of web forms with first-class lists but I can see how to get into "you can't get here from there" situations.

I see the problem React solving is "how to compose an application out of components" and compared to WPF, JavaFX, and such, it's dramatically simpler, it's like a missing chapter out of Graham's On Lisp

Romario77•56m ago
I think it adopts some ruby conventions (one I discovered is the name in singular vs plural can mean different things like a collection and an item of a collection). I think there are a lot of conventions like this - you have to know.

I am not a UI developer and just needed to understand/debug something, it was not easy at all.

rco8786•1h ago
what reason?
runjake•1h ago
I wonder how much of that is "The JS universe just moves too damn quickly!" vs "Nobody wants Ember".

Seems like wycats is interested renewing his Ember work as of late.

moviedo•11m ago
My reasoning for not using ember was it’s steep learning curve and easier libs(angular 1, backbone, react) to work with at the time(~2012 to 2014). Honestly, react wasn’t very big during this period, it was Angular that truly dominated.
jamesu•1h ago
I find you get a lot of utility, but long-term you need to keep updating your codebase and follow whatever trend rails is currently on.
cwillu•56m ago
Honestly asking, but did you forget to add a “/s”?
bdcravens•52m ago
It's useful, but not necessary. Plenty of 10+ year old Rails apps in the wild. Github was running Rails 2.3 until 2018 while the entire software world that depended on it didn't fall apart. Even if you follow best advice and update your dependencies for security sake, you can effectively run the same code using the old "trends" (aside from things like safe parameters, etc).
mvdtnz•19m ago
Large rails apps tend to be on older versions not because they're so very stable but because Rails upgrades are a nightmare at scale. Even point versions have lots of undocumented breaking changes. There was a lot I didn't like during my 4 years as a rails developer but upgrades were the very worst of it.
b_e_n_t_o_n•26m ago
JS has multiple full stack frameworks similar to Rails. There is even a framework called Sails...

The problems people solve with JS are different from the ones solved with Rails. Which is why the frameworks look different.

Zanfa•5m ago
> JS has multiple full stack frameworks similar to Rails. There is even a framework called Sails...

But it doesn’t. Rails is not just a full-stack framework. It’s the entire ecosystem of gems that magically just work together. What JS has is like the Temu version of Rails.

Alifatisk•1h ago
I think some people are so fixated with keeping up with the latest tech and prepare their project to scale infinitely that they have forgotten how good barebone setup is, especially with Rails. I get it, it's boring, unentertaining and might be understimulating to some. But it just works, Rails is truly batteries-included. Stop with the overengineering
mylons•1h ago
i came back to rails after a very long hiatus to help a company bring a 10+ year old rails project to Rails 8.x.x from Rails 5. It took a bit to get back in the saddle, but every new project I’ve started since that’s a SaaS/CRUD app of some kind it’s in Rails.

I’m finally at the age where productivity is infinitely more important than anything else.

skinnymuch•44m ago
A few weeks ago because there were 2 HN comment sections shitting on NextJS endlessly, I decided to go back to Rails.

I have ported a chunk of my likely last full stack JS project over to Rails with AI vibe coding everything as a reference for me to redo it again with AI but not vibe coding.

Absolutely amazing work. About 40% of that NextJS app was vibe coded and the process of undoing the excessive and verbose code was depressing me.

The Ruby and Rails code is simple and understandable and a fraction of the lines of code.

Last sentence exactly. I am using IntertiaJS for some of the frontend and I finally don’t dislike JS any more. React is amazing when it’s only a view library.

mylons•23m ago
are you dabbling at all in the “no build js” stuff that Rails 8 supports? i did it for that corporate project and their deploy time went from 30 minutes to 5 minutes. it’s also such a headache reliever but removing most of the confusing aspects of the JS ecosystem for me.
xutopia•1h ago
I agree with the sentiment on this. I'm building applications that are easily converted to native mobile apps with minimal code and engineers left and right are telling me I should use 60 different libraries and frontend tools to reach the same goal.

Meanwhile Rails is becoming easier and easier to run complex apps with much smaller teams.

the__alchemist•1h ago
This scenario is worse now than it used to be, but the concept isn't new. I remember wanting to tear my hair out learning Django 15 years ago: The tutorial had you install Vagrant, VirtualBox, and Chef in specific versions, all of which were broken and/or a pain to install!

I still use and love Django, and don't bother with that stuff. Django Rest Framework was another distraction.

wackget•1h ago
Am I the only one who still thinks any kind of build process does not belong in web development?

If I'm making a typical website, all I'm using is a few PHP files, a single CSS file and maybe some JavaScript.

There are no build steps. No minification. No compilation. No frameworks.

I just can't understand even using Rails for web dev.

viccis•1h ago
>I just can't understand even using Rails for web dev.

Some people are building real web applications, not PHP toys. I get not wanting to keep up with the latest JS insanity, but simple MVC frameworks are popular for a reason.

pphysch•1h ago
A build process totally makes sense -- for WASM apps.
poorman•1h ago
Stimulus and Hotwire are the "rails way" now. I've read the docs and they still confuse the hell out me. Seems like you're reinveting your own javascript components over and over again.

In my opinion Rails 8 + Intertia.js + React so much less "reinventing the wheel" (especially if you use shadcn components).

baggy_trough•1h ago
Personally I'm liking Rails 8 + Tailwind + Stimulus. No node.
0xblinq•57m ago
That's the only good reason to use Hotwire. Being a JS hater.
dismalaf•36m ago
You know Stimulus is for writing JS, right?
skinnymuch•54m ago
Are you familiar and adept with React/Vue/Svelte? I haven’t looked at Stimulus or Hotwire much yet. Just picked Rails up again a few weeks ago. Tailwind and Shadcn (or similar ui) are standard for me now.
baggy_trough•47m ago
No I'm not. I've been happy with a server side rendering approach with a few interactive sprinkles from Stimulus. Tastes great, less filling!
rco8786•1h ago
I'm a huge rails fanboi but the state of Stimulus and Hotwire make me sad. The concepts are awesome, and I think the execution might even be good. But the documentation is so incredibly horrible that I have a hard time even getting started, and I can't learn enough about it to answer the question of whether or not using it in any given project will end with me painted into a corner.
0xblinq•58m ago
This. We replaced Hotwire frontend with Inertia and it's night and day.

Unless you work 100% alone (and for a smallish project) hotwire leads to a real mess nobody can work on way before anything else I've ever seen in my life.

padseeker•36m ago
this ^^^

I've used turbo/stimulus/hotwire. It's best suited for STATELESS interactions withe the browser/web page. The problem is not all desired user experiences and use cases are stateless. And the ecosystem for hotwire is a minuscule fraction of all the other popular js frameworks.

If you're searching for inventory available its perfect. However if you want to update one thing based on the most recently touched input it becomes more complicated and in all honesty more trouble that it's worth.

Honestly if you're a solo Rails dev, use whatever you want. However the React ecosystem, and really all of the other popular JS ecosystems (vue, ), are very strong and you have so many available options. Stimulus is 2 steps back from jQuery, it inverted the Event delegation pattern. No one else outside of the rails community is using it.

hahahacorn•22m ago
I think the fundamental misunderstanding (for the majority of devs who dont "get hotwire") is that you can very often delegate the statefulness of a given interaction to A: The Server via the database or B: The Browser via localstorage.

If your page can be written with it's state being "reasonably" delegated to one of these two, hotwire is _all you need_. (To be clear, it's more common that you're just doing a bunch of work to duplicate state that already exists in the database/on the server, or handled natively by the browser, and by "delegate" I mean don't-duplicate-for-no-good-reason.)

There are many (but fewer than those who "don't get" hotwire believe) cases where it's more of a headache to delegate state to A or B. In which case you should absolutely pull in react/vue/<insert_js_framework>/etc. My go-to is: https://github.com/skryukov/turbo-mount + react because it minimizes it's footprint on the "omakase-ness" of your rails app.

conradfr•18m ago
I use Stimulus with Symfony for small interactions and I quite like it, small and well designed api IMHO.

Didn't try the whole Turbo/Hotwire thing though. I usually use Vue for complex pages / need of state.

b_e_n_t_o_n•1h ago
If you're gonna rant about the JS ecosystem at least get it right. You can set up a Vite + React + Tailwind setup with two commands

   npm create vite
   npm i @tailwindcss/vite tailwindcss

If you want automatic code formatting and linting install biome, that's one more command.

You don't need to think about React Refresh or babel or typescript, it's all handled by vite. I've never even seen a .babelrc file. And why does the author add husky?

Like, if you want to criticize JS fine, but chose valid criticisms. This just sounds like the author hasn't actually used modern js.

jonhohle•1h ago
Those two commands required earlier commands to install node and npm.
b_e_n_t_o_n•1h ago
NPM comes with Node. And obviously you need to install node, just like you need to install Ruby....
marksomnian•59m ago
And `rails new` required me to install Ruby and Rails. I'm not sure what the point you're making is.
hu3•1h ago
What about the backend? Rails covers that, your solution doesn't.

I guess I should draw the rest of the owl.

b_e_n_t_o_n•1h ago
My point is that you don't need half of the things the author thinks you need for a JS frontend with Vite, TS, React, and Tailwind....
bguthrie•1h ago
I've been writing Rails code since 2007. There's a reason the stack has gotten more complicated with time, and virtually no team has ever done it right by this definition.

The trouble with an omakase framework is not just that you have to agree to the initial set of choices but that you have to agree with every subsequent choice that's made, and you have to pull your entire dev team along for the ride. It's a very powerful framework, but the maintainers are generally well-meaning humans who do not possess a crystal ball, and many choices were made that were subsequently discarded. Consequently, my sense is that there are very few vanilla Rails apps in the wild anywhere.

(I'm old enough to remember what it was like to deploy a Rails application pre-Docker: rsyncing or dropping a tarball into a fleet of instances and then `touch`ing the requisite file to get the app server to reset. Docker and k8s bring a lot of pain. It's not worse than that was.)

timr•1h ago
> I'm old enough to remember what it was like to deploy a Rails application pre-Docker: rsyncing or dropping a tarball into a fleet of instances and then `touch`ing the requisite file to get the app server to reset.

If this is what you remember, then you remember a very broken setup. Even an “ancient” Capistrano deployment system is better than that.

darkwater•55m ago
Capistrano lost its meaning when autoscaling went mainstream (which was around 15 years ago now), yet people kept using it in elastic environments with poor results.
timr•53m ago
The parent wasn’t describing an autoscaling deployment system.

Rails has a container-based deployment if you actually need that level of complexity.

darkwater•42m ago
GP was talking about pre-docker deployments. You could totally deploy immutable Rails AMIs without both Docker and Capistrano.
asplake•51m ago
Or there was “git push heroku main” or whatever it was back in the day. Had quite a moment when I first did that from a train – we take such things for granted now of course...
mystifyingpoi•1h ago
> rsyncing or dropping a tarball into a fleet of instances

Could you elaborate? Doesn't sound like a big deal.

tra3•57m ago
The primary benefit of containerization is isolation. Before docker, you'd drop all your code on a shared host so you had to manage your dependencies carefully. Specifically I remember having to fight with mysql gem a lot to make sure that there no conflicts between installed versions. With docker, you build your image, test it and ship it.
kenhwang•21m ago
We had vm-per-app before docker, so it was still build the image, test, and ship, but it actually had everything it needed inside the vm.

Docker helps with the portability due to it's ubiquitous it is now, but it's not like the vm requirement went away, the docker image still generally runs in a vm in any serious environment, and a lot more attention has to be paid to the vm:docker pairing than the previous hypervisor:vm pairing.

boredtofears•4m ago
I haven't shipped to a shared host since the 00's. We deployed to isolated VMs a decade before docker.
maxlapdev•50m ago
It is very funny to me that the sibling comment calls this "a very broken setup" and for you "it doesn't sound like a big deal".

It's all about perspectives, or you really just never had to deal with it.

The happy path ain't a big deal. But think of the unhappy ones:

* What if a server gets rebooted (maybe it crashed) for any reason anywhere in the process. Maybe you lost internet while doing the update. Were you still dropping tarballs? Did the server get it? Did it start with the new version while the other servers are still on the old one?

* What about a broken build (maybe gem problem, maybe migration problem, may other). All your servers are on it, or only one? How do you revert (push an older tarball)

A lot more manual processes. Depends on the tool you had. Good tooling to handle this is more prevalent nowadays.

mystifyingpoi•40m ago
I use Kubernetes for almost everything (including my pet projects) and I see the value it brings, even if for increased complexity (although k3s is a pretty good middle ground). But none of these things you mentioned are unsolvable or require manual intervention.

> What if a server gets rebooted

Then the rsync/scp would fail and I would notice it in deployment logs. Or it should be straightforward to monitor current version across a fleet of baremetal.

> Maybe you lost internet while doing the update

True, but even Ansible recommends running a controller closer to target machines.

> What about a broken build

That's what tests are for.

> maybe migration problem

That's trickier, but unrelated to deployment method.

> How do you revert (push an older tarball)

By... pushing an older tarball?

codeduck•35m ago
This is why I've always had a soft spot for Sinatra
exasperaited•1h ago
I just woke up from a nap and I see "You're Doing Rails Wrong" and then I wonder... is it still 2008, did I imagine Brexit and why does my macbook's screen look soooo good?
languagehacker•1h ago
Any project that doesn't need 30 or more devs with various specialties working on it all at the same time doesn't need the complexity that frontend/backend separation introduces. I learned this the hard way through years of over-architecting 1-2 person projects as a freelancer. Nowadays, it's just Django with a little bit of Tailwind on top.
LollipopYakuza•1h ago
I second this.

In most industries, your clients won't care if the software relies on an ultra scalable architecture split in microservices or a monolith + PostgreSQL.

thinkingtoilet•56m ago
In every project I ever do, I start with a server and a postgres database. Every addition to that architecture has to be rigorously defended. So often people add complexity for absolutely no reason. Once you actually start scaling then you can worry about the problems that you think you might have.
fhd2•54m ago
I was hiring for a Django dev earlier this year. For the case study, almost all of them built a thin API backend in Django, and a React monster for the frontend (and in some cases, pretty much all the business logic). When asked about their motivations, almost nobody could explain it.

We hired one of the very few people that just used SSR.

b_e_n_t_o_n•25m ago
What if you're building a highly interactive front end?
JodieBenitez•2m ago
That might be a case where you want a SPA + backend API. But the point is that in many cases you either don't need a highly interactive frontend or the frontend is not that interactive (ie. progressive enhancements work).
michaelteter•59m ago
Or, just use Phoenix with LiveView.
skinnymuch•42m ago
The ecosystem isn’t there with Phoenix unfortunately. It’s why I stick with Rails or Laravel.
efsavage•58m ago
You're Doing Rails. Wrong.

(sorry, it was just too obvious)

jjgreen•41m ago
Hard disagree, but funny.
treis•56m ago
This is the fundamental weakness of Rails. You can't just "do Rails" because the UI out of the box isn't usable. You've always had to add something on whether that was Bootstrap 10 years ago or React today. It's always been a bolt on and always has been changing.
valevk•53m ago
Which framework is actually just „do X“? Good frameworks should be easily extendable with other technologies.
bdcravens•40m ago
That's a weakness, and strength, of all server-browser architectures. The world (or Apple) decided that a unified front and backend (ala Flash/Flex) wasn't optimal.
Zanfa•14m ago
I haven’t really found this to be true. You probably wouldn’t want to build Figma in Rails, but the average SaaS CRUD app is a perfect fit for Rails with a sprinkling of Turbo Frames.

It’s usually the lack of non-React knowledge to know what does or doesn’t require React.

mkhalil•51m ago
This article has been re-written for over a decade. The so-called "complexity" is just a list of tools that each solve a specific problem.

Tooling isn't the problem: The complexity is inherent to modern web development. You see similar "hidden" complexity in other frameworks like ASP.NET, and GUI desktop frameworks as well.

If you're using Rails as an API backend with React handling the frontend, it's almost a completely different application architecture than a traditional Rails monolith. So the list of tools (Vite, React, Prettier, etc..) is almost for a completely different problem (again, unless you use Rails for FE; if you want to use Rails for Frontend, use Rails for Frontend; not a fan of the mash-up at all.)

The real issue is learning methodology: A lot of developers today start their careers with frameworks (point 4) before learning the fundamentals of the web (points 1-3).

HTML for markup.

CSS for styling.

Learning server-side logic (e.g.: <forms> can POST and can return a completely different page at the same URL) and databases for dynamic content.

Then, JavaScript for interactivity.

Embrace the tools: Each tool on the list (Vite, Tailwind, etc.) exists for a reason, and they're all necessary for a modern web application. Saying there are "too many" is an amateur take on the reality of the ecosystem.

wrs•41m ago
I think the point of the article is that it's likely you didn't need a "modern web application" in the first place, because vanilla Rails would work fine. But you won't know that if you don't bother understanding the choices made in vanilla Rails.
mosselman•32m ago
Complexity is not inherent to web development. If anything it is now possible to get more done with less.

Hotwire is sort of vanilla rails and it enables you to create very modern experiences with content live updating through web sockets and it is basically a one liner to setup.

The de facto way to deliver JS in rails has also become far simpler through import maps. There is no build step for that. Tailwind support is a flag away when generating a new rails app and is super simple.

Deploying has even become simpler through kamal.

So no, complexity is not inherent to web development and the article is wrong in marking Hotwire as “complexity”. If anything it makes it simpler.

I agree with your point about learning, but learning shouldn’t be about learning more tech. The learning should be how to get more done with less. Anyone can use 20 different programming languages and servers, the skill lies in using 4 of them to do the same and outperform a thousand person team with just 3 devs.

mkhalil•9m ago
>> "Complexity is not inherent to web development" >> "Hotwire is sort of vanilla rails and it enables you to create very modern experiences with content live updating through web sockets and it is basically a one liner to setup."

My point was that web development isn't complex, but the "modern web development" is.

Your "Hotwire is sort of vanilla rails" statement is a perfect example.

What you think is simple, is a big list of tooling, web-sockets included, integrated together. The end result is using it might be a "one-liner", but that doesn't mean it's simple. And that's OKAY. Because simplicity should be the standard and adding things (like sockets for live updates) be something you explicitly enable (with modern web-apis, its definitely simpler to it used to be, but that doesn't mean its simple)

the__alchemist•32m ago
Counterpoint: These tools add complexity, and you don't need them. If you step out of the system and look in, you see madness. The problems they solve are created by other tools; they are problem-generating systems.
yakshaving_jgt•29m ago
> The complexity is inherent to modern web development

No it isn't.

> they're all necessary for a modern web application

No they aren't.

> Saying there are "too many" is an amateur take

Yikes.

JodieBenitez•12m ago
> and they're all necessary for a modern web application.

Modern doesn't mean much.

dakiol•4m ago
> Tooling isn't the problem: The complexity is inherent to modern web development

> Embrace the tools: Each tool on the list (Vite, Tailwind, etc.) exists for a reason, and they're all necessary for a modern web application. Saying there are "too many" is an amateur take on the reality of the ecosystem.

Depends. One can still write production-grade web applications with way less dependencies. You can write a Golang web server with minimal dependencies, keep writing CSS "like a peasant" and perhaps use jQuery in the client-side for some interaction. What's wrong with that? If you hire a strong team of engineers, they will be pleased with such a setup. Perhaps add Makefiles to glue some commands together, and you have a robust setup for years to come.

But some engineers feel that counterproductive. They don't want to learn new things, and stick to what they know (usually JS/TS); they think that a technology like CSS is "too old" and so they need things like Tailwind. Makefiles are not sexy enough, so you add some third-party alternatives.

sdotdev•46m ago
what’s interesting is how every few years we circle back to the same conversation with new names for old problems. the industry keeps rebranding the same complexity as innovation, but it’s mostly the same tension between abstraction and control. every new framework promises to simplify things, but each simplification hides an entire new layer of assumptions that developers eventually have to learn anyway. maybe that’s just the cost of building software at scale now: we’re layering human preferences and historical context into the codebase as much as we are logic. in that sense, modern stacks aren’t complicated because of bad design choices, they’re complicated because they’re living artifacts of collective compromise.
dismalaf•39m ago
I agree with this article. I'm using vanilla Rails 8 with all the defaults and it's easy, fast, simple to use.
excalibur•33m ago
What happened to Ruby, is Ruby not cool anymore?
ksec•32m ago
Well, I know there are people / apps that need React. I am hoping Bun would replace half if not all of those listed. You just use Bun with Rails.

There were talks on twitter about how the old days of using PHP and Perl with FTP just works.

saretup•31m ago
That’s what she said
madethemcry•29m ago
> Just F#$%^& use Rails.

No, just no. Or maybe it depends. But if you want to provide a lovely, modern, interactive frontend, you can't just blindly ignore what evolved on the frontend ecosystem for the sake of your purity. It's arrogant and dismisses all the people who love to craft enjoyable frontends.

Following some thoughts about how to merge Rails and modern frontend approaches and how Inertia finally solved that question for me.

--

I consider myself more frontend focused but I have a deep love for Rails and some advanced experience, for sure less than in frontend though.

I tried hard following the route of hotwire, stimulus and friends knowing that DHH and the rest of the community loves those JS patterns.

Creating reusable stuff, cresting just a little bit more complex components, sharing those components through the UI.. it's just horrible cumbersome, repetitive and far, far away from all those best practices and patterns we've developed in the frontend.

I tried creating a diff viewer with comment functionality with stimulus. It worked, I was kind of proud but it was cumbersome the define components and share functionality. Maintainable? No way.

Then I wanted to create a double list where you can drag items from left to right. It was the hell to include css, js, manage the hierarchy and then I just gave up. I was demotivated by the constant nagging of my brain how much more simple this would have been with a single, simple react/vue component.

Then I went the wrong route: Rails API plus React. That's just giving up on most of what Rails gives you and I wasted ton of my time creating an additional auth layer on top of the session that Rails would give me. And then the horrible duplication of your state. One in Rails and then the same stuff in React. The same nagging in my brain now told me: That's wrong.

And then I found the holy grail of modern Rails development: Inertia.js. I heard about it very often but never at the right time. So I forced myself to try it out.

And here I am: I use Rails with Inertia Rails. I have the full pleasure of Rails but I can create React components that represent any page I like to write in React. Inertia will serialize and pass in the data from my controller. So no state. Just pure UI building.

If you love Rails and the frontend: Try out Inertia. It feels like I'm using the best of both worlds. The layer inertia creates is very shallow and optional. So the risk is low.

mrshark•29m ago
Hot take, rails is much better as an API only, and do something else for serving your frontend. It comes down to the fact that there is no clean and bulletproof solution for building responsive websites anywhere.

You could do the exact same breakdown describing the pieces of rails you need to learn to accomplish the same things, just because they are more separated libs in the front-end doesn't mean the problem is simpler if you solve it with rails' chosen tools vs the popular npm solutions.

ksajadi•29m ago
This is cute but fails to mention how many times in the life a rails application we have to go from bundler to webpacker to sporkets to Propshaft and importmaps to jsbundling. Or from autoloader to zeitwerk or from Turbo to Hotwire and god knows what else.

Take a look at ads on rails newsletters and how many of them are professional services to upgrade your rails app.

johnfn•24m ago
> (John runs a single command. The app boots instantly, working forms, instant loading times, blazing fast navigation.)

Sure it does. If you're not using Vite, how are you bundling? Oh, you're not bundling? I guess that means you're not using TypeScript? Interesting, how do you catch errors? Oh you just let things crash in production? How do other engineers understand the intent behind your code? Oh they don't I see. If you're not using React, what are you using? Vanilla JS? Have you considered that it's a statistical fact that every single person who has said "I don't need React, it's just a big complex mess, I'll just invent it myself" ends up creating an informally-specified, bug-ridden, slow implementation of half of React? Oh you don't use Prettier? OK, how are you formatting your code? Oh you're not, it's just a giant mess? Oh you're not using ESLint, interesting, how do you keep code consistent across your team? Oh that's not a concern? Hm.

Almost every technology in the article exists for good reason, and solves a real issue[1]. Maybe not an issue the author has encountered, but the author shows no understanding of the issues they are solving, and the final "punchline" implies that anyone could just toss all this tech out and improve their developer experience. "Learn the rules before you break them" applies here.

This is an uncurious article which mocks at abstractions rather than taking the effort to understand why they exist.

[1]: OK, I do think some abstractions are more trouble than their worth. But why did the author choose all the reasonable ones, like React? Why not dunk on Angular, I mean come on!

kelvinjps10•22m ago
I think the point of the article it's that these tools are redundant since rails a full stack framework, already has the features to help you make a web app
boplicity•11m ago
The problem is these issues are only issues for a certain subset of software. Many, many pieces of software don't need to be very robust, don't need to be developed by a team at all, and the occasional runtime bug is well worth the literal cost of maintaining compatibility with dozens of packages.

Most projects are very simple CRUD apps anyways.

philip1209•22m ago
Related: "Why Ruby on Rails still matters" https://news.ycombinator.com/item?id=43130546

I wrote that post about a similar sentiment - that lag is a feature instead of a bug in Rails framework development.

fidotron•22m ago
JavaScript development has taken on many of the properties of a religion. npm is regarded as some sort of fundamental truth; there are incantations you are supposed to make regularly in order to stay in good standing with the powers that be; there are irregular, poorly communicated and sudden changes in dogma which can completely change the nature of the incantations where failing to go along will lead you to being excommunicated from the community; all guided by an overarching fear of doing anything without consulting the library of pre-existing but ever changing solutions prepared for you by some priesthood that overrides all need to make decisions yourself.

And then they think anyone not in the cult is strange.

andix•22m ago
I just use most of the tools that are mentioned. They just work, if you pick the right bundler (Vite is a good pick). It's like Linux, it requires hundreds of packages/tools to run, and nobody complains about that.
nonethewiser•18m ago
I get the spirit of the dialogue. And feel quite similar. But I have some quips over things that are blatantly misconstrued:

- you wouldnt use vite then also add next or remix

- if you're using vite, next.js, etc. you're not going to need to add nor configure babel

- vite, next.js, etc. starters come with pretty much all of these separate things he mentions included. typescript, prettier, eslint, tailwind, react etc. You know, like a batteries included framework.

Apple Faces Probe in France over Voice Recordings Made by Siri

https://www.bloomberg.com/news/articles/2025-10-06/apple-faces-probe-in-france-over-voice-recordi...
1•1vuio0pswjnm7•50s ago•0 comments

Eliminating contrails from flying could be incredibly cheap

https://www.sustainabilitybynumbers.com/p/eliminating-contrails
1•K2L8M11N2•1m ago•0 comments

Ask HN: How do you use AI in industrial environments?

1•diavolodeejay•2m ago•0 comments

What Are PolyForm Licenses?

https://polyformproject.org/what-is-polyform/
1•birdculture•2m ago•0 comments

Writing an LLM from scratch, part 21 – perplexed by perplexity

https://www.gilesthomas.com/2025/10/llm-from-scratch-21-perplexed-by-perplexity
1•gpjt•3m ago•0 comments

The Future of Mankind: Some Reflections

https://thoughts.wyounas.com/p/the-future-of-mankind
1•simplegeek•5m ago•0 comments

A Noble Family – The First English Translation of a Chinese Classic

https://lluminate.substack.com/p/the-story-of-a-noble-family
1•bmedwar•6m ago•1 comments

Sora Extend: Generate Sora 2 videos of infinite length

https://github.com/mshumer/sora-extend
1•rexbee•7m ago•0 comments

Solar and wind outpaced demand growth in the first half of 2025

https://ember-energy.org/latest-insights/global-electricity-mid-year-insights-2025/
1•doener•7m ago•0 comments

Construct an image from a projector's PoV (and more tricks with light transport) [video]

https://www.youtube.com/watch?v=TcXMf0mTh94
2•gessha•10m ago•0 comments

Photographers are losing their jobs faster than software engineers

https://photowand.ai/packs
2•fengjiabo2400•11m ago•1 comments

The Publishing Industry Has a Gambling Problem

https://thewalrus.ca/the-publishing-industry-has-a-gambling-problem/
2•Caiero•12m ago•0 comments

A Long Screed About AI Art, by Matthew Inman

https://theoatmeal.com/comics/ai_art
3•ChrisMarshallNY•13m ago•1 comments

Sora Studio: Use the New Sora 2 API

https://soravideo.dev/
2•ananddtyagi•13m ago•1 comments

Mobile EV Chargers Are the Gas Cans of the Future

https://www.jalopnik.com/1987962/mobile-ev-chargers-gas-cans/
1•rntn•13m ago•0 comments

The murky economics of the data-centre investment boom

https://www.economist.com/business/2025/09/30/the-murky-economics-of-the-data-centre-investment-boom
4•1vuio0pswjnm7•15m ago•0 comments

Clear and TSA Race to Speed You Through Airport Security

https://www.wsj.com/business/clear-and-tsa-race-to-speed-you-through-airport-security-b279c0ae
2•JumpCrisscross•16m ago•0 comments

Google's Requirement for Developers to Be Verified Threatens App Store F-Droid

https://www.techdirt.com/2025/10/07/googles-requirement-for-all-android-developers-to-register-an...
5•beardyw•16m ago•0 comments

Why Silicon Valley might start sweating the shutdown soon

https://www.politico.com/news/2025/10/07/how-a-prolonged-shutdown-could-hit-silicon-valley-00595833
3•JumpCrisscross•17m ago•1 comments

WinRing0: 20-year-old foundational library that's insecure by design [video]

https://www.youtube.com/watch?v=H_O5JtBqODA
2•12_throw_away•18m ago•1 comments

The Volvo 240 and its redblock engine

https://www.youtube.com/watch?v=rzss5Z-ozz0
1•nialse•18m ago•0 comments

Show HN: Gotask, a simple task manager CLI built using Golang

https://github.com/arjunsajeev/gotask
3•mirrormaster•18m ago•0 comments

Rescathena – Building a transparent donation network for animal rescue

https://rescathena.com/
1•juanmiruadev•18m ago•1 comments

Immortality Factory – Free Factory Automation Game

https://immortalityfactory.com
1•heihieih•19m ago•0 comments

SSDD: Single-Step Diffusion Decoder for Efficient Image Tokenization

https://github.com/facebookresearch/SSDD
1•montyanderson•19m ago•0 comments

Turkey's flying car starts to fly off the shelves

https://www.agbi.com/transport/2025/10/turkeys-flying-car-starts-to-fly-off-the-shelves/
1•pbahra•23m ago•1 comments

You can just open source things

https://cased.com/blog/2025-10-07-you-can-just-open-source-things
3•connorsears•23m ago•0 comments

Show HN: Convert between Mermaid, draw.io, and Excalidraw diagrams

https://diagram-bridge-project-new.vercel.app
1•Redkee•23m ago•0 comments

Context Is Everything Excerpt

https://theahamap.com/read/context_excerpt
2•mooreds•23m ago•0 comments

HSGM: Hierarchical Segment-Graph Memory for Scalable Long-Text Semantics

https://arxiv.org/abs/2509.18168
2•PaulHoule•26m ago•0 comments