Hacker News new | past | comments | ask | show | jobs | submit | ng12's comments login

> Whatever framework you choose will be obsolete in 5 years.

I've been writing React professionally for over a decade at this point. I don't know what this guy's on about.


How many dependencies does your package.json file declare? Which versions of node/npm does your team use?

If you're on recent-enough versions and are using any popular libraries, you will have seen the deprecation notices pile up during npm install for downstream dependencies.


Dependencies issue is not exclusive to frameworks. If you don't want to reinvent the wheel, there's no way around using packages, even if you go with vanilla JS.


None? I use it from ClojureScript. I've been maintaining a React-based app with Semantic UI for 10 years now.


Then you aren't doing what the author is talking about.


The new insight then is if you do things then bad things will happen?


Do you mean your package.json literally has no dependencies declared (or you don't even have package.json)? If so, you're not using frontend tooling like 98% of development teams.


I don't have a package.json. I don't use npm. But I do use React. Yes, I am not like [insert scientifically determined very very high percentage] of teams out there — but that's exactly my point. There are ways to do frontend development without the treadmill.

Thing is, we are the reason for the treadmill being there: we love the new shiny, we call software that is stable "dead", we actively mock software that doesn't have a lot of churn as "not being developed". So I guess we deserve what we get.


Java and .net developers also uses dependencies, and they too need to upgrade their dependencies (and sometimes switch out deprecated stuff). Definitely not a Frontend issue.


I've been writing React professionally for over a decade and React from 5 years ago is obsolete. Like, literally won't build with current tools. To their credit, I think the React code itself has maintained reverse compatibility pretty well (it's not React's fault), but the build systems I was using 5 years ago have all changed and broken reverse compatibility. EDIT: Forgot about component lifecycle methods...

Even a well-maintained project like React can't escape the squalor of its ecosystem.

I don't always have this option, but usually these days I choose vanilla JS, imported with no build system, do as much as I can with Python/Django on the backend, and opt out of the JavaScript ecosystem entirely. I haven't regretted it.


Some of the problem with React and npm is that they are a victim of their own success.

React lets you suck in 80 components from 15 different vendors and it works. NPM lets you suck in more dependencies than many other systems because it deals with diamond dependencies better than other systems [1]

Because you can mix and match so many widget sets no wonder you will have trouble when those widget sets change.

[1] package A can import version B of package C, package D can import version E of package C -- so long as A and D don't exchange objects from package C there is never a problem, even if they do it might work.


The problem is more cultural than technical. JavaScript folks see the ready availability of dependencies as a feature rather than a risk, including the creation of a plethora of micro-dependencies (such as the left pad fiasco).

React itself is an exception which is well-developed because a competent developer team (Facebook's) depends on it. The vast majority of JS libraries are absolute garbage from idea to implementation to maintenance. Nobody should be depending on these libraries, and yet the vast majority of JS projects do depend on these libraries.

You can certainly run into similar problems in, for example, Python, if you decide to import all of pip with impunity, and there are certainly Python projects with this problem that I've worked on. But Python at least has a core group of commonly used libraries that keep sane dependency trees. You literally can't build modern JavaScript without using some bleeding edge nonsense that won't work in a few years.

Thankfully, as I've said before, you don't have to use the mainstream toolchains. Browsers and standards organizations have been much better about at least not breaking reverse compatibility.


> To their credit, I think the React code itself has maintained reverse compatibility pretty well (it's not React's fault), but the build systems I was using 5 years ago have all changed and broken reverse compatibility.

That's a problem with your build system then, not React. There is (or was) indeed a lot of churn in build systems, but you wouldn't have been spared unless you had chosen to not use a build system - which is still possible with React, but not with Svelte, Vue or Angular.

My current position on build systems is that if it doesn't work out of the box with esbuild, I'm not using it. If it does work out of the box with esbuild, then it's likely also going to work with whatever comes after.


I just had a thought and decided to look it up.

This side conversation started as an objection to the comment, "Whatever framework you choose will be obsolete in 5 years."

The first release of esbuild was November 2020, i.e. it didn't exist 5 years ago. And that release fixed... conditional statements in TypeScript--a pretty basic feature to be broken. Does that sound like something you want to use in production?

So maybe your strategy of only using things that work with esbuild doesn't address the problem as much as you think it does.


You are extrapolating from the past into the future, but a lot has consolidated in the last five years. You used to need babel to use crucial language features that are now supported across the board, at the same time the avalanche of new language features has subsided.

Conditional types (not statements) are not a basic feature.


> You are extrapolating from the past into the future, but a lot has consolidated in the last five years.

I've been writing JavaScript that entire time, and the complete disregard for maintenance has gotten worse, not better.

You seem to be under the impression that because I also write other languages, I haven't been keeping track of what's happening in the JS ecosystem, but you're wrong--I still write JS, because I often don't have any other option.

The fact that I work in other languages means I get to see what I like about better-managed ecosystems. If you're writing JS on both frontend and backend and not using anything else, it's likely that you don't know how bad things are for you because the JS churn has been normalized for you.


> That's a problem with your build system then, not React.

Did you read the sentence that you're "correcting"?

> My current position on build systems is that if it doesn't work out of the box with esbuild, I'm not using it. If it does work out of the box with esbuild, then it's likely also going to work with whatever comes after.

Your optimism is admirable.


If it's a 5 year old project, you probably shouldn't be building it with the current versions of tools. You need to pin your dependencies and use the same versions of the tools as before. It'd be the same thing with libraries if you didn't have a lockfile. Your development tools need one too.


> If it's a 5 year old project, you probably shouldn't be building it with the current versions of tools.

Bold of you to assume I have worked in React for this long and somehow didn't know about this brittle solution to a problem which shouldn't have existed in the first place.

How does your solution handle packages that no longer exist? Let me guess, we back up the packages? Okay, so these packages don't run on new versions of relevant binaries--do we back up the binaries as well? How bad does it have to get before you admit it's a tire fire?


wait, what package does no longer exist? is it something that has been unpublished from NPM?


https://en.wikipedia.org/wiki/Npm_left-pad_incident

People arguing with me here don't seem to remember this breaking like 1/2 the JS builds in existence for a few days.


Component lifecycle methods to hooks and HOCs, does that ring a bell?


Yeah, and I'm not anywhere near as distressed about it as this article implies I should be.


As a BE engineer when that happened, I had just started to become proficient in it, coming from Angular. I threw in the towel and went back to my backend world of peace and happiness. So he's not alone, these deprecations are insane.


Front-end dev here.

I hear from the b/e people about containers, serverless, lambdas, ORMs, queues, schedulers, caches, pipelines (ok, I use these too), databases, API gateways. Oh, but it's podman now, not Docker. And they're moving everything off AWS to Azure. And there's three versions of the API my f/e needs to talk to still in production. And every micro-service depends on a different version of Node. Apart from the one that's in Ruby and the stuff from that department who only use .NET.

I don't believe this promised land of clarity, comfort and purity exists. It's just mess on both sides of the internet connection trying to solve different parts of the problem of turning user needs into money.


More often you inherit a stack and rarely you move away from it. And even if you jump on the latest infrastructure trends, there will probably be enough enterprise customers that they will support it for a while.


The beauty of this is that these technologies all tend to be optional, backwards compatible, and interchangeable. You make your choices when architecting depending on what you want to solve. You can build Hussain Bolt or Frankenstein. On the FE, just the landing page is a mission.


Most likely because you work on apps in active development. Wait till someone asks you to add some feature in app that was deployed a few years ago and need something new.

Maybe fixing security issues by updating the dependencies? How likely will that happen without you having to rewrite the code of the app?


The transition to hooks was worth it.


I'm not convinced.

- they're much harder to learn and understand than the callback hooks from class components

- The built in ones hide all the ways React is managing state for you behind obscure names that don't reflect how or when to use any of them

- The new-ish `use` built-in doesn't follow the same usage rules as the rest of them (you can use it in places you can't use the others)

- the stateful ones create side effects (unless you pretend that state is an argument), so they don't even follow an easy-to-grasp version of the functional paradigm

- they have strange quirks (like you basically have to write your component function to use its hooks before you render anything... so you can't early return)

- the mental model for how to put them together when you're writing custom ones is a little bit funky too.

- the early "advert" for them was that we could put all our domain knowledge together in one place, rather than spread about over multiple callbacks. Given that we usually need to interact with a couple of domains at a time, in time with component lifecycles, I think this makes the code harder to work with rather than easier


Class components and HOCs aren’t deprecated though.


They're very much not "best practices", and will be deprecated soon (if they're not already).


You still can't add features like error boundaries in React without class-based components somewhere in your app. Even if they added these features to functional components today, it would be years before they'd consider them safe to remove.

HOC still exist and builtin features like `React.memo(MyComponent)` along with the like of more functional styles means they aren't ever going away.


But they're not deprecated. Where's the forced churn?

Every place that I've been at has made the gradual shift to migrate stuff away from class components as new stuff gets built or refactored. Seems like a pretty common development habit.


I'm not aware of any indication that class components will be deprecated.


That's not true (the deprecation part, anyway) and I know of at least one React team member who has spoken publicly to that fact.


Mea culpa: they’re not being deprecated. But the existence of custom hooks removes the bulk of (if not all of) their utility, and make it much easier to reason about code and make your code well-typed.


I have no idea why you are getting downvoted for this comment when there is literally a massive warning on the docs page for class components.

https://react.dev/reference/react/Component


How's your Create React App support in 2025? Are you still keeping your app on React 15?


It takes ten minutes to switch from CRA to Vite.


I think that's only if you've rehearsed it several times. Although now that I think about it, you will probably have to do it multiple times, so once you get good at it, that may be a reasonable estimate.


it was 10 minutes for me, too. No rehearsing. I don't know what you are going on about


Not my personal experience, but a team adjacent to me. Congrats on your smooth migration.


My current firm is still on 16 and just trying to make it to 18 because of the deprecations.

All of the WYSIWYG editors that work on 16 are no longer supported. it's a "cross your fingers" in case someone found a security issue (or don't use them)

