Hacker News new | ask | show | jobs
by lazlo_kovacs 763 days ago
I never understood the appeal of React Router, the simplest library to get rewritten 5+ times, each time forcing their users to learn a new way of doing routing. It never worked that well either in my experience. The authors seemed addicted to churn and complexity.

I do enjoy Remix though. It works well and the various stacks help you get started pretty quickly. So why take the framework that's well respected and loved, and combine it with the library that's known for its churn? That seems like a lose-lose. You create yet another change for people still on React Router and lose the Remix brand.

Did the Vercel people manage to execute a psyop on Remix? This doesn't feel like the move.

8 comments

I'm sure the React Router/Remix guys are smart, but I don't get the impression that they actually build and maintain real world websites, and the closest they get is a month or two of consulting. They've always been extremely hostile to anything resembling stability, and extremely unreceptive of anyone calling out how unproductive this is.
> extremely hostile to anything resembling stability

Remix has one of the best stars/issue ratios I've ever seen in a large project. They have 27k stars for 228 issues (118 stars/issue). Meanwhile next.js has 121k stars for 2678 issues (45 stars/issue).

Remix also has a robust future flag system to ensure nothing breaks during transitions. https://github.com/remix-run/remix/issues/4598

For larger changes (like the controversial flat routes), they even maintain the old feature so you don't have to upgrade. https://www.npmjs.com/package/@remix-run/v1-route-convention

I don't think the evidence supports your assertion.

I want to preface this by saying I don't have a dog in this fight. Not a big react fan in general although I write it for work, and have no opinions on specific routers or 3rd-party state libraries being better or worse than others.

With that out of the way, where is the research showing that this is a good indicator of software reliability? Highly starred projects are left unfinished and abandoned all the time. The thread above goes into details about upgrade challenges. So it seems stars are maybe not such a good indicator of reliability. What about using a star to issue ratio? I've personally seen multiple projects with 10k+ stars that hide their bug reports in the discussions tab. Terraform has a much worse ratio, but would you describe it as much less reliable?

Show me the research.

I agree that stars alone don't equate to reliability, which is why I used (the very much imperfect, but better) stars/issue as part of the evidence.

While I'm unaware of research supporting stars/issue, it's a useful rule-of-thumb at the extremes. With React (318), if something isn't working, your code is almost certainly wrong. With Bun (24), if something isn't working, it's likely Bun (sorry, Jarred).

The assertion the Remix creators are "extremely hostile to anything resembling stability" should place Remix at the lowest extreme, but that isn't so.

If you use a metric or rule-of-thumb for evaluating reliability, I'm curious to hear it.

Gotcha so that is sort of a precursor to a deeper inquiry it sounds like. I'm concerned it sounds like there may be a strong bias in favor of popularity. Maybe that is less of an issue for developers already shopping within a specific stack/philosophy though.

I tend to try and ignore stars, because I've been burned by popular and unpopular projects alike. They also seem to be gamed at times. For an initial evaluation of something I might actually use I look at who the owners are, when the project was last updated, and explore the issue tracker (including closed tickets). That is usually enough to identify projects with major problems. If they pass the initial audit, then the process continues.

I haven’t used Remix, but I regret choosing react-router due to frequent major version upgrades.
Those breaking changes were especially painful in React Native apps. Thankfully there are some good alternatives now.
Would you mind sharing what are they?
Take one more sir.
...and completely changing how everything works on each major version change.
If you are happy with one version you can just stick to it?

You don't have to update your phone and laptop every year, even if you are made to feel so.

You do have to upgrade. At some point incompatibilities between libraries arise, and if neglected for too long at some point it becomes impossible to update everything. Keeping dependencies up to date is an important part of software maintenance.
In our case we wanted to upgrade another dependency (react-admin) which necessitated a react-router upgrade, which we used throughout the rest of our application, so it was a reasonable amount of work and sticking to the old one was not an option.
I wish this were true. In the modern JavaScript ecosystem you either pin everything or pin nothing.
I don't think issues are a good measurement for popular repos. Majority of them are just basic skill issues and inability to read 2 pages of docs.

