Hacker News new | ask | show | jobs
by madeofpalk 764 days ago
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.
5 comments

> 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?
Wouter is great, I recommend.
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.