React 16 is still supported, but it's definitely obsolete.


Idiomatic Reacts historical changes pretty often. In large codebases major version upgrades can take teams multiple quarters to complete.


Same I’ve been writing React for 11 years now.

Before that I used Backbone on top of jQuery.

Before that I used jQuery.

Before that I used the document, but I still use the document.

I have barely had to learn anything each decade.


I have too and the react of today is vastly different from the react of 5 years ago. Which itself was vastly different from the original react.

It’s different paradigm, best practice, file organization, etc.

So it’s close to learning a new language.

And I won’t even go into the fact that Next is replacing React as the standard.


Didn't React deprecate itself entirely circa 2018?


They just keep stirring his slop and he keeps eating it, that's all I'm reading here


"That was some good slop, sir. Can I come back here for lunch every day for the next 10 years?"

Hilarious, and accurate.


I don't know but anecdotally living in a major city every social event I attend has a Partiful attached.


Huh? Lots of people are currently in jail for things they did on January 6th.


Lots of low-level foot soldiers. Not the capo.


Only for another few months


Honestly while Trump is a little slimy he's also kinda funny. Visit some conservative spaces sometimes, they're having fun while liberal ones are all doom-and-gloom.

It really does matter.


Go to any middle school in America and find who the popular kids are - its the hot, mean but funny ones, not the ones with smart ideas for change