Especially next community seems to be full of people who don't seem to know anything about web development complaining because they don't know how cookies work or something...

This is a weird metric.
Stars don't mean usage.

Remix has 21,375 downloads per week according to npm. Next has 6,562,587.

The remix package is no longer used[1]. Remix's central package is @remix-run/router[2], which has 5,627,846 downloads per week.

[1] https://github.com/remix-run/remix/pull/9433 [2] https://www.npmjs.com/package/@remix-run/router

Using “star / issue ratio” is a basis for your point is just an indicator that you’re too deep into the JS ecosystem. It reads into weird GitHub metrics to a unique degree.
Hey I star projects just as a way of bookmarking them..
I can already imagine these comments will be screenshot and mocked at by the React Router/Remix author in Twitter :)
You’ve hit the nail on the head. The JS ecosystem has this problem generally, but Remix is particularly bad with it. It’s like people don’t spend the time experiencing the problems they’re seeking to fix before parachuting in and “fixing” them with their framework or library or whatever. You can’t expect people to build good, reliable software with your framework without knowing how to actually build good, reliable software yourself.
Isn't Remix owned by Shopify? I'm fairly certain Remix is used on some of the Shopify platform / admin pages, that's a fairly large and well-used real world website being maintained in Remix
Ryan did mention this in his talk at React Conf.

Shopify has had issues adopting Remix because their existing front-end codebases are massive and they couldn't afford to rewrite them to use Remix.

That's actually the whole motivation behind turning Remix into a bundler plugin. With a bundler plugin, you can incrementally migrate parts of your existing application to use the features of Remix without having to rewrite all of it.

They also have been weirdly money focused. Such as moving the react router package to an org called react training. The quintessential routing library of react being sold like that left a bad taste in my mouth. Combined with reacts incredibly poor api, it turned me off react forever. Svelte and vue are both much better.
I don't know if you're aware but the authors of both libraries (react router, remix) are the same two core developers.

I do find their open source libraries a good juxtaposition of engineering philosophy for the tanstack ecosystem.

Tanstack seems to favor making things modular over time so it's easier to create bindings in other libraries while also increasing the enhancements whereas it feels like Ryan Florence and Michael Jackson prefer to get features out faster even if it means throwing away previous code.

I feel like I'd still be using tanstack/router, tanstack/table, and tanstack/query in 2030 compared to even react itself.

Yes, I'm well aware. To be honest I was pleasantly surprised with Remix because of my negative experiences with React Router. But now it seems like they've gone back to churn and cheery messages claiming that this is the best iteration, just please ignore the last 4 attempts.
I feel the exact same way.
I too was put off Remix because of react-router, it actually looks pretty good but I was holding off to see if they rewrote the entire thing in The future, and they did!

One of my biggest problems with router was not only the constant api changes but the docs being unsearchable because you are never sure which version people are talking about, making all discourse about it a waste of time.

We await the outcome of the react framework wars, I still think react is wrong requiring frameworks to supplement its framework.

Remix is just react router with a build system. They replaced the build part with Vite. So the core contribution to the community here is just react router.

If you watch the react conf video by Ryan it explains it all well.

> I never understood the appeal of React Router, the simplest library to get rewritten 5+ times, each time forcing their users to learn a new way of doing routing.

Yeah I hate to be negative, but honestly I was a lot less excited about Remix once I found out was react-router team. While serving a useful need and I appreciate their work, using react-router in a large production app (MPA) was series of frustrating updates and rewrites once we needed to update (we did not have luxury of just leaving old code as is). The iterative churn and rethinking of design scared us off from Remix for the time being.

This is all about download counts and who's more popular. That's it.
Glad I am not alone in thinking react router has always been a disaster. Jumped ship ages ago to Vue - this was partly the reason - and I find vue router to be pretty great.
And the router aren't even that good, loads of functions have no useful docs.

You just hope someone has asked it on SO.