3 ms·
it depends on how well engineered the application is, like anything. I've been working on react-native recently, and this is by far the most difficult "framewo
by Klathmon 8y ago
it depends on how well engineered the application is, like anything.
I've been working on react-native recently, and this is by far the most difficult "framework" (or system, or library, or whatever else you want to call it) i've ever had to work with regarding dependencies.
Every. single. change. breaks. And it seems to have deep dependencies on exact versions of many other tools, and changing them causes all kinds of hell. It's awful, and it's what I see as "dependency hell". We are like 5 patch versions behind latest right now, but every other patch version between ours and current either won't build on one platform, won't start due to mismatched dependencies, requires an alpha version of react proper, or breaks all of our tests.
But before that i've worked on at least a dozen mid-sized+ node and browser based projects, and i've never had major issues with upgrades. For the most part they work if you stay within patch or minor versions, and even major upgrades only really hurt if you are impacted by the breakage, which in my experience is pretty rare (just looking at one monorepo-style project that has about 150 direct dependencies, i would probably spend about 2 hours a month on keeping them up to date, and just for fun, i went back to a commit from 3 years ago just now, and it still installs and runs fine.
If you stick to documented features, don't try to abuse or be clever with interfaces that aren't well defined, wrap any "iffy" libraries in your own interfaces to make switching or re-implementing them easier, and overall vet your deps a bit before installing them, it's pretty smooth sailing.