That’s humanity in a nutshell.

We do our best stuff when the hot mean ones listen to the ones with smart ideas.


There is a zero percent chance that the next 4 years will be our best.


Did you just say you find Trump hot? Ewww


Of course not physically but hes a billionaire, married to a Russian model. He is glamorous, which is enough for a man.


Unironically probably. The only place I've ever worked that used LoC as a performance indicator was a hedge fund.


I mean... how do you describe what Coke tastes like? Most soda is kind of mysterious.


Cola nut and sugar.


There's also a prominent cinnamon baking spice


Safety, for one. Technology helps prevent spills.


I don't buy that Microsoft's involvement does much to prevent spills. Exxon, for example, cares about spills mostly as a function of 1) regulation, 2)reputation risk and 3) employees who do care about things being done cleanly. I guess Microsoft's software could maybe enable the employees a bit more, but fundamentally the reasons they are safe have to do with incentives, not technology.


> and it was often considered a black mark if you went to work for a defense company (even Palantir)

Yeah, this always tickled me. Obviously smart people should just go work somewhere innocuous like Meta or ByteDance.

Also FWIW this is Palantir and Anduril's bread and butter. They get to vacuum up all the wrongthinkers.


"I'll make products that cause civil unrest, poison the political systems of entire countries, and give young girls mental issues, but I'll be damned if I work for that nasty military-industrial complex; I'm too moral for that!"


What? This isn't a syntax generator it's building full components.


They’re making a joke.

Said another way (my interpretation):

Imagine that you need an AI to write the bespoke tailwind syntax for you instead of having it write normal css.


Usually the new firm picks up the tab for the lost bonus.


Isnt the whole issue that the non-compete prevents a new firm from entering the picture? I did have a friend who got hired by a new firm, which then waited out her garden leave for 18mo...but I wonder how many firms would do that in, say, technology


The new firm makes you whole after the non-compete period ends.